Invalid example barcodes in public documentation (2026)

Between 20 October 2026 and 27 October 2026, we found 361 documentation sites in 25 languages whose example barcode fails its own check digit. The cause is nearly always the same: the writer typed a counting sequence and never calculated the last digit. A developer who copies the example fails the first test against a real validator. A merchant who copies it into a feed gets an invalid GTIN issue in Merchant Center and no catalog match on a marketplace.

Data as of · Barcodes.GG (Reactive Systems SL)

361
documentation sites show an example code that fails the GS1 check digit
78%
of them kept counting into the last digit, as in …7890 or …0123
39
sites show 1234567890123, the most copied invalid code
7 of 323
notified sites corrected the page within a week

What we found

The most copied code is a count. 1234567890123 is on 39 sites. It is what a person types when a form asks for 13 digits: count from 1 to 9, wrap to 0, keep going. But the last digit of a GTIN is not free. It is a check digit, calculated from the other twelve. Add the digits in odd positions (26), add three times the digits in even positions (3 × 22 = 66), and take the distance from the total, 92, to the next multiple of ten. That gives 8, so the valid form is 1234567890128. On 283 of 361 sites (78%), at least one example ends in such a count: the writer kept counting where the check digit belongs. A last digit chosen without the calculation is right only one time in ten, so an invented example almost always fails.

Each country copies its own prefix. Outside English, writers start from the GS1 prefix they see on local products and then count. 24 of 25 sites with 789 are in Portuguese, 21 of 29 sites with 590 are in Polish, 8 of 9 sites with 841 are in Spanish and 8 of 10 sites with 871 are in Dutch. That is how 7891234567890, 5901234567890 and 8412345678901 appear: plausible local codes with the same counted last digit. The largest prefix row, 123, is no choice of country. 30 of 45 sites with it are in English, and the three digits are the start of the count. A validator that maps prefixes will still report them as US numbers, because GS1 assigns 100 to 139 to the United States.

Templates spread the error further than prose. This sample cannot say which kind of document is wrong more often, because we searched some kinds harder than others. It does show how the errors differ. Typed sequences are common everywhere: 78 to 87% of the sites in each document type use one. The difference is reuse. 54% of the feed and import sites show one of the ten most copied codes, against 34% of the ERP and POS help centre sites, and 46% of the feed and import sites show two or more invalid codes, against 30% of the tutorials. A wrong code in a tutorial misleads a reader. A wrong code in an import template goes into the file the reader uploads, once per row.

The code fails at the first check it meets. A scanner decodes the bars and recalculates the check digit before it reports a number, so a symbol printed with 1234567890123 does not scan. Most barcode generators refuse the number or silently print 1234567890128 instead, and then the label no longer matches the record in the database. In a product feed the number fails sooner. Google Merchant Center requires a correct check digit and reports an invalid GTIN issue on the item. Amazon checks UPCs against GS1 data, and eBay does not match a UPC with a failed check digit to a catalog product.

Few sites fixed the page, and the route explains most of it. We wrote to 323 of 361 sites. After a week, 7 had corrected the page and we saw the fix. 6 more wrote that they had corrected it, and 8 agreed or passed the report to the team that owns the page. 50% of the answers (30 of 60) came only from a ticket system or an AI assistant: the message reached a support queue, while the page belongs to a documentation or product team. 4 sites declined. Their argument was that the code is a placeholder, in some cases broken on purpose so that nobody uses it on a product. That aim is fair, but the reader cannot see it. The code looks real, and the first validator the reader meets rejects it without a word about intent.

The ten most copied codes

The ten codes below are on 148 of 361 sites. After the first, each one is a country prefix or a leading zero followed by a count. The corrected code keeps the first digits and replaces only the check digit.

Table chart: the ten most copied invalid example codes, the digit on the page and the correct check digit, with the number of sites for each. 1234567890123 is on 39 sites.
The ten most copied invalid codes. Source: Barcodes.GG, data as of 27 October 2026. Download the PNG (1440 × 1256).
The same ten codes as a table
RankInvalid code on the pageCorrected codeSites
11234567890123123456789012839
201234567890101234567890524
37891234567890789123456789521
45901234567890590123456789319
5501234567890150123456789009
6841234567890184123456789059
7570123456789057012345678998
8750123456789075012345678937
9800123456789080012345678977
10871234567890187123456789067

A corrected code is well formed, but it is still an example. It can belong to a real product of another company, so do not print it on a product.

Country prefixes

The first three digits of a GTIN-13 are the GS1 prefix: they show which GS1 member organisation issued the number, not where the product was made. This table uses the 13- and 14-digit codes only, and a GTIN-14 loses its first digit (the indicator) before we read the prefix. The last column shows the main page language of the sites in the row, which is where the country pattern shows.

PrefixGS1 allocationSitesMain language (sites)
123Typed sequence (GS1: United States)45English (30)
590Poland29Polish (21)
789Brazil25Portuguese (24)
978Books (ISBN)15English (9)
501United Kingdom11English (9)
871Netherlands10Dutch (8)
841Spain9Spanish (8)
234Typed sequence (GS1: Restricted circulation)8English (7)
570Denmark8English (5)
800Italy8Italian (6)
001United States and Canada7English (7)
400Germany7German (5)
401Germany7German (3)
750Mexico7Spanish (6)
560Portugal6English (3)

The table shows the 15 largest of 37 prefixes with 3 or more sites. A site that shows codes with two prefixes counts in both rows. "Mixed" means that no language has 3 or more sites in the row. The full list, with the number of distinct codes per prefix, is in by_prefix.csv.

Bar chart: sites with an invalid 13- or 14-digit example by GS1 prefix. 45 sites use 123, the start of a typed sequence; 29 use 590 (Poland) and 25 use 789 (Brazil).
Sites by GS1 prefix. Source: Barcodes.GG, data as of 27 October 2026. Download the PNG (1440 × 1324).

Document types

We sorted each site into one document type with a keyword rule on the page URL and the reviewer notes. The site counts follow where we searched, so compare the shares: the sites of the type that typed a sequence, that show one of the ten most copied codes, and that show two or more invalid codes.

Document typeSitesTypedTop tenTwo or more
Tutorial or blog10578%42%30%
ERP or POS help centre9478%34%37%
API reference or developer docs6481%42%33%
Feed spec or import template6187%54%46%
Other3778%32%30%
Bar chart: the share of sites in each document type that show one of the ten most copied invalid codes. Feed spec or import template: 54%; ERP or POS help centre: 34%.
Share of sites with one of the ten most copied codes, by document type. Source: Barcodes.GG, data as of 27 October 2026. Download the PNG (1440 × 890).

Languages

A site counts in the language of most of its reviewed pages. The language mix follows the languages that the searches covered, so it does not rank countries by error rate. Languages with fewer than 3 sites share one row.

LanguageSites
English160
Spanish33
Portuguese31
German28
Polish26
Dutch17
French12
Italian9
Danish5
Vietnamese5
Romanian4
Swedish3
Other languages (fewer than 3 sites each)20
Language not recorded8
Bar chart: documentation sites with an invalid example barcode by page language. English 160, then Spanish, Portuguese, German and Polish.
Sites by language. Source: Barcodes.GG, data as of 27 October 2026. Download the PNG (1440 × 1448).

Code lengths

Most wrong examples are 13-digit EAN codes (305 sites), then 12-digit UPC-A codes (52) and GTIN-14 codes (44). A site can show codes of several lengths, so the rows add up to more than 361.

DigitsFormatDistinct codesSites
8GTIN-8 (EAN-8)67
12GTIN-12 (UPC-A)5652
13GTIN-13 (EAN-13)243305
14GTIN-144944

What the sites did after our message

Each notified site counts once, in its strongest answer. A fix that we saw on the page outranks what the site wrote. We matched a reply to a site by the sender domain, so a reply from another address counts as no reply.

Answer within a weekSites
Corrected the page and we saw the fix7
Wrote that they corrected the page (fix not yet checked)6
Agreed or passed it to the team that owns the page8
Asked for a link in return or replied about something else5
Declined: the example is a placeholder or not relevant to them4
Automatic reply only (ticket system or AI assistant)30
No reply263

What a documentation owner should do

  1. Search for every copy, not only the page in the report. The same example sits in the API reference, the sample CSV, the import template and the screenshots. 35% of the sites show two or more invalid codes, so a fix on one page usually leaves another copy behind.
  2. Recalculate, do not read. A wrong check digit looks exactly like a right one. Paste the codes into the barcode validation tool or check one at a time with the check digit calculator.
  3. Replace the code with a valid example that is clearly an example. GS1 uses 9506000134352 in its own documents. Its prefix, 950, belongs to GS1 Global Office, so it does not point at a member company. If you keep a country prefix for local readers, calculate the last digit.
  4. If the code is invalid on purpose, say so next to it. A deliberately broken code protects nobody when the reader cannot tell. One sentence, such as "this code fails the check digit on purpose", tells the reader why a validator rejects it.
  5. Make your own API or import reject the code with a clear message. When a copied example fails at the first request with "check digit should be 8", the reader fixes it in a minute. When it fails three systems later in a feed, the reader loses a day.

For the method behind the check, read how to validate a barcode and how to calculate a check digit. For the feed rules, see the Merchant Center GTIN guide and the GTIN requirements by marketplace.

Why this matters more by 2027

GS1 US describes Sunrise 2027 as the point by which retail scanners should read 2D barcodes, such as a QR code with GS1 Digital Link or a GS1 DataMatrix, and extract the GTIN at the point of sale (GS1 US, "What is GS1 Sunrise 2027?", gs1us.org). A 2D code carries the same GTIN as the linear barcode, and a GS1 Digital Link puts it in a URL as plain text. Developers who move product data to 2D codes will copy examples again, and an example with a counted last digit will fail in the new code exactly as it fails in the old one.

Limits

  • Targeted sample. The sites come from searches for pages that show an example barcode, not from a random crawl of the web. The study shows which errors repeat and where. It does not give the share of all documentation that is wrong.
  • Reviewer notes. A site counts only when the reviewer notes name the invalid code and its correction. A page with an error that the notes do not spell out does not count, so the true number is higher.
  • No second fetch. We did not fetch the pages again for the tables. A page can have changed since its review, and the fix count covers only fixes that we saw.

Method in short

Reviewers fetched each page, copied the example code and recalculated its GS1 modulo-10 check digit. A script reads their notes and counts a site once when the notes name an invalid code and its correct digit or corrected code. Table rows with fewer than 3 sites go into an "Other" row, so no row points at one site. The methodology page gives the full rules, the classifications and the corrections log.

Downloads

Each file holds aggregate counts only. Free for editorial use with a link to Barcodes.GG.

How to cite

Barcodes.GG (Reactive Systems SL). Invalid example barcodes in public documentation (2026). Data as of 27 October 2026. https://barcodes.gg/research/invalid-barcode-examples-2026

Free for editorial use with a link to Barcodes.GG. Please link this page, not a tool page, so readers can find the method and the files.

Cited by

No article has cited this study yet. If you use a figure, write to mail@barcodes.gg and we will list your article here.

Free for editorial use with a link to Barcodes.GG.

Frequently asked questions

Does this study show how much documentation is wrong?

No. The sample comes from targeted searches for pages with example barcodes. It shows which errors repeat and where, not the share of all documentation with an error.

Can I use the corrected codes on my products?

No. A corrected code only has a correct check digit. It can belong to another company. Product GTINs come from your own GS1 company prefix.

Does a valid check digit prove that a product is real?

No. A valid check digit only shows that the number is well formed. Anyone can print a valid number, so it does not prove that a GTIN is assigned or that a product is authentic.

Which sites are in the sample?

We do not publish the names or the URLs. We wrote to the sites about the error, and the tables show only counts.

Guides