Free Barcode Format Identifier

Answer a few questions about what the symbol looks like and get the likely formats, ranked — each with whether an iPhone, an Android phone or neither can decode it. Runs entirely in your browser.

Describe what you are looking at

Answer whatever you can and leave the rest. Each answer narrows the list; you do not need all of them.

Anything else you notice
Pick at least one answer above to see the candidate formats.

Which of these can a phone decode?

Three different questions get mixed together here, and they have three different answers. The Camera app column is what the built-in camera acts on with no extra software. The iOS column is the symbology list any third-party app can request through AVFoundation, taken from the AVMetadataObjectType constants in Apple's SDK headers along with the iOS version each one became available in. The Android column is what Google documents for ML Kit barcode scanning, which most Android scanners are built on. iOS declares 19 symbologies; ML Kit documents 13.

Barcode symbologies with iOS AVFoundation support, Android ML Kit support and built-in camera app support
Format Type iOS (AVFoundation) Android (ML Kit) Camera app
QR Code 2D iOS 7.0 Yes Yes
Micro QR 2D iOS 15.4 No No
Data Matrix 2D iOS 8.0 Yes No
Aztec 2D iOS 7.0 Yes No
PDF417 2D iOS 7.0 Yes No
Micro PDF417 2D iOS 15.4 No No
MaxiCode 2D Not supported No No
EAN-13 1D iOS 7.0 Yes No
EAN-8 1D iOS 7.0 Yes No
UPC-A 1D via EAN-13 Yes No
UPC-E 1D iOS 7.0 Yes No
Code 128 1D iOS 7.0 Yes No
Code 39 1D iOS 7.0 Yes No
Code 39 mod 43 1D iOS 7.0 as Code 39 No
Code 93 1D iOS 7.0 Yes No
Codabar 1D iOS 15.4 Yes No
Interleaved 2 of 5 1D iOS 8.0 Yes No
ITF-14 1D iOS 8.0 as ITF No
GS1 DataBar 1D iOS 15.4 No No
GS1 DataBar Limited 1D iOS 15.4 No No
GS1 DataBar Expanded 1D iOS 15.4 No No

Two rows are worth reading twice. MaxiCode appears in neither platform's list, so a general-purpose phone scanner will not decode the code on a UPS label. The GS1 DataBar family is supported on iOS from 15.4 but absent from ML Kit, which means the same coupon can scan on an iPhone and fail on an Android phone for reasons that have nothing to do with print quality. The full argument is in which barcodes your phone can actually scan.

How the matching works

There is no image recognition here and nothing is uploaded. Each of the twenty-one symbologies in the table above carries a short list of visual traits — its overall shape, its finder pattern, whether the printed digit count is fixed by the standard, whether it can encode letters, whether it sits in a frame. Your answers are scored against those traits and the results are ranked.

Why it shows several answers

Because several formats genuinely are indistinguishable from the information given. Eight printed digits is either EAN-8 or UPC-E and no amount of looking will separate them — you have to read the number and test whether it expands as a compressed UPC-E. Code 39 and Code 39 mod 43 differ only by a check character. A tool that returned one confident answer in those cases would be guessing, so this one ranks candidates instead and labels how well each fits.

The strongest single clue

For 2D codes it is the finder pattern, every time. Three corner squares means QR; one corner square means Micro QR; a solid L along two edges means Data Matrix; concentric squares in the middle means Aztec; hexagonal cells around a round bullseye means MaxiCode. PDF417 is the odd one out in that it is bounded left and right by a start and stop bar pattern rather than marked internally — in the reference ZXing implementation those are the constants {8, 1, 1, 1, 1, 1, 1, 3} and {7, 1, 1, 3, 1, 1, 1, 2, 1}, which is why the leftmost element you can see is an unusually wide bar.

When the description contradicts itself

If no format scores positively — a square grid of cells that also prints thirteen digits, say — the page says so rather than pretending. Usually one answer is the mistaken one; clearing the least certain answer and trying again is quicker than working out which.

When to reach for this

A code will not scan and you do not know why

Identify the format first. If it turns out to be GS1 DataBar or Micro QR, an Android scanner was never going to read it and no amount of cleaning the lens will help.

Choosing a format for your own labels

The compatibility table is the short version of the trade-off. For the longer comparison of what each format costs in space and capacity, see the barcode types comparison.

Before writing scanner code

The iOS column gives you the constant name and the minimum version for each symbology, which is what you need to request it without tripping over a device that does not offer it.

Working out what a document code holds

Once you know the format, the payload is the next question — try the driving licence or boarding pass decoders.

Frequently Asked Questions

How do I tell a QR code from a Data Matrix?

Look at the corners. A QR code has three solid squares, each ringed by white then black, in three of its four corners. A Data Matrix has no corner squares at all — instead two adjacent edges are solid unbroken lines forming an L, and the two opposite edges alternate black and white like a dashed rule. If you can see three bullseye-ish squares it is QR; if you can see one solid L it is Data Matrix.

What is the barcode with a target in the middle?

That is an Aztec code. Its finder pattern is a set of concentric squares at the centre of the symbol rather than in the corners, which is why it is usually described as a bullseye. You will meet it most often on rail and airline tickets. MaxiCode also has a central bullseye, but its cells are hexagons rather than squares, and it is used almost exclusively on UPS parcel labels.

Why will my iPhone camera not scan a product barcode?

Because the Camera app only acts on QR codes. That is a deliberate limit of the app, not of the phone: the AVFoundation framework underneath it has supported EAN-13, UPC-E, Code 128, PDF417 and Data Matrix since iOS 7 and 8. Any third-party scanner can request those symbologies. The Camera app simply does not, so a UPC on a cereal box produces no prompt at all.

Which barcode formats can iOS decode?

Nineteen, as declared in the AVFoundation SDK headers. Thirteen have been there since iOS 7 or 8: QR, Aztec, PDF417, Data Matrix, EAN-13, EAN-8, UPC-E, Code 39, Code 39 mod 43, Code 93, Code 128, Interleaved 2 of 5 and ITF-14. Six more arrived in iOS 15.4: Codabar, GS1 DataBar, GS1 DataBar Limited, GS1 DataBar Expanded, Micro QR and Micro PDF417.

Which barcode formats can Android decode?

Google ML Kit, which most Android scanners are built on, documents thirteen: QR, Aztec, PDF417, Data Matrix, EAN-13, EAN-8, UPC-A, UPC-E, Codabar, Code 39, Code 93, Code 128 and ITF. It has no GS1 DataBar support, no Micro QR and no Micro PDF417, and it reports an ITF-14 as ordinary ITF rather than as a distinct format.

Is there a barcode no phone can read?

MaxiCode is the common one. It appears on UPS shipping labels and it is absent from both the AVFoundation symbology list and ML Kit’s documented formats, so a general-purpose phone scanner will not decode it. The GS1 DataBar family is a narrower case: iOS has decoded it since 15.4, but ML Kit does not support it, so the same coupon can scan on an iPhone and fail on an Android phone.

Does the number of digits identify the format on its own?

It narrows it a long way but rarely settles it. Thirteen digits is almost certainly EAN-13, twelve is UPC-A, fourteen inside a heavy black frame is ITF-14. Eight digits is genuinely ambiguous — both EAN-8 and UPC-E print eight — and anything with letters in it rules out the product codes entirely, leaving Code 128, Code 39 or Code 93. That is why this page asks about the shape and the finder pattern as well.

Why does the same barcode scan on one phone and not another?

Three separate reasons, in rough order of likelihood. The app you are using may not have requested that symbology. The platform may not support it — GS1 DataBar on Android is the clearest example. Or the device may be too old for it: the six symbologies added in iOS 15.4 are unavailable on earlier releases, and on iOS requesting a type the device does not offer can be rejected outright rather than ignored.

Is anything I enter here uploaded?

No. There is nothing to upload — you describe the symbol with a few dropdowns and the matching runs as plain JavaScript in your browser. You can load this page, disconnect from the network and it will still work, and the compatibility table below is baked into the page rather than fetched.

For the wider picture — why the Camera app stops at QR codes, what the six symbologies added in iOS 15.4 changed, and what happens when an app asks for a format the device does not have — read which barcodes your phone can actually scan.

Frequently Asked Questions

How do I tell a QR code from a Data Matrix?

Look at the corners. A QR code has three solid squares, each ringed by white then black, in three of its four corners. A Data Matrix has no corner squares at all — instead two adjacent edges are solid unbroken lines forming an L, and the two opposite edges alternate black and white like a dashed rule. If you can see three bullseye-ish squares it is QR; if you can see one solid L it is Data Matrix.

What is the barcode with a target in the middle?

That is an Aztec code. Its finder pattern is a set of concentric squares at the centre of the symbol rather than in the corners, which is why it is usually described as a bullseye. You will meet it most often on rail and airline tickets. MaxiCode also has a central bullseye, but its cells are hexagons rather than squares, and it is used almost exclusively on UPS parcel labels.

Why will my iPhone camera not scan a product barcode?

Because the Camera app only acts on QR codes. That is a deliberate limit of the app, not of the phone: the AVFoundation framework underneath it has supported EAN-13, UPC-E, Code 128, PDF417 and Data Matrix since iOS 7 and 8. Any third-party scanner can request those symbologies. The Camera app simply does not, so a UPC on a cereal box produces no prompt at all.

Which barcode formats can iOS decode?

Nineteen, as declared in the AVFoundation SDK headers. Thirteen have been there since iOS 7 or 8: QR, Aztec, PDF417, Data Matrix, EAN-13, EAN-8, UPC-E, Code 39, Code 39 mod 43, Code 93, Code 128, Interleaved 2 of 5 and ITF-14. Six more arrived in iOS 15.4: Codabar, GS1 DataBar, GS1 DataBar Limited, GS1 DataBar Expanded, Micro QR and Micro PDF417.

Which barcode formats can Android decode?

Google ML Kit, which most Android scanners are built on, documents thirteen: QR, Aztec, PDF417, Data Matrix, EAN-13, EAN-8, UPC-A, UPC-E, Codabar, Code 39, Code 93, Code 128 and ITF. It has no GS1 DataBar support, no Micro QR and no Micro PDF417, and it reports an ITF-14 as ordinary ITF rather than as a distinct format.

Is there a barcode no phone can read?

MaxiCode is the common one. It appears on UPS shipping labels and it is absent from both the AVFoundation symbology list and ML Kit’s documented formats, so a general-purpose phone scanner will not decode it. The GS1 DataBar family is a narrower case: iOS has decoded it since 15.4, but ML Kit does not support it, so the same coupon can scan on an iPhone and fail on an Android phone.

Does the number of digits identify the format on its own?

It narrows it a long way but rarely settles it. Thirteen digits is almost certainly EAN-13, twelve is UPC-A, fourteen inside a heavy black frame is ITF-14. Eight digits is genuinely ambiguous — both EAN-8 and UPC-E print eight — and anything with letters in it rules out the product codes entirely, leaving Code 128, Code 39 or Code 93. That is why this page asks about the shape and the finder pattern as well.

Why does the same barcode scan on one phone and not another?

Three separate reasons, in rough order of likelihood. The app you are using may not have requested that symbology. The platform may not support it — GS1 DataBar on Android is the clearest example. Or the device may be too old for it: the six symbologies added in iOS 15.4 are unavailable on earlier releases, and on iOS requesting a type the device does not offer can be rejected outright rather than ignored.

Is anything I enter here uploaded?

No. There is nothing to upload — you describe the symbol with a few dropdowns and the matching runs as plain JavaScript in your browser. You can load this page, disconnect from the network and it will still work, and the compatibility table below is baked into the page rather than fetched.

Or Just Point the Camera at It

Identifying a symbology by eye is a useful skill, but a scanner that requests all of them is faster. Scan & Generate asks the camera for seventeen formats including ITF-14 and the GS1 DataBar family, and tells you which one it found.