Methodology & Accuracy

Every barcode this site produces passes through two distinct pieces of software with two distinct jobs, and this page draws the line between them precisely — because knowing who is responsible for what is what makes an error findable.

The renderer versus the verification layer

Bar rendering — turning a validated payload into the black-and-white module pattern of Code 128, EAN-13, UPC-A, Code 39, or ITF-14 — is done by JsBarcode, an MIT-licensed open-source library, pinned to an exact version and used unmodified (the version and license are recorded in the repository's provenance note, and an automated test fails if the pin ever drifts).

Everything around the rendering is ours, implemented independently from published algorithm descriptions, without reference to the renderer's internals:

  • The GTIN mod-10 check digit (weights 3 and 1, anchored at the rightmost data digit) used by EAN-13, UPC-A, and ITF-14 — in compute mode (12/11/13 digits entered) and verify mode (13/12/14 digits entered), with mismatches reported, never repaired.
  • The ISBN-10 mod-11 check character (weights 10 through 2, X for ten), and the ISBN-10 → ISBN-13 conversion: verify the mod-11 check, prefix 978, recompute the EAN-13 check. The reverse direction exists for 978 ISBNs and is explicitly refused for 979.
  • The Code 39 charset (43 characters), with disclosed uppercase conversion.
  • Code 128 code-set analysis — which characters force set A or B, when set C compression applies — as validation and advice; the actual code-set optimization inside the symbol is the renderer's, following the same rules.

The runtime cross-check

After the renderer encodes a check-digit symbology, the site re-derives the check digit of the encoded payload with our independent algorithm and compares. Agreement is a precondition for showing you anything: if the cross-check ever failed, the barcode would be withheld and an error shown instead. This is the linchpin of the design — you never see a barcode whose check digit our own tested arithmetic has not confirmed, regardless of what the renderer did.

Tested against cited, published values

Every algorithm is exercised against reference values from sources named in the test files: Wikipedia's EAN-13 walkthrough (400638133393 → check digit 1) and UPC-A walkthrough (03600029145 → 2), the widely published sample EAN-13 5901234123457, the canonical ISBN example 0-306-40615-2 and its ISBN-13 form 978-0-306-40615-7, the X-check example 0-8044-2957-X, and GS1's own published example GTIN 09506000134352 from the GS1 Digital Link documentation. Beyond vectors, property tests confirm the structure — every computed check digit re-verifies, single-digit corruptions are caught, leading zeros do not change GTIN checks. Suspected errors reported through the contact page are fixed in the verification layer and locked in with a new test.

Worked examples cannot drift

The check digits and conversions quoted in page prose are not typed in — they are computed at build time by the same verification code that runs in your browser. If the algorithms changed, the copy would change with them or the build would fail; the documentation cannot silently disagree with the tool.

Physical guidance: cited or qualitative

Where pages quote physical figures — EAN-13 quiet zones of 11 and 7 module widths, UPC-A's 9, ITF-14's 10, the 0.264–0.660 mm consumer X-dimension range — they come from GS1 member organization size guides (GS1 Sweden, GS1 Ireland) reflecting the GS1 General Specifications, and are linked where used. Where we could not verify a figure against such a source, the guidance stays qualitative — you will not find an invented DPI table on this site.

The honest limits

  • Math, not optics. We verify digits and character sets. Whether a printed symbol scans depends on contrast, size, substrate, and preserved quiet zones — test with your own scanner before production or print use. Every generator page says this because it is true on every page.
  • Symbols, not numbers. Generating an EAN/UPC barcode does not allocate or license the GTIN inside it (that is GS1's role), and rendering an ISBN barcode does not register an ISBN (national ISBN agencies). The retail pages state this prominently.
  • Deliberate omissions. No control characters or FNC4 Latin-1 in Code 128, no mod-43 optional check or full-ASCII extension in Code 39, no EAN-5 price add-on on ISBN barcodes, no bearer bars on ITF-14 downloads — each stated on its page with the reason.
  • Local processing. Inputs never leave your device; there is nothing server-side to verify or log.