In food packaging, a Julian date code is the day of the year written as three digits: January 1 is 001, February 1 is
032, and December 31 is 365, or 366 in a leap year. It usually comes with the year in front, as one digit (YDDD,
so 6273 is the 273rd day of 2026, September 30) or two (YYDDD, 26273). Read it by finding the day number on a chart,
and in Excel turn a date into a code with =A2-DATE(YEAR(A2),1,0). A free chart and converter are below.
The short version
- Day of year: 001 for January 1, counting up to 365 (366 in leap years).
- The common formats are DDD, YDDD and YYDDD. A letter or number after it is often a line, shift or plant.
- From March 1 on, a leap year's numbers are one higher. 2028 is the next leap year.
- Never assume a supplier's code: ask them how to read it, once, and write it down.
- In TaroStack, every lot carries its real date, whatever code you print. More below.
The formats you'll meet
| Code | Format | Means |
|---|---|---|
| 273 | DDD | The 273rd day of some year: September 30 in a normal year |
| 6273 | YDDD | Day 273 of a year ending in 6: September 30, 2026 |
| 26273 | YYDDD | Day 273 of 2026 |
| 6273A | YDDD + letter | The same day, line or shift A |
| 2736 | DDDY | Day 273, year ending in 6: the year at the end instead |
The one-digit year saves space and repeats every ten years, which is fine for anything with a shelf life measured in months. The two-digit year never leaves you guessing.
The best-known Julian code in the US is on egg cartons. Cartons with the USDA grade shield must show the pack date as a three-digit number running from 001 for January 1 to 365 for December 31 (USDA FSIS). The same page notes that cans and boxes often carry "closed or coded" dates, a series of letters and numbers for the maker's own tracking, which is where most Julian codes on your ingredient cases come from.
How to read one
- Find the three digits that look like a day number: 001 to 366.
- Find the year digit or digits next to it, usually right before.
- Look the day up on a chart for the right kind of year, normal or leap.
- Anything left over is probably a plant, line, shift or batch. Ask the supplier if it matters.
Here's a quick chart of where each month starts in a normal year, and in a leap year:
| Month | 1st is day (normal year) | 1st is day (leap year) |
|---|---|---|
| January | 001 | 001 |
| February | 032 | 032 |
| March | 060 | 061 |
| April | 091 | 092 |
| May | 121 | 122 |
| June | 152 | 153 |
| July | 182 | 183 |
| August | 213 | 214 |
| September | 244 | 245 |
| October | 274 | 275 |
| November | 305 | 306 |
| December | 335 | 336 |
So 273 is the day before October 1 in 2026: September 30. In 2028 the same date is 274.
Be careful with codes that might be a best-by date rather than a pack date. A case of coconut milk coded 6273 could have been canned on September 30, 2026, or be best by then. The difference is two years of shelf life, so if the code is your only date, ask. (How the dates meant for customers are written is in best by date format.)
Writing your own Julian lot codes
A Julian code makes a short, sortable lot code for what you make. Here's one for a batch of chips made on September 30, 2026:
C 6 273 A
| | | +-- first batch of the day
| | +------ day 273 (September 30)
| +---------- 2026
+------------- chips
C6273A sorts in date order and fits on the smallest pouch. The catch is that nobody in the kitchen can read it without a chart, and the person answering a customer's call may not have one, so print the best-by date in words next to it. There's more on choosing a lot code format in how to create lot numbers, and on printing it in lot number on food packaging.
In Excel
With a date in A2:
Day of year =A2-DATE(YEAR(A2),1,0)
YDDD =RIGHT(YEAR(A2),1)&TEXT(B2,"000")
YYDDD =RIGHT(YEAR(A2),2)&TEXT(B2,"000")
DATE(YEAR(A2),1,0) is the last day of the previous year, so the subtraction counts days into this one, leap years
included. TEXT(B2,"000") keeps the leading zeros: day 5 becomes 005.
To turn a YYDDD code in F2 back into a date:
=DATE(2000+LEFT(F2,2),1,RIGHT(F2,3))
Excel lets the day run past the end of January, so DATE(2026,1,273) is September 30. Keep codes as text in the sheet
so a code starting with 0 doesn't lose it.
Download the Julian date chart and converter. It has the converter both ways and a full day-of-year chart for 2026 and for 2028, the next leap year, ready to print. It's an ordinary Excel file with no macros, and it works in Google Sheets, LibreOffice and Numbers.
Where this stops working
A Julian code is a way of writing a date, and that's its weakness. Every time someone has to turn it back into a date, at receiving, at the shelf, at the mixer, they can get it wrong, especially in the leap-year months. And knowing a case was packed on day 273 doesn't tell you its best-by date unless you also know the product's shelf life. The decoding lives in somebody's head, or on a chart taped to a wall that gets wet.
How TaroStack does it
TaroStack stores the dates themselves, so nobody decodes anything twice. When a case arrives, it's received as a lot with its supplier code (6273, CM61507, whatever it says) and its real use-by or best-by date, decoded once, at the door. If the case has a GS1-128 label, scanning it fills in the lot and the use-by date for you. From then on the lot that expires first is used first, and the date is kept as a date, not a code.
Your own lots work the same way. Record a batch with the lot code you print, Julian or not, and it carries its production and best-by dates, so a customer's call about C6273A is answered by searching the code, not by counting days on a chart. Lot labels print with the code and, if your item has a GTIN, a GS1-128 barcode carrying the use-by date and the lot.
Lots and expiry are on every plan, from $49 a month, and the first 30 days are free. If you'd like a hand setting up, ask, and we'll do it with you.
