Writing · Article

Can You Scan Expiry Dates With a Smartphone? What a Barcode Actually Tells You, Where Camera Date Reading Fails, and How to Track Expiry Dates on Android

Can a phone scan the expiry date off a pack? Not from a retail barcode, which carries no date. What EAN/UPC codes hold, where OCR fails, and how a free Android expiry tracker works.

Point your phone at a yoghurt, hear a beep, and the app knows it expires on Thursday. That is what most people picture when they search can you scan expiry dates with a smartphone, and what several app listings imply. The honest answer: not the way you imagine. The barcode on a retail pack does not contain the date, and reading the printed date with the camera is a different, far less reliable trick. This post explains what a barcode encodes, where camera date reading fails, and what a scan can usefully do instead, with the free Expiry Date Tracker: Scanner app for Android as the example.

What is actually inside a retail barcode

The striped code on a tin of beans or a box of paracetamol is an EAN-13 or UPC-A barcode. It encodes a single number, typically twelve or thirteen digits, that identifies the product, not the unit in your hand: broadly, a prefix for the company, an item reference the company chose, and a check digit that lets the scanner catch a misread. Every pack of that product, from any factory in any year, carries the same number.

The expiry date is added later, by a different machine, usually an inkjet or laser printer on the line. The barcode and the date never meet. The most a scanner can learn from an EAN or UPC is "this is product 5012345678900", and only then if it has a database mapping that number to a name.

The exception: logistics barcodes that can carry a date

Some barcodes do carry dates. In supply chains, longer codes such as GS1-128 and the 2D codes on cases and pallets can include structured fields, among them a batch number and an expiry date, so a warehouse can rotate stock automatically. Two caveats: these codes are mostly on outer cases rather than the item you take home, and even where a consumer pack carries one, most consumer apps read it as a product identifier without parsing the extra fields. Retail packaging may move towards richer 2D codes over time, but as of November 2026 a tin in your kitchen almost certainly carries a plain EAN or UPC.

What about reading the printed date with the camera?

The other approach is optical character recognition: the app photographs the printed date and tries to read the digits. On a crisp, flat, black-on-white label it can work. Expiry dates are rarely printed like that. OCR has to cope with:

  • Dot-matrix inkjet dates, where each digit is a cloud of dots that smears on a wet carton.
  • Curved surfaces: cans, bottles and tubes bend the text away from the lens.
  • Embossed or stamped dates with no ink at all, readable only by their shadow.
  • Ambiguous formats: 03/11/2027 is 3 November in most of the world and 11 March in the United States; month-only dates need a rule about which day they mean; some packs print a production date beside the expiry date.

An app that reads the date correctly nine times in ten has still mis-recorded one item in ten, and it is the mis-recorded chicken that makes you ill. Test any such app on your worst-printed label.

What Expiry Date Tracker actually does with a scan

Expiry Date Tracker: Scanner uses the barcode for the thing it is good for and leaves the date to you. Tap Scan barcode, point the camera at the pack, and the product name fills itself in: for a new barcode from the free Open Food Facts database (the barcode number is the only thing sent), for one you have scanned before from your own history on the phone. It reads EAN, UPC, Code 128, Code 39 and ITF-14 codes. No barcode, or no match? Type the name once.

Then you set the date with one tap. Instead of a calendar, the screen offers quick chips: one week, two weeks, one month, three months, six months and a year. Tap the closest one, or nudge it with the minus and plus buttons if the exact day matters. The app does not attempt to read the printed date, and its own FAQ says so.

Why that is faster than it sounds: a twelve-item shop

"I have to enter the date myself" sounds like a chore until you count the taps. Take a weekly shop of twelve dated items: milk, yoghurt, chicken, mince, salad, bread, ham, cheese, hummus, berries, a ready meal and juice. For each: scan, tap a chip, save. Three actions, thirty-six for the shop, no typing for any product the database or your history knows. Allow a generous ten seconds an item and that is two minutes; an assumption to make the point, not a measurement. A calendar picker scrolled to the right month twelve times is where most people give up around item six.

The reminder, which is the whole point

In Settings you choose how many days ahead you want warning and the hour the notification should arrive; the app nudges you before the date and again on the day. Reminders are scheduled on the phone itself, so they fire with no signal. Check once that notifications are allowed and, on Android 12 and later, Alarms and reminders too; the setup walkthrough covers those screens. The list groups everything into expired, expiring today, this week and later, and a tap on the tick marks an item used and cancels its reminders.

Nothing in the app is food-specific. Medicine, cosmetics and sunscreen, documents, warranties and renewals: type a name, pick the date, tag the location (Fridge, Freezer, Pantry, Medicine or Other) and put a reference number in the note.

Privacy, price and the small print

  • No account, no cloud. Items live in a database on your phone; no sign-up, no server, no sync, fully offline. The only optional network call is the barcode lookup, which sends the barcode number and nothing else.
  • Free and unlimited. No item cap. The free version shows one small banner ad; a single optional one-time purchase (listed at $1.99, shown in your local currency on Google Play) removes it. No subscription.
  • The ad banner's SDK. The Play data-safety panel lists data types such as location and app activity as potentially collected or shared. That reflects the SDK that shows the banner, not your list, which stays on the device.
  • Fifteen languages, Android 7.0 or later, no iPhone version at the time of writing.

When not to bother, and what no app can promise

If what you want is fully automatic date capture, point, beep, done, no app on the market can be trusted blind, because the information is not in the barcode and camera reading is fallible. Always read the pack. For fewer than a handful of dated items, a calendar reminder is enough. If two people need one shared list on two phones, this app does not sync; the buyer's guide to expiry tracker apps covers that trade-off. For one phone and one kitchen: scan for the name, tap for the date, let the reminders do the remembering.

FAQ

  • Can the app read the expiry date from the barcode? No, and neither can any other app, for standard retail barcodes. An EAN or UPC identifies the product; the date is not in the code.
  • Can a smartphone scan expiry dates at all? It can scan the barcode to identify the product, and some apps try to read the printed date with the camera, which works on clean labels and fails on dot-matrix, curved or embossed dates. Expiry Date Tracker uses the scan for the name and a one-tap chip for the date.
  • Does it need internet? Only for the optional barcode lookup when a product is new to you. Adding items, the list and the reminders work offline.
  • Does it work for products without a barcode? Yes. Tap Add by hand, type the name, set the date.