Coffee Freshness Window Checker
Estimate a coffee bag’s roast-date freshness window with adjustments for brewing style and grind plus storage exposure and daily use.| Marker | Date / age | Stage | Use guidance | Copy |
|---|---|---|---|---|
| {{ row.marker }} | {{ row.when }} | {{ row.stage }} | {{ row.guidance }} |
| Check | Reading | Signal | Action | Copy |
|---|---|---|---|---|
| {{ row.check }} | {{ row.reading }} | {{ row.signal }} | {{ row.action }} |
Roasted coffee changes from the moment it leaves the roaster. Carbon dioxide escapes, delicate aroma compounds dissipate, and oxygen, moisture, and heat gradually push the flavor toward flatness or rancidity. Brewing too early can also be disappointing: a very fresh coffee may release enough gas to disturb wetting, extraction, or espresso flow.
A freshness window is therefore more useful than a single expiry date. The resting period allows early degassing to settle; the peak window marks the modeled period of strongest flavor potential; the good window remains suitable for everyday brewing; and the fading period signals that aroma loss is becoming more likely. These are tasting guides, not food-safety limits.
The calendar alone cannot describe every bag. The useful period changes with:
- Brewing method: espresso often benefits from a longer rest than filter or immersion brewing because gas affects puck resistance and shot consistency.
- Roast level: darker roasts generally degas faster and are modeled with shorter windows than lighter roasts.
- Bean state: grinding increases exposed surface area, so ground coffee loses freshness much faster than whole beans.
- Storage and handling: a tight, opaque seal limits oxygen and light exposure, while repeated opening, warmth, and humidity shorten the modeled window.
Taste remains the final test. Origin, roast development, package atmosphere, water, grinder, and recipe can all change how a coffee behaves. A date-based estimate helps plan when to open and finish a bag, but it cannot measure the aroma still present in those particular beans.
How to Use This Tool:
Start with the dates and brewing context, then describe the exposure that the coffee has actually experienced.
- Enter the Roast date and the Check date. A future check date is useful for planning; a check date before roasting produces a not-yet-roasted status.
- Choose the main Brew method, nearest Roast level, and current Bean state. Use the ground option that most closely matches the bag rather than the grind you intend to make later.
- Select the real Storage and Storage climate, then estimate Opens per day. Enter zero openings only for coffee that is still sealed.
- Choose a Freshness stance. Balanced is the practical baseline; Conservative closes the later windows sooner, while Generous extends them.
- Optionally enter Bag remaining and Daily use. Supply both values or leave both at zero so the finish-date comparison is meaningful.
- Read the current stage and freshness score, then check the Window plan for dates and the Storage review for handling changes that could protect the remaining coffee.
Interpreting Results:
The stage is the primary planning result. Too fresh and Resting suggest waiting or tasting cautiously; Peak window and Good window are the main use periods; Fading and Stale / replace soon call for faster use or a less aroma-sensitive recipe.
The freshness score is a smooth indicator derived from the same window boundaries. It is not a laboratory measurement or a percentage of flavor remaining. Compare it with the cup: if aroma, sweetness, extraction, or espresso flow disagree with the estimate, trust repeatable brewing observations and review the storage inputs.
When use-pace inputs are active, Finish before good end answers a planning question rather than a quality guarantee. A bag can still taste acceptable after that date, and poor storage can make it fade sooner.
Technical Details:
The calculation is a built-in planning heuristic. It begins with method-and-roast windows, then adjusts their later boundaries for grinding, storage, room conditions, opening frequency, and the selected stance. It must not be presented as an industry shelf-life standard.
Formula Core
Repeated opening creates a penalty in modeled days. One opening per day is the neutral point; only additional openings add a penalty.
Here o is whole-number openings per day, E is the exposure factor for the bean state, and S is the opening scale for storage. The result remains at full precision until each window boundary is rounded to the nearest day.
The peak end is built from the adjusted peak start, the base peak span, and the selected factors. The good and fading ends use the same pattern with their own spans and storage shifts.
A sealed bag with zero openings receives a two-day credit. Every later boundary is also forced to remain at least one day after the previous boundary, so extreme exposure cannot reverse the timeline.
Base windows and adjustments
The unadjusted windows are calendar days after roasting. Peak end, good end, and fade end are inclusive after the later adjustments are applied.
| Method | Roast | Rest | Peak | Good end | Fade end |
|---|---|---|---|---|---|
| Filter / immersion | Light | 5 to 10 | 10 to 28 | 42 | 60 |
| Filter / immersion | Medium | 3 to 7 | 7 to 24 | 38 | 52 |
| Filter / immersion | Dark | 1 to 4 | 4 to 16 | 28 | 40 |
| Espresso | Light | 10 to 16 | 16 to 38 | 52 | 70 |
| Espresso | Medium | 7 to 12 | 12 to 32 | 46 | 60 |
| Espresso | Dark | 4 to 8 | 8 to 22 | 34 | 46 |
| Moka pot | Light | 7 to 13 | 13 to 32 | 46 | 62 |
| Moka pot | Medium | 5 to 10 | 10 to 28 | 40 | 54 |
| Moka pot | Dark | 3 to 7 | 7 to 20 | 32 | 44 |
Grinding scales each base peak, good, and fading span before later day shifts are added. Exposure and opening scale affect only the repeated-opening penalty; storage risk is reported separately.
| Setting | Span factor | Exposure | Peak / good / fade shift | Open scale | Risk |
|---|---|---|---|---|---|
| Whole beans | 1.00 | 1.00 | — | — | 0 |
| Ground coarse | 0.44 | 1.15 | — | — | 2 |
| Ground medium | 0.34 | 1.30 | — | — | 3 |
| Ground fine | 0.26 | 1.45 | — | — | 4 |
| Unopened valve bag | — | — | +3 / +8 / +12 days | 0.45 | 0 |
| Resealed roaster bag | — | — | +1 / +3 / +5 days | 0.75 | 1 |
| Airtight opaque container | — | — | 0 / 0 / 0 days | 0.85 | 1 |
| Clear jar | — | — | −4 / −7 / −9 days | 1.00 | 3 |
| Loose or non-airtight bag | — | — | −7 / −12 / −16 days | 1.15 | 4 |
| Frozen sealed portions | — | — | +6 / +55 / +72 days | 0.35 | 0 |
Climate adds the same day shift to the peak, good, and fade ends: Cool Dark Pantry +4, Normal Room 0, Warm Counter −7, and Humid Kitchen −10. Their risk points are 0, 1, 3, and 4 respectively. Conservative shifts peak, good, and fade by −2, −5, and −7 days; Balanced adds zero; Generous adds +2, +5, and +8. None of the three stances changes the rest boundary.
Valid numeric inputs are 0 to 24 whole openings per day, 0 to 5,000 g remaining, and 0 to 1,000 g per day. Finish days equal remaining grams divided by daily grams, rounded up; the pace check activates only when both values are greater than zero.
Rule Core
Age is the whole-calendar-day difference between the check date and roast date. Boundary ownership is exact:
| Stage | Age rule | Meaning |
|---|---|---|
| Not roasted yet | age < 0 | The check date is before the roast date. |
| Too fresh | 0 to before rest start | Early degassing dominates the model. |
| Resting | rest start to before peak start | The coffee is approaching its modeled peak. |
| Peak window | peak start through peak end, inclusive | The strongest modeled use window. |
| Good window | after peak end through good end, inclusive | Still comfortably within the modeled use period. |
| Fading | after good end through fade end, inclusive | Aroma decline is increasingly likely. |
| Stale / replace soon | age > fade end | Past the final modeled boundary. |
The score follows piecewise linear segments across those boundaries, is rounded to a whole percent, and bottoms out at 8%. The storage-risk total separately adds fixed bean, storage, and climate points plus 0.5 for each opening beyond the first; it is a handling signal, not the freshness score.
Limitations:
No roast-date model can observe the actual package atmosphere, roast development, bean density, oxygen ingress, temperature history, grinder retention, or sensory result. The built-in windows are practical assumptions and may not match a roaster's own rest guidance.
- Use the roaster's advice when it is specific to the coffee and brewing method.
- Do not treat Stale / replace soon as a food-safety verdict.
- Frozen sealed portions assume portioning that avoids repeated thawing and condensation; storage mistakes can erase the modeled benefit.
Worked Examples:
A medium filter roast on day 10
For whole beans in an airtight opaque container at normal room conditions, one opening per day and the Balanced stance leave the base boundaries unchanged: peak is day 7 through day 24, good extends through day 38, and fading ends on day 52. A check on day 10 lands in Peak window with a freshness score of 95%. If 300 g remain and use is 20 g per day, the modeled finish is 15 days later, still before the good-window end.
References:
- What Is the Shelf Life of Roasted Coffee? A Literature Review on Coffee Staling, Specialty Coffee Association, 2012.
- Storage and shelf life, National Coffee Association.
- The diffusion kinetics of carbon dioxide in fresh roasted and ground coffee, Journal of Food Engineering, 2003.