Skip to content
Cosmetics BatchCosmetics Batch

L'Oréal Batch Codes: The Year-Letter System Explained

L'Oréal's 6-character code hides the year in a letter and the month in the character after it. It reads Maybelline, Lancôme, Kiehl's, CeraVe, La Roche-Posay, YSL and 30 more brands.

6 min read · Updated July 2026

Anatomy of the code 22U401

CharactersWhat they encode
22Factory / plant identifier — no date information
UProduction year, from the annual letter cycle — U = 2021
4Month: 1–9 = January–September (O/N/D = Oct/Nov/Dec) — 4 = April
01Production batch series — no bearing on shelf life

Worked examples

Decoded live by the same engine that powers the checker — not transcribed by hand.

22U401April 15, 2021high confidence

Factory 22, year letter U, month 4 — April 2021.

40X200February 15, 2023high confidence

Year letter X — two years on from U.

31YO500October 15, 2024high confidence

Month O is October, not a zero.

How the code is built

L'Oréal group codes are typically six characters, and unlike Coty's pure-digit stamp they mix numbers and letters. The leading digits identify the factory. The first letter is the year. The character immediately after that letter is the month. Whatever follows is an internal batch series with no date meaning.

The year runs on an annual letter cycle through the alphabet with the letter V skipped, so U = 2021, W = 2022, X = 2023, Y = 2024, Z = 2025, and the cycle wraps back to A for 2026. Skipping V is a deliberate choice: it is too easily confused with U on a low-contrast stamp.

The month character reuses digits 1–9 for January to September, then switches to letters for the last quarter: O = October, N = November, D = December. Those are the initials of the month names in French and English alike, which is a handy way to remember them — and a trap if you read the O as a zero.

Reading one by hand

  • Find the first letter in the code. That is the year. Count forward from U = 2021 through the alphabet, remembering to skip V.
  • Look at the very next character. A digit from 1 to 9 is the month directly. An O, N or D is October, November or December.
  • Ignore everything before the letter and everything after the month character. The factory number and the batch series tell you nothing about age.

Where L'Oréal prints it

On tubes and bottles, the code is usually inkjet-printed on the crimp seal at the bottom of the tube, or on the bottle's base. On cartons it sits on one of the end flaps, often next to a printed best-before or PAO symbol.

L'Oréal's dermatological brands — La Roche-Posay, Vichy, CeraVe, SkinCeuticals — frequently print an explicit expiry date as well as the batch code. When a real expiry date is on the pack, trust it over any decoded estimate.

The stamp is often pale grey on white plastic. Tilt the pack against a light source rather than adding more light straight on.

What the format cannot tell you

The code gives the month, not the day, so the decoder estimates mid-month. That is accurate enough for shelf-life purposes: no cosmetic's usability turns on a fortnight.

The letter cycle is 25 years long, so ambiguity is far less of a problem here than with single-digit year codes — but a very old product from a previous cycle would read as a recent one. In practice, a L'Oréal product old enough to hit that ambiguity is well past using.

The factory digits are sometimes read online as a date. They are not. Two products made the same week in different plants carry different leading digits.

FAQ

My L'Oréal code has no letter in it at all.

Then it is not this format. Some L'Oréal-owned brands acquired recently (and some regional contract manufacturers) still print a plain Julian date. Our decoder falls back to reading an embedded date when the year-letter pattern isn't found.

Is the first letter always the year, even if the code starts with a letter?

Yes — the year is the first letter that appears anywhere in the code, whether or not factory digits precede it.

Does this work for Maybelline and NYX too?

Yes. Maybelline, NYX, Garnier, Essie, 3CE, Kiehl's, Lancôme, YSL Beauty, Urban Decay and the rest of the group share L'Oréal's plants and this code.

Brands that use this code (39)

The format belongs to the manufacturer, not the label on the bottle — every brand below is stamped by the same plants and reads the same way.

Other code formats

Not sure which code on the pack is the batch code? How to Find Your Batch Code