When a barcode lookup returns "not found," the cause is usually one of three things. The code may never enter any product database (in-store, restricted and coupon codes). The digits may have changed between the package and the search box (a dropped leading zero, an unexpanded UPC-E, a misread). Or the product may simply be new, regional or private label. The first two you can diagnose from the digits alone, often in seconds. The third you fix by checking the owner, setting an alert, or submitting the product.
Start with the triage table, then jump to the reason that matches.
Quick triage: what the digits tell you
| What you have | Most likely cause | First thing to try |
|---|---|---|
| 12 digits starting with 2 | Random-weight or in-store label | Nothing to fix: it's store-specific |
| 12 digits starting with 4 | Retailer's internal code | Same: ask the retailer |
| 11 digits | Leading zero lost in a spreadsheet | Add a 0 to the front |
| 8 digits from a small U.S. pack, starting with 0 | Probably UPC-E (zero-suppressed) | Expand it to 12-digit UPC-A |
| 10 digits, maybe ending in X | ISBN-10 | Use an ISBN lookup |
| 13 digits starting with 978/979 | ISBN-13 (a book) | Use an ISBN lookup |
| 14 digits | GTIN-14 case code from a carton | Derive the inner unit's code |
| Starts with 5 (12-digit) or 99, 981–983 | Coupon | Not a product |
| Check digit doesn't compute | Misread or typo | Rescan or retype |
The 11 reasons, and the fix for each
1. It's an in-store or restricted code
In the U.S., a UPC starting with 2 belongs to a restricted range. Stores use it for random-weight items such as meat, deli and produce, and for labels printed on the scale. The digits usually encode a store item number and the price, in a layout each retailer chooses. A code starting with 4 is reserved for use inside one company: think loyalty cards and internal items. In EAN countries, the 20–29 range plays the same role.
Every store reuses these numbers, so no global database can resolve them. Google Merchant Center tells merchants not to submit GTINs with the prefixes 02, 04 or 2 (Google's GTIN rules). There's nothing to fix. If you need the product, look for the manufacturer's own UPC on the original packaging.
2. The product is brand new
A brand can license a GTIN and ship product the same month. Databases learn about new codes as sources report them, so a fresh launch can be missing for a while. On BarcodeReport, the not-found page lets you set a notify me when this barcode is added email alert, so you don't have to keep checking.
3. It's a regional or small-brand product
A jam from a farmers' market, a snack sold in one country, a craft brand with no retail distribution: these codes are valid but rarely make it into the data sources lookups depend on. Try the EAN lookup for codes from outside North America. To at least learn who owns the number, search Verified by GS1, which shows the licensee company (up to 30 free single searches a day).
4. The digits were misread or mistyped
The last digit of every UPC and EAN is a check digit, which makes typos detectable. For 036000291452, take the first 11 digits. The odd positions sum to 0 + 6 + 0 + 2 + 1 + 5 = 14, which times 3 is 42. The even positions sum to 3 + 0 + 0 + 9 + 4 = 16. The total is 58, so the check digit is 2.
Now swap two adjacent digits, typing 036000921452. The check digit no longer matches, so you know the code is wrong before you search. The check catches every single-digit error and most adjacent swaps (it misses swaps of two digits that differ by exactly 5, such as 1 and 6). Some scanners are also configured to drop the leading digit or the check digit, so compare what was transmitted against what's printed under the bars.
5. It's a UPC-E that wasn't expanded
Small packages often carry UPC-E, an 8-digit compressed form of a UPC-A that "suppresses" zeros. Many databases, BarcodeReport included, store the 12- and 13-digit forms, so expand before you search. Take the six middle digits (call them d1 to d6). The last one, d6, tells you where the zeros go:
| d6 | Middle 10 digits of the UPC-A |
|---|---|
| 0, 1 or 2 | d1 d2 d6 0 0 0 0 d3 d4 d5 |
| 3 | d1 d2 d3 0 0 0 0 0 d4 d5 |
| 4 | d1 d2 d3 d4 0 0 0 0 0 d5 |
| 5 to 9 | d1 d2 d3 d4 d5 0 0 0 0 d6 |
Keep the first digit (the number system) and the last digit (the check digit, which is the same in both forms). So UPC-E 04252614 expands to UPC-A 042100005264, and 04963406 expands to 049000006346.
function expandUpcE(upce) {
const [ns, a, b, c, d, e, f, check] = upce; // e.g. "04252614"
const middle = {
0: a + b + f + "0000" + c + d + e,
1: a + b + f + "0000" + c + d + e,
2: a + b + f + "0000" + c + d + e,
3: a + b + c + "00000" + d + e,
4: a + b + c + d + "00000" + e,
}[f] ?? a + b + c + d + e + "0000" + f;
return ns + middle + check;
}
expandUpcE("04252614"); // "042100005264"
6. A spreadsheet ate the leading zero
Spreadsheets treat barcodes as numbers. So 036000291452 becomes 36000291452 (11 digits), and a 13-digit EAN like 4006381333931 may display as 4.00638E+12. Search that and you'll get nothing.
To prevent it, format the column as Text before you paste or import. To repair a column of UPCs, pad back to 12 digits with =TEXT(A2,"000000000000"), or to 13 for EANs. If you search a 12-digit UPC and get nothing, also try the 13-digit form with a leading zero (0036000291452). Different sources store different forms.
7. ISBN-10 vs ISBN-13
Older books print a 10-digit ISBN, while the barcode on the back encodes the 13-digit version. To convert, drop the ISBN-10 check digit, prefix 978, and recompute the check digit the EAN way: 0-306-40615-2 becomes 9780306406157. BarcodeReport matches both forms to the same record, so either works in the ISBN lookup. Also, don't type the small 5-digit add-on printed to the right of a book's barcode. It encodes a suggested price, not the book.
8. It's a GTIN-14 case code
Shipping cartons carry 14-digit GTINs, usually in an ITF-14 barcode. The first digit is an indicator (1 to 8 for different pack levels). The carton is a different trade item from the unit inside, so it often isn't in consumer-product databases.
You can often recover the inner unit's code. Drop the indicator digit, drop the final check digit, and recompute the check digit on the 12 digits left. For an illustrative case code 10036000291459, that leaves 003600029145, the recomputed check digit is 2, and the result is 0036000291452, the 13-digit form of UPC 036000291452. This only works when the brand built the case code from the item code. GS1 also allows completely separate numbers for cases.
9. It's a coupon, receipt or loyalty card
U.S. coupons once used UPCs starting with 5 and now use GS1 DataBar. Prefixes 981–983 and 99 identify coupons, 980 is for refund receipts, and loyalty cards often live in the 4 range. None of these are products, so "not found" is the correct answer.
10. It's a store brand
Private-label products carry GTINs from the retailer's own prefix and are often sold only in that chain. They're perfectly valid, but fewer data sources ever see them, so coverage is thinner than for national brands.
11. It isn't a GTIN at all
Electronics, auto parts and warehouse labels are full of Code 128 and Code 39 barcodes that hold serial numbers, part numbers or internal SKUs. They scan fine, but they aren't GTINs, so no product database will match them. If the code has letters or an unusual length, check which symbology it is (barcode types explained).
What to do next
Confirm the check digit. Pad 11-digit values to 12. Expand UPC-E, convert case codes to the inner unit, and send 978/979 codes to the ISBN lookup.
Search the 12-digit UPC-A and the 13-digit EAN form (with a leading zero) on BarcodeReport. If you know the product name, search by name at /search?q=.... The item may exist under a different code, such as an older package or a different pack size.
Look the number up in Verified by GS1. Knowing the licensee company tells you whether the code is legitimate, and whom to ask for product data.
On a not-found page, set a "notify me" alert to get an email when the barcode is added. If you know the product, submit the barcode: single codes or a bulk CSV, reviewed before publishing.
Working with a list? Normalize first: restore leading zeros, expand UPC-E and drop 2-, 4- and 5-prefixed codes. Then upload it to bulk lookup. The free quick check shows how many codes match before you pay, so you can see how much cleanup improved your match rate.
Frequently asked questions
Usually the code isn't a global product number, or its digits changed before the search. In-store codes starting with 2 or 4, coupons, and carton case codes are rarely in product databases. Lost leading zeros, unexpanded UPC-E codes and scanner misreads also cause misses. If the code is valid, the product may be new, regional or private label, so set an alert or submit it.
Labels printed at the meat, deli or produce scale use restricted-circulation UPCs that start with 2. The digits typically encode the store's item number and the price, in a format each retailer chooses. Because every store reuses these numbers for different items, no global barcode database can identify them. Look for the manufacturer's original UPC on the packaging instead.
Take the six middle digits of the 8-digit UPC-E. The last of the six decides where the suppressed zeros go: 0, 1 and 2 move to the third position followed by four zeros, while 3, 4 and 5 to 9 each have their own pattern. Keep the first digit and the check digit unchanged. For example, UPC-E 04252614 expands to UPC-A 042100005264.
Excel and Google Sheets store barcodes as numbers unless told otherwise, and numbers can't keep leading zeros. A UPC like 036000291452 becomes 36000291452, which no database will match. Format the column as Text before pasting or importing. To repair existing values, pad them back to 12 digits with a TEXT formula using a format of twelve zeros.
Sometimes. A 14-digit code on a carton is a GTIN-14 case code, which usually isn't in consumer product databases. If the brand built it from the item's own code, you can recover that code by dropping the first digit, dropping the last digit and recalculating the check digit. Some brands assign unrelated numbers to cases, so that method won't always work.
Next steps
- Submit a barcode: add a missing product, one code at a time or as a bulk CSV.
- Bulk lookup: check a whole list and see your match count free before paying.
- ISBN lookup: for 978 and 979 codes and 10-digit ISBNs.
- Barcode country codes: what every prefix means, including the special ranges that never resolve.
- Barcode lookup in JavaScript and Node.js: build normalization and check-digit validation into your own pipeline.