Barcodes & Expiry Dates

Can a barcode tell you the expiry date?

No. A retail barcode identifies a product, not a date, so it has nothing to tell you about when your item expires. Here's what actually works: photographing the date that's already printed on the pack.

A retail barcode, decoded

0 12345 67890 5
0 12345 Manufacturer
67890 Product
5 Check digit

No date, anywhere in the number.

A barcode identifies the product, not the item in your hand

A standard retail barcode, EAN-13 almost everywhere and UPC-A in the US and Canada, is a fixed number assigned once by GS1, the organization that manages the standard. It's printed on every unit of that product the same way. The carton you bought this morning carries the identical code as the one still on the shelf, and the one that expired last month.

That number breaks into three parts: a prefix that identifies the manufacturer, a reference number that identifies the specific product, and a check digit that lets a scanner confirm it read the code correctly. There's no field for a date anywhere in it.

  • Same code on every unit of a product, no matter when it was packed
  • Assigned once when the product is registered with GS1, not per batch or per pack
  • No field for a date of any kind in the structure
  • Scanning it tells you what the product is, nothing about when it expires

Some barcodes really do carry a date, just not this one

The belief isn't baseless. Two other systems really do put a date inside a barcode, and it's easy to confuse them with the one on a box of cereal.

GS1-128 (sometimes written UCC/EAN-128) and GS1 DataMatrix codes use a system of application identifiers, short prefixes that tell a scanner what the digits after them mean. Application identifier 17 means expiration date. These codes show up on pharmaceutical packaging, medical supplies, and wholesale shipping cases, where regulations require lot and date tracking. They're a different symbology from the one on your groceries, and consumer barcode scanners generally aren't built to read them.

Cosmetics batch codes are a separate, unrelated thing. Cosmetics packaging usually carries a short alphanumeric batch code the manufacturer assigned internally, not a barcode-encoded date. Some third-party sites and apps decode these against a brand's own numbering scheme to estimate a production date. There's no industry standard for the format, coverage depends on which brands have been reverse-engineered, and the result is an estimate of when the product was made, not a scan of an expiry date. It has nothing to do with food.

Code type Where it shows up Carries an expiry date?
EAN-13 / UPC-A Supermarket products, almost all consumer retail packaging No
GS1-128 / GS1 DataMatrix (AI 17) Pharmaceuticals, medical supplies, wholesale cases Yes, that's what AI 17 is for
Cosmetics batch code Cosmetics and skincare packaging Not directly. Third-party tools estimate a production date; no standard, no guarantee

The date is already on the pack. Point a camera at it.

Every food item that has an expiry date has it printed somewhere on the pack, in plain text. That's the actual source of truth, and it's the one thing a camera can read reliably, no lookup required.

In Expireless, scanning a grocery receipt logs the whole trip at once. While reviewing what was added, you photograph the printed date on any item where it matters, and it's read and filled in for you. No barcode lookup involved, because the date was never in the barcode to begin with.

  • Scan a grocery receipt to log a whole shopping trip in one photo
  • Photograph the printed expiry date during review; it's transcribed automatically
  • Works on any product, because it reads what's actually printed
  • No barcode needed for this step

How receipt scanning works →

Expireless pantry inventory screen showing fridge, freezer, and pantry tabs with items sorted by expiry date

Barcodes are still useful, just not for this

None of this makes barcodes useless. What a barcode is genuinely good at is telling products apart, and that's what Expireless uses it for: scan one and the product name and category fill themselves in, so you're not typing "whole milk, 1 gallon" by hand. You still confirm the date yourself, because that's the one field a barcode was never going to have.

Expiry date from barcode: FAQ

Can an app scan a barcode to get the expiry date?

No. A standard retail barcode (EAN-13 or UPC-A) only identifies the product. It's the same code on every unit regardless of when it was made, and it has no field for a date. Any app that claims to read an expiry date from a normal grocery barcode is either reading the printed text on the pack with a camera, which is a different and legitimate technique, or showing a default estimate based on the product category, not an actual date pulled from the code.

Why do some barcode scanner apps show an expiration date?

Usually one of three things is happening: the app is reading the printed date off the pack with the camera (that works, and it's what Expireless does), the app is showing a category-based estimate rather than the manufacturer's actual date, or the product is one of the few consumer cases where a GS1-128 or GS1 DataMatrix code with application identifier 17 really is present, most often on pharmaceuticals rather than groceries.

What about medicine boxes, don't those have a barcode with the expiry date?

Some do. Pharmaceutical packaging often carries a GS1 DataMatrix code with application identifier 17 for the expiry date, because regulations require it. Expireless doesn't read that code type, and medicine is the one place where the date is typed rather than photographed: you add the medicine and enter the date printed on the box.

Can I use a cosmetics batch code checker for food?

No. Batch code checkers decode a manufacturer's internal numbering scheme to estimate when a cosmetic product was made, and they only work for brands someone has already reverse-engineered. Food packaging doesn't use the same batch code systems, there's no equivalent database, and the printed expiry date on food is already the authoritative answer, so there's nothing to estimate.

What's the fastest way to record expiry dates for a whole grocery run?

Photograph the receipt first. That logs every item in one pass. Then, during the review step, photograph the printed date on anything where the exact date matters, like milk or meat, and let the category default cover the rest, like pantry staples where a week either way doesn't matter.

Know the real expiry date, not a guess

Free to download · Pro from $4.99/month · No credit card needed

Get it on Google Play