← Back to articles
espressoextractiongrindratiotemperaturepressuresimulator

How the simulator models espresso extraction

Complete guide to all espresso simulator parameters: grind, ratio, temperature, pressure and water hardness. How they affect the extraction index, the flavor radar and the extraction map.

Espresso in the simulator

Espresso was the first method implemented in coffee-sim and serves as the reference model. It has the most available parameters: grind, ratio, temperature, pressure and water hardness, plus the cross-method modifiers for roast and process.

The simulator models espresso as a concentrated pressure-driven extraction process. It does not reproduce the real physics of an espresso machine group head, but it does capture the dominant relationships between brewing variables and the result in the cup.

Model note: the simulator does not measure real extraction, but a heuristic index (0–100) that combines the brewing variables. That index determines both the position on the extraction map and the shape of the flavor radar. It is not a TDS percentage or a real extraction yield (EY).


Simulator variables: espresso

Grind (0–100)

Grind is the primary extraction driver in espresso. In the simulator, 0 is very coarse and 100 is very fine.

A finer grind increases the coffee's contact surface area with water and increases the hydraulic resistance of the puck. Both effects raise the estimated extraction. A coarser grind has the opposite effect: less extraction, a more acidic and lighter cup.

In real espresso, grind is the most sensitive adjustment variable because small changes have a large effect. The simulator reflects this: grind has the highest weight in the extraction calculation (direct contribution of up to 40 points on the 0–100 index).

Starting point: values between 55 and 75 to explore the balanced zone with standard ratios.

Ratio (1:x)

The ratio expresses the relationship between the coffee dose (fixed at 18 g in this simulator) and the drink produced in the cup. A 1:2 ratio produces 36 g of drink; a 1:2.5 ratio produces 45 g.

  • Short ratio (< 1:1.8): the simulator classifies this as ristretto. More intensity, more body, less clarity and openness. Sweetness tends to drop slightly.
  • Standard ratio (1:1.8–1:2.5): classic espresso zone. Better balance between intensity, sweetness and clarity.
  • Long ratio (> 1:2.5): lungo. Gains clarity and acidity, but the risk of bitterness and astringency increases if extraction is high.

The ratio also modulates body: shorter ratios raise body (the simulator applies an explicit ristretto bonus to body). A longer ratio always shifts the point to the right on the extraction map.

In the model, ratio does not only dilute the drink: it also increases the extraction index by extending the water–coffee contact. A longer ratio means more water passing through the same puck, which extracts more solubles even at equal grind and temperature.

Temperature (advanced, 88–98 °C)

Temperature acts as a secondary modifier. Its effect on the extraction index is softer than grind and ratio, but it is real.

  • High temperature (> 94 °C): extracts faster and more. Slightly raises the extraction index. Increases bitterness and astringency in the radar. Reduces perceived acidity.
  • Low temperature (< 91 °C): extracts less. More pronounced acidity, lower bitterness.

The model range is 88–98 °C. The default is 93 °C, the usual zone for medium roasts. For light roasts, baristas often go up to 93–96 °C to compensate for lower solubility.

Pressure (advanced, 6–10 bar)

Pressure is a second-order modifier in the simulator. It affects the extraction index with lower weight than grind and ratio, but has a clear impact on the sensory radar.

  • High pressure (> 9 bar): raises body, bitterness and astringency.
  • Low pressure (< 8 bar): reduces body and bitterness. May result in a flatter cup.

9 bar is the historical espresso standard; the model takes that value as the reference point.

Water hardness: GH and KH (advanced)

GH (general hardness, magnesium + calcium) modulates body, sweetness and overall extraction efficiency. High GH (> 7) boosts body and sweetness. Very low GH can produce flat cups.

KH (carbonate hardness, alkalinity) has an inverse effect on perceived acidity: high KH buffers acids and reduces acidity in the radar. Low KH leaves acids more exposed.

Model range: GH 1–12, KH 0–8. Defaults: GH 6, KH 3 (moderately mineralized water).

Roast

Roast does not directly affect the extraction index, but shifts the thresholds for states:

  • Light: the balanced zone starts higher (extraction ≥ 42) and ends higher (≤ 70). Requires more extraction to reach balance. Introduces more acidity and astringency in the radar.
  • Medium: balanced zone 40–66. More sweetness and body than light.
  • Dark: narrower balanced zone, starts earlier (38–62). More bitterness and body from the start.

Process

Process modulates the sensory radar without affecting the extraction index:

  • Washed: more acidity and astringency in the radar.
  • Natural: more sweetness and fruity acidity, less astringency.
  • Honey: intermediate, boosted sweetness and more body.

How it reflects in the extraction map

The extraction map positions the recipe in a two-dimensional space: the horizontal axis is ratio and the vertical axis is grind.

  • Moving the grind finer shifts the point upward (more extraction).
  • Moving the ratio longer shifts the point to the right.
  • Color zones reflect the tendency: blue = under-extraction, green = balance, red = over-extraction.
  • Temperature and pressure act as secondary adjustments that slightly shift the point without changing its base position.

How it reflects in the flavor radar

The radar does not represent isolated flavors, but the overall balance of the simulated extraction. Each axis reflects how the extraction index and the modifiers for roast, process and advanced parameters combine in the specific espresso you have configured.

The radar shows the five sensory axes: acidity, sweetness, bitterness, astringency and body. The shape of the radar changes with each variable:

  • Low extraction: high acidity, low sweetness, low bitterness.
  • Extraction in balanced zone: maximum sweetness (peak at ~E=52), moderate acidity.
  • High extraction: bitterness and astringency rise, sweetness drops.
  • Short ratio: higher body, slightly lower sweetness.
  • Dark roast: radar shifted toward bitterness and body.
  • Natural process: radar shifted toward sweetness.

Typical combinations and common readings

| Scenario | Symptom in radar | Why it happens | Suggested adjustment | |---|---|---|---| | High acidity, light body | Under-extracted | Coarse grind or short ratio → low index → high acidity | Grind finer or increase ratio | | Excessive bitterness | Over-extracted | Very fine grind or very long ratio → high index | Grind coarser or reduce ratio | | Flat body | Low extraction or very long ratio | Long ratio dilutes without raising extraction enough | Raise grind or shorten ratio | | Maximum sweetness | Balanced zone (~E=52) | The model places the sweetness peak at E=52 | Keep parameters | | Marked ristretto | Ratio < 1:1.8 | Short ratio triggers the engine's explicit body bonus | High body, slightly lower sweetness |


Balanced, under-extracted and over-extracted in espresso

Under-extracted: the extraction index falls below the roast threshold (< 40–42 depending on roast). The simulated cup will show high acidity, low sweetness and light body. In real practice: watery, sour cup, lacking sweetness.

Balanced: extraction within the optimal zone (40–66 for medium roast). Sweetness peaks, acidity and bitterness are balanced. This is the target zone for any adjustment.

Over-extracted: extraction exceeds the high threshold. Bitterness and astringency rise markedly. In real practice: bitter, dry, astringent cup.


Technical section: how the simulator models espresso

General heuristic

The espresso engine calculates a normalized extraction index between 0 and 100 as a weighted sum of linear contributions:

  • Normalized grind (0–100 → 0–1) contributes up to 40 points.
  • Normalized ratio (1.0–3.2 → 0–1) contributes up to 22 points.
  • Grind × ratio interaction contributes up to 10 additional points.
  • Normalized temperature (88–98 °C) contributes ±6 points around the midpoint.
  • Normalized pressure (6–10 bar) contributes ±5 points around the midpoint.
  • The starting point is 18 points (minimum extraction with all parameters at zero).

The result is clamped to the range [0, 100].

Sensory projection

The five sensory axes are calculated as functions of the extraction index with additive biases by roast, process, temperature, pressure and water:

  • Acidity: descending function of E (more extraction = less perceived acidity). Light roast and washed process raise it. High KH lowers it.
  • Bitterness: ascending function of E. Dark roast, high temperature and high pressure increase it.
  • Astringency: ascending function of E, with contributions from high pressure and dark roast.
  • Sweetness: Gaussian bell function peaking at E=52. Standard ratio and high GH reinforce it.
  • Body: ascending function of E with an explicit bonus for short ratios (ristretto). High GH and high pressure reinforce it.

Estimated time

The estimated shot time is calculated as a linear function of grind and ratio (finer = more time; longer = more time), with a roast bias (light +2 s, dark -2 s). It is an informational output and does not feed back into the extraction calculation.

Simplifications and model limits

  • The coffee dose is fixed at 18 g. The simulator does not model the effect of changing the dose.
  • The model does not reproduce real flow dynamics (channeling, puck distribution, pre-infusion).
  • The interaction between temperature and pressure is captured linearly; in reality their interaction is more complex.
  • Water effects assume uniform mineralization; specific water profiles (sodium, bicarbonate, etc.) are not modeled.
  • The balanced/under/over states are based on calibrated heuristic thresholds, not physical TDS or extraction yield (EY) measurements.

The model prioritizes interpretability over physical precision: the goal is for the user to understand how to adjust variables and develop extraction intuition, rather than exactly reproducing the behavior of a real espresso.

Explore the concepts from this article directly in the simulator.

Try in the simulator