RunTheTests
/

UPC-A Barcode Generator

Generate a UPC-A barcode with the check digit calculated — or verified against yours.

Result

PASS

Code 128 ready to print

Each module prints at 0.319 mm, comfortably inside what a scanner reads. The bars are drawn as vector shapes, so they print at your printer's own resolution rather than being resampled from a bitmap — which is what keeps the module widths exact. Leave the white space either side of the bars clear: a border or a price sticker touching the quiet zone is the most common reason a correctly generated barcode will not scan.

Diagnostic telemetry
Encodes
0036000291452
Symbology
UPC-A (EAN-13 with a leading zero)
Check digitCalculated, and verified if you supplied one
2
Width in modulesIncluding a 11-module quiet zone each side
117
Printed module widthBelow 0.19 mm, scanners and ordinary printers start to fail
0.319 mm

What this cannot tell you

  • Calculates and verifies the check digit. It cannot tell you whether the number is registered to you — UPC prefixes are allocated by GS1, and a barcode you invent will scan as somebody else's product or as nothing.
  • Bars are drawn as SVG so they reach paper at exact widths. A barcode resampled through a bitmap is the usual reason a printed code stops scanning.
  • Below about 0.19 mm per module most laser printers cannot hold the bar edge, and scanners start failing regardless of the artwork.
  • Everything is rendered in your browser. Nothing is uploaded and no design is stored.

Take this with you

How this test page works

UPC-A is EAN-13 with a leading zero, so the bars are identical and only the printed digits differ — which is why this encodes it through the same symbol rather than implementing it twice. What genuinely differs is the check digit arithmetic. UPC-A weights the odd positions by three where EAN-13 weights the even ones, because that leading zero shifts every position by one. Copying the EAN weighting onto twelve digits produces a wrong check digit for eight numbers in ten, and the resulting barcode scans perfectly while reporting a product that does not exist. Enter eleven digits and the check digit is calculated; enter twelve and yours is verified.

What the results mean

Check digit
Calculated from the first eleven digits, odd positions weighted by three.
UPC-A and EAN-13
The same symbol. A UPC-A is an EAN-13 beginning with zero, which is why the bars are identical.
Narrowest bar
One module. Below about 0.19 mm printers cannot hold the edge and scanners fail.
Registered to you
Not checkable here. GS1 allocates prefixes; an invented number is someone else's product or nothing.

Common problems and fixes

My check digit does not match the one on the packaging
You may be applying the EAN-13 weighting. UPC-A weights odd positions by three, and the two disagree for most numbers.
The printed barcode will not scan
Check the narrowest bar width. Printing smaller than about 0.19 mm per module puts it below what a laser printer holds and a scanner reads.
Can I make up a UPC for my product?
Not for retail. Prefixes are allocated by GS1, and an invented number collides with a real product or scans as nothing.

Frequently asked questions

What is the difference between UPC-A and EAN-13?

None in the bars. UPC-A is an EAN-13 whose first digit is zero, so the symbols are identical and only the printed digits under them differ. The check digit weighting differs because the leading zero shifts every position.

Why does my check digit differ from an EAN calculator?

Because the weighting is offset by one. UPC-A multiplies the odd positions by three; EAN-13 multiplies the even ones. Using the wrong one gives a barcode that scans as a different product.

How small can I print it?

Governed by module width rather than overall size. Keep the narrowest bar above about 0.19 mm — below that, printer resolution rather than design is the limit.

More in Label