Olive oil doesn't spoil the way food does; it oxidizes, losing its fruit and pepper and eventually going rancid. Light, heat and air speed that up, so the bottle matters as much as the oil: dark glass or a tin, filled with little headspace and kept cool, keeps it for well over a year; a clear bottle in a sunny window can turn it in months. Once a bottle is opened, the clock runs faster. In the example below, a California producer's sealed dark-glass bottles passed every test through day 480, and they say best by 360 days, a 25% margin. Below is what ends olive oil's shelf life, how the bottle changes it, the study, the date on the label, and a free template.
The short version
- Olive oil oxidizes and goes rancid; it doesn't spoil like food.
- Light, heat and air speed it up.
- Dark glass or tins, little headspace, a cool shelf.
- Peroxide value and free acidity measure the oxidation.
- Print the harvest date as well as the best-by date.
- Run a real-time study and leave a margin before the date.
- TaroStack gives every batch its date from the shelf life you set. More below.
What ends its shelf life
| What ends it | What happens | What slows it |
|---|---|---|
| Oxidation | Fruit and pepper fade; the oil goes flat, then rancid | Little headspace; sealed bottles; nitrogen in the tank |
| Light | Speeds oxidation and fades the color | Dark glass or tins; out of shop windows |
| Heat | Speeds every change | A cool shelf, away from stoves and sun |
| Air after opening | Each pour lets in more oxygen | Use within a few months; close the cap |
The grove's year is in olive oil business plan, and the margins on a bottle in olive oil profit margin.
How it's stored
| Stored | In the example's tests | On the label |
|---|---|---|
| Sealed dark glass, cool room | Passed every test through day 480 | Best by 1 year, with the harvest date |
| Sealed clear glass, shop window | Rancid odor by day 120 in a side study | Not used: dark glass only |
| Opened bottle | Not part of the study | "Use within 3 months of opening" |
The opened-bottle line is the producer's advice, not a test result; it's there because each pour lets in air.
An example: a shelf life study
Tule Fog Olive Co., the made-up olive oil producer near Oroville, California, I use in these examples, kept sealed 500 ml dark-glass bottles from one milling in a cool room and sent one to a lab at each pull:
| Test | Pass if | Day 0 | Day 120 | Day 240 | Day 360 | Day 480 | Day 600 |
|---|---|---|---|---|---|---|---|
| Fruit and pepper score, 1 to 9 | at least 6 | 9 | 9 | 8 | 7 | 6 | 5 |
| Rancid odor, 1 to 5 | at most 2 | 1 | 1 | 1 | 1 | 2 | 3 |
| Peroxide value, meq O2/kg | at most 20 | 6 | 8 | 10 | 13 | 16 | 21 |
| Free acidity, % | at most 0.8 | 0.25 | 0.27 | 0.3 | 0.33 | 0.36 | 0.4 |
| All pass? | Pass | Pass | Pass | Pass | Pass | Fail |
Everything passed through day 480; at day 600 the fruit had faded below 6, a rancid note showed, and the peroxide value passed 20, the limit for extra virgin. Taking a 25% margin off day 480 gives 360 days, a year from bottling. How the pulls and margin are planned is in shelf life testing.
The date on the label
Olive oil's date is a quality date, "Best by", and many producers print the harvest date too, because buyers look for it. In California, food made from July 1, 2026 that shows a date uses "BEST if Used by" for quality, in sell by date law, and how to write the date is in best by date format.
Get the template
Download the olive oil shelf life study template. One sheet: the product, the lot tested, the day it was made, how it's stored and the margin to leave; then each test with its limit and the result at each pull. It marks each pull pass or fail, finds the last day everything passed, takes the margin off, and gives the shelf life for the label and the date for a batch made today. It's an ordinary Excel file with no macros, and it works in Google Sheets, LibreOffice and Numbers.
Where this stops working
The study gives one date for one oil. Extra virgin and a lemon oil, bottles and restaurant tins, a single harvest bottled through the year: someone has to date each bottling and send the oldest out first.
How TaroStack does it
TaroStack gives every batch its date from the shelf life you set, and sends the oldest out first.
Dates from the shelf life. Each oil carries its shelf life in days, and each batch's lot gets its production date and the date that follows from it.
First-expired-first-out. Orders take the oldest lots first by default, and a shop can be set to take only stock with enough days left.
What's coming up. A forecast shows what will expire unsold and what it costs, and anything thrown out is recorded with its reason, expired or spoiled, so waste shows by item.
| The job | Spreadsheet | In TaroStack |
|---|---|---|
| The date on a batch | Worked out by hand | From the shelf life, on the lot |
| Which batch goes out first | Dates on tape | First-expired-first-out |
| Stock with enough days for a shop | Checked by hand | The customer's shelf-life rule |
| What expired last month | Not counted | Waste by reason |
Lots, dates, first-expired-first-out and the expiry forecast are on every plan, from $49 a month. The first 30 days are free, with no credit card. If you'd like a hand setting up, ask, and we'll do it with you.
