Butter is mostly fat with a little water, so it keeps for weeks to months in the cooler; what ends it is rancidity, as the fat oxidizes, and off flavors from smells it picks up in the fridge. Salted butter keeps longer than unsalted, and butter washed well at the churn keeps longer than butter with buttermilk left in it. Frozen, well wrapped, butter keeps for many months. In the example below, a Long Island creamery's refrigerated rolls passed every test through day 120, and they say best by 90 days, a 25% margin. Below is what ends butter's shelf life, how storage changes it, the study, the date on the label, and a free template.
The short version
- Rancidity and picked-up smells end butter's shelf life.
- Salted butter keeps longer than unsalted.
- Wash out the buttermilk at the churn.
- Wrap it in foil-lined paper; light and air speed rancidity.
- Freeze it for months.
- Run a real-time study, refrigerated, and leave a margin.
- 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 |
|---|---|---|
| Rancidity | Fat oxidizes; sour, stale flavor | Washed butter; foil-lined wrap; cold, dark storage |
| Picked-up smells | Butter takes on fridge odors | Sealed wrap; away from onions and fish |
| Leftover buttermilk | Spoils faster, souring the butter | Wash until the water runs clear |
| Light | Speeds oxidation; the surface yellows | Foil-lined paper or cartons |
Churning and washing are in how to make butter in bulk, and the wraps in how to package butter for sale.
How it's stored
| Stored | In the example's tests | On the label |
|---|---|---|
| Salted, foil-lined wrap, refrigerated | Passed every test through day 120 | Best by 90 days |
| Salted, wrapped, frozen | Passed after 9 months frozen and 30 days thawed in a side study | "Freezes well" |
| Unsalted, refrigerated | Off flavors by day 60 in the same side study | Best by 45 days |
The unsalted butter carries its own, shorter date; the two are never dated alike.
An example: a shelf life study
North Fork Creamery, the made-up creamery on Long Island, New York, I use in these examples, kept salted cultured butter rolls from one churn in the cooler and opened two at each pull:
| Test | Pass if | Day 0 | Day 30 | Day 60 | Day 90 | Day 120 | Day 180 |
|---|---|---|---|---|---|---|---|
| Flavor score, 1 to 9 | at least 6 | 9 | 9 | 8 | 7 | 6 | 5 |
| Rancid or off odor, 1 to 5 | at most 2 | 1 | 1 | 1 | 2 | 2 | 3 |
| Surface color change, 1 to 5 | at most 2 | 1 | 1 | 1 | 1 | 2 | 3 |
| All pass? | Pass | Pass | Pass | Pass | Pass | Fail |
Everything passed through day 120; at day 180 the flavor fell below 6 and an off odor came through. Taking a 25% margin off day 120 gives 90 days. How the pulls and margin are planned is in shelf life testing.
The date on the label
Butter's date is a quality date: "Best by" or "Best if used by", with "Keep refrigerated". 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. The margins on a roll are in butter profit margin.
Get the template
Download the butter 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 butter. Salted, unsalted and an herb butter, churns twice a week, and a co-op that wants 60 days left: someone has to date each churn, give the unsalted its shorter date, and send the oldest rolls 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 butter 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 co-op 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 co-op | 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.
