Read a barcode, then see what its number actually says
This barcode scanner reads a barcode from your phone camera or from a photo and shows the number and the format it carries. When the value is a product number (a GTIN, which covers the UPC and EAN codes on shelf items), it goes a step further. Scan 8801234560016 and it tells you that the leading 880 was issued by GS1 South Korea, that 123456001 is the company and item part, and whether the final 6 is the correct check digit for the first 12 digits. The result card also redraws the bars from the encoding rules and colors the three sections underneath.
Leave the camera running and point it at one item after another: every code lands in a scan list, and a repeated code raises its count instead of adding a row. When you're done, copy the whole list or save it as CSV for a quick stock count. QR codes, Data Matrix and other 2D codes are read too, and GS1 codes that carry an expiration date and lot number are split into labeled fields. Video and photos are read inside this browser and are never sent anywhere.
When you'd want to read a barcode yourself
A checkout scanner passes the number straight to the store's system, so you never see what the barcode really holds. These are the situations where the number itself matters.
- Stock counts and item lists: walk a stockroom or shelf, scan items one after another and get a count per product number. A phone is enough to produce a CSV, with no scanner hardware.
- Listing products online: marketplace and store listing forms ask for a UPC or GTIN. Scanning the pack and copying the value is safer than retyping 12 or 13 digits, and the check digit confirms nothing slipped. GS1 US notes that each variation of a product needs its own barcode, so a shirt in 3 sizes and 3 colors takes 9.
- "Does 690 mean it's made in China?": people often guess where something was made from the first digits. You can see here what the prefix really stands for, using the GS1 table.
- Dates and lot numbers: the GS1-128 on a case or the GS1 DataMatrix on a small pack strings expiration date (17), lot (10) and serial number (21) together as bare digits. The scanner names each field and turns the dates into readable ones.
- Checking a label before you print: print a label from a barcode generator at real size and scan it to confirm that the value read back matches the value you entered.
Three ways to scan, plus the list
- Camera: tap Turn camera on and allow access, and the rear camera opens first. Line the barcode up horizontally in the middle frame and each read is marked with an outline and a beep. If your device has several cameras, pick one at the top right, and on phones that support it you can turn on the flash.
- Photo: choose a saved photo or screenshot, drag one in, or paste it with Ctrl+V. Up to 12 codes are found in one image and numbered with outlines, and tapping a number shows that code's breakdown on the result card.
- Number: if the bars are torn or smudged, type the digits printed beneath them. The tool checks the check digit, and if you leave off the last digit it calculates it. The arithmetic is shown digit by digit.
- Scan list: use the minus and plus buttons to fix a count, then copy everything (value, format and count separated by tabs) or save a CSV. The list disappears when you close the page.
Barcode formats it can read
It reads both 1D barcodes, which store data in bar widths, and 2D codes, which store it in a grid of small squares. A format name tells you how the symbol is drawn. Whether the value inside is a product number or a company's own reference is a separate question.
| Format | Type | Where you see it | What it holds |
|---|---|---|---|
| EAN-13 · UPC-A | 1D | Retail product packaging | 13- or 12-digit product number (GTIN) |
| EAN-8 · UPC-E | 1D | Very small items such as chewing gum | 8-digit number; UPC-E is a shortened 12-digit number |
| ITF-14 | 1D | Shipping cartons and multipacks | 14-digit GTIN-14 |
| GS1-128 · GS1 DataBar | 1D | Logistics labels, variable-weight fresh food | Product number plus dates, lot, weight and similar fields |
| Code 128 · Code 39 · Code 93 · Codabar · ITF | 1D | Internal references, shipping labels, asset and part tags | Letters and digits (varies by format) |
| QR · Data Matrix · PDF417 · Aztec | 2D | Web links, small parts and medicine packs, tickets | Any text, or GS1 fields |
Put a 0 in front of a UPC-A and you get an EAN-13 with the same bars. UPC-A 036000291452 and EAN-13 0036000291452 are the same product number, and when the symbol follows the UPC-A rules this tool shows the 12-digit form. UPC-E squeezes a 12-digit UPC-A into 8 digits by dropping zeros, so the result card also expands it back. For example, UPC-E 01234558 is UPC-A 012345000058.
A 13-digit product number has three parts
GS1 describes a 13-digit GTIN as a prefix, a company-and-item part and a check digit. The result card colors the same three sections in the same order.
- GS1 Prefix (about the first 3 digits): a range that GS1 hands to each national member organization, which then issues numbers to companies within it. A number starting with 880 was issued by GS1 South Korea.
- Company and item reference: the GS1 Company Prefix, which includes the GS1 Prefix, runs 4 to 12 digits, and the company numbers each of its items with the remaining digits. Because the company part varies in length, you can't tell from the digits alone where it ends.
- Check digit (the last digit): a verification digit computed from the others. Mistyping a digit or misreading part of the bars almost always makes it fail.
A 14-digit GTIN-14 adds one leading digit for the packaging level. The digits 1 to 8 mean a case or other pack of the same item, and 9 is used for variable-measure products whose weight or length changes from one unit to the next. When you scan an ITF-14, the card shows what the first digit means and the 13-digit number left when the first digit is removed and the check digit recalculated (usually the GTIN of the item inside).
Prefix table: a 690 or 880 prefix is not the country of origin
Because the leading digits are often called a "country code", it's easy to read them as the place of manufacture. They actually identify the GS1 member organization that issued the number. A product made in a factory abroad can carry a GS1 US number, and a company in one country can make goods in another.
"Since GS1 user companies can manufacture products anywhere in the world, GS1 Prefixes do not identify the country of origin for a given product."GS1, GS1 Company Prefix, checked 2026-10-22. GS1 Korea likewise states that its country code does not mean the country of origin.
| Prefix | Issuing organization or use |
|---|---|
| 001–019, 030–039, 060–139 | GS1 US (a 12-digit UPC is counted with a leading 0) |
| 500–509 | GS1 UK |
| 930–939 | GS1 Australia |
| 754–755 | GS1 Canada |
| 750 | GS1 Mexico |
| 680–681, 690–699 | GS1 China |
| 450–459, 490–499 | GS1 Japan |
| 880–881 | GS1 South Korea |
| 400–440 | GS1 Germany |
| 300–379 | GS1 France |
| 800–839 | GS1 Italy |
| 840–849 | GS1 Spain |
| 789–790 | GS1 Brasil |
| 899 | GS1 Indonesia |
| 020–029, 200–299 | Regional-use numbers (in-store scale labels and similar) |
| 977 | Periodicals (ISSN) |
| 978–979 | Books (ISBN); part of 979 is sheet music (ISMN) |
| 981–983, 99 | Coupons |
The tool doesn't use just this excerpt. It looks the prefix up in the full table published on the GS1 website, and it says so when a range is missing from the table or hasn't been allocated yet. 8-digit GTIN-8 numbers have a separate prefix table, so for those the card shows the kind of number rather than an issuing organization.
The check digit, worked out: 880123456001 gives 6
GS1 8-, 12-, 13- and 14-digit numbers all use the same method. Starting at the digit just left of the check digit and moving left, multiply by 3 and 1 alternately and add the results, then subtract the sum from the next multiple of 10 (or from the sum itself if it already is one).
| Digit | 8 | 8 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Multiplier | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 |
| Product | 8 | 24 | 0 | 3 | 2 | 9 | 4 | 15 | 6 | 0 | 0 | 3 |
The products add up to 74, and the next multiple of 10 is 80. 80 − 74 = 6, so the finished number is 8801234560016. On the Number tab, type just 880123456001 and the tool shows the same working digit by digit, with a button that appends the 6.
A correct check digit only means the number is well formed. It can't tell you whether the number was ever issued or which product carries it. The GS1 lookup button on the result card searches Verified by GS1, the GS1 service that shows the details a company has registered.
Books, magazines, in-store labels and coupons
- Books (978, 979): a 13-digit ISBN. Numbers starting with 978 can also be written as the older 10-digit ISBN, which the card shows alongside. For example, 9780306406157 is ISBN-10 0306406152. A 979 number can't be converted to 10 digits.
- Periodicals (977): the 7 digits after 977 are the ISSN without its check digit. The next 2 digits are a variation number, usually 00, that separates editions such as different prices or weekdays. 9771234567003 is ISSN 1234-5679. The small 2- or 5-digit add-on beside a magazine barcode carries extra information such as the issue, and the card lists it separately.
- In-store and regional numbers (02, 04, 20–29): numbers used only inside a store, a company or a region (RCN), such as the labels printed by a deli or produce scale. Weight or price is sometimes encoded in the number, but the rules differ by region and store, so the tool doesn't try to decode them. The same number can be a different product in another store.
- Coupons (981–983, 99): coupon numbers are set country by country, so they are not unique worldwide.
Reading expiration dates and lots in GS1 codes
A GS1-128 on a shipping case or a GS1 DataMatrix on a small pack separates its fields with two- to four-digit Application Identifiers (AIs), shown in parentheses. In the bars the digits run together with no parentheses, which makes them hard to read by eye. The tool names each field and turns dates into year-month-day.
| AI | Field | Format | Example read |
|---|---|---|---|
| (01) | Product number (GTIN) | 14 digits | 08801234560016 |
| (17) | Expiration date | YYMMDD | 271231 → 2027-12-31 |
| (15) | Best before date | YYMMDD | 270200 → 2027-02-28 (day 00 = last day of the month) |
| (11) | Production date | YYMMDD | 260930 → 2026-09-30 |
| (10) | Lot / batch number | Up to 20 letters or digits | A2610 |
| (21) | Serial number | Up to 20 letters or digits | SN0001 |
| (3103) | Net weight (kg) | 6 digits; the fourth digit, 3, is the number of decimals | 001250 → 1.250 kg |
| (00) | Logistics unit number (SSCC) | 18 digits | A number for each individual pallet or carton |
When the day is 00, the GS1 specification reads it as the last day of that month (in February 2016 that means the 29th). Regulated medical products have been barred from using 00 for the day since 1 January 2025. Two-digit years are read as a year from 49 years back to 50 years ahead of the current year. GS1 also has an ambition for retail checkouts worldwide to be able to read 2D barcodes by the end of 2027, so GS1 QR codes and DataMatrix symbols are turning up on more packs.
If a code won't scan
- Distance and focus: too close and the phone can't focus, so the bars blur. Hold it about a hand's width away so the barcode fills at least half the width of the screen.
- Margins: the blank margins on both sides of the bars must be in view so the scanner can find where the code starts and ends. Keep them when you crop a photo.
- Glare and shadow: light bouncing off plastic wrap can wash out part of the bars. Tilt the phone a little, or turn on the flash in dim light.
- Round bottles and cans: on a curved surface the ends of the barcode look squeezed. Turn the item so the barcode faces you.
- Small, blurry photos: enlarging a tiny thumbnail won't bring back bars that are already lost. Use the original or a sharp screenshot rather than a picture that has been forwarded through chat apps several times.
- Torn bars: if the digits underneath are readable, type them on the Number tab and confirm them with the check digit.
Common misreadings
- Reading 880 or 690 as the country of origin: the prefix shows the GS1 organization that issued the number. The country of origin is whatever the packaging's origin marking says.
- Losing a leading 0: paste 036000291452 into a spreadsheet and it becomes the number 36000291452. Format the column as text before pasting. When you open a CSV, set that column to text in the same way.
- Treating 12 and 13 digits as different numbers: a 13-digit number made by adding a 0 in front of a UPC-A is the same product number. If a system asks for 13 digits, add the leading 0.
- Treating an internal reference as a product number: a value such as RB-2610-0042 from a Code 128 or Code 39 is a company-assigned reference. It isn't a product number, and a check digit doesn't apply.
- Assuming a scan means it's valid: reading a coupon or ticket barcode doesn't show that it can still be used. Check status and expiry with whoever issued it.
Where your video, photos and numbers are processed
The first time you scan, this site downloads the recognition engine once (zxing-wasm, ZXing-C++ compiled to WebAssembly, about 1 MB). After that, camera video and photos are read by a Web Worker inside your browser. Video, photos and scanned numbers are not sent to a server, and they aren't written to the address bar or to browser storage. The camera runs only after you tap Turn camera on, and it turns off as soon as you switch to another tab or pick another way to scan.
The GS1 lookup button sends the product number to the GS1 website in the address it opens. The Open link button opens the web address inside a QR code in a new tab. Neither button connects to anything until you press it.
Limits
- It doesn't give product names, prices or stock levels. You have to look the number up with a seller or in GS1 registry data.
- Badly damaged bars, very small photos and out-of-focus images can't be read, and it is slower than a dedicated checkout scanner.
- The prefix table only tells you which organization issued a number. It can't confirm where a product was made or who made it.
- It doesn't decode the weight or price inside in-store and regional numbers (RCN), or the finer structure of coupon numbers, because those differ by country and store.
- The flash and camera picker appear only when your browser and device support them. Some in-app browsers block the camera.
- The scan list isn't saved, so copy it or save a CSV before you close the page.
As of The GS1 prefix table, GS1 General Specifications (Release 26.0) and the AI formats were checked on 2026-10-22.
Sources
- 01GS1: GS1 Company PrefixThe full GS1 Prefix table and the statement that prefixes don't show country of origin
- 02GS1 General Specifications, Release 26.0Check digit calculation (7.9.1), the GS1-8 prefix table, company prefix length of 4 to 12 digits, the ISSN 977 structure, RCNs, the UPC-E zero-suppression rule, date 00 and century rules, add-on symbols
- 03GS1: Application IdentifiersNames and formats of AIs such as (00), (01), (10), (11), (15), (17), (21) and (310n)
- 04GS1 US: Get Your U.P.C. BarcodesThe US member organization's guidance that each variation of a product needs a unique barcode
- 05GS1 Korea: GTIN (in Korean)GTIN-8, -13 and -14 structure, South Korea's country code 880, and the note that a country code is not the country of origin
- 06GS1 Korea: EAN/UPC barcodes (in Korean)How EAN-13, EAN-8, UPC-A and UPC-E barcodes are used
- 07GS1: Verified by GS1The GS1 service for looking up company-registered information by product number (GTIN)
- 08ZXing-C++The recognition engine this tool uses, run in the browser as zxing-wasm 3.1.5
- 09MDN: MediaDevices.getUserMedia()Camera permission requests and what errors such as NotAllowedError, NotFoundError and NotReadableError mean
Frequently asked questions
Can I scan a product barcode with my phone camera?
Yes. On the Camera tab, tap Turn camera on and allow access, and the rear camera reads the code right away. There is no app to install. Line the barcode up horizontally in the middle frame and keep the blank margins on both sides of the bars in view. If the camera won't open inside a chat app, open the same address in your default browser.
Does a barcode starting with 690 mean the product was made in China?
No. 690 means the number was issued by GS1 China, the national GS1 member organization. GS1 states that its companies can manufacture products anywhere in the world, so GS1 Prefixes do not identify the country of origin. A product made abroad can carry a GS1 US or GS1 UK number, and goods made in China can carry a prefix from another country. Check the origin marking on the packaging instead.
What do other prefixes like 00 to 13, 50 or 93 stand for?
In the GS1 table, 001-019, 030-039 and 060-139 are GS1 US, 500-509 is GS1 UK, 930-939 is GS1 Australia, 400-440 is GS1 Germany and 450-459 and 490-499 are GS1 Japan. 020-029 and 040-049 are numbers used only inside a store or company, and 978-979 are book ISBNs. The tool looks every prefix up in the full table on the GS1 website.
Can a barcode number tell me the product name and price?
The tool shows the number, the format, the issuing organization and the check digit. For the product name, the GS1 lookup button searches Verified by GS1 for what the company registered, although not every product is registered there. Prices differ from seller to seller, so they aren't in the barcode. The number only goes to the GS1 site when you press that button.
How is the check digit calculated?
Drop the last digit, then moving left from the digit next to it, multiply by 3, 1, 3, 1 and so on and add everything up. Subtract the sum from the next multiple of 10. For 880123456001 the sum is 74, and 80 minus 74 is 6, so the full number is 8801234560016. The Number tab shows this working digit by digit.
What happens if a photo contains several barcodes?
Up to 12 are found in one photo and numbered from top to bottom and left to right. Tap an outline on the photo or a number in the strip of found codes below it to decode that code. Every code found goes into the scan list, and reading the same photo again doesn't count them twice.
What happens to the list when I scan the same item more than once?
A repeated code doesn't create a new row. Its count goes up by one. A code that stays in front of the camera isn't counted again, and if it leaves the frame for more than 1.5 seconds and comes back, it adds one more. Fix a miscount with the minus and plus buttons on the row, then save a CSV when you finish to get a stock count list. When opening it in Excel, import the value column as Text so leading zeros are kept.
Are my photos or camera video sent to a server?
No. The recognition engine (about 1 MB) is downloaded from this site once, the first time you scan, and after that video and photos are read inside your browser only. The scan list isn't stored either, so it disappears when you close or reload the page. Copy it or save a CSV first if you need it.