Espresso Tuning Lab: Too Sour or Too Bitter — Which Knob First?
Drag grind size, water temperature and pressure, and watch extraction yield, flow rate and the sour–bitter balance respond. A simplified teaching model for finding the right direction.
When an espresso tastes sour or bitter, the beans usually aren’t the problem. The water pulled too little or too much out of the grounds. That share is called extraction yield, and a commonly cited comfortable range is roughly 18% to 22%. Below it, the acids that dissolve first never get balanced by the sweetness that comes after. Above it, the harsh compounds that dissolve last end up in your cup too.
The machine above moves with your sliders. Grind finer and the particles in the puck shrink, the flow slows, and the water stays in contact longer. Raise the temperature and the boiler glows; things dissolve faster. Turn up the pressure and the water is pushed harder — but past about 9 bar the puck packs tighter, and most of that extra force never becomes flow. Press ”▶ Pull” to watch the cup fill.
The mistake I make most often is turning two knobs at once, then not knowing which one did the work. So change one thing at a time: if it’s sour, grind one step finer; if it’s bitter, one step coarser; save temperature and pressure for last. Try the “Too bitter” preset. When the grind is too fine and the pressure too high, water cracks a channel through the puck, and the same shot turns out both sour and bitter. Grinding even finer only makes it worse.
One caveat up front: this is a teaching model I built from a few simplified formulas. It shows which direction to adjust, not a precise prediction. A real shot also depends on origin, roast level, freshness and your machine.
The one thing to take with you
Change one variable at a time. Not just for coffee: the next time you tune anything — your sleep, a budget, a piece of code — change one thing, check whether the result moved the way you expected, then move on to the next.
Source
// 粉量 18 g、目標出杯 36 g、預浸 4 秒
// 壓力超過 9 bar 粉餅被壓得更密,多出的壓力只有一部分變成流速
Peff = pressure <= 9 ? pressure : 9 + (pressure - 9) * 0.35
// 達西定律簡化:流速 ∝ 粒徑平方 × 壓力
flow = 1.45 * (grind / 300) ** 2 * (Peff / 9) // g/s
shotTime = 4 + 36 / flow // 秒(含預浸)
// 萃取:越細表面積越大、越熱溶得越快,接觸越久越接近上限
rate = 0.0447 * (300 / grind) * Math.exp(0.045 * (temp - 93))
EYmax = 28
EY(t) = EYmax * (1 - Math.exp(-rate * t)) // t 為秒
ey = EY(shotTime) // 萃取率 %
tds = ey * 18 / 36 // 濃度 %
// 通道效應:太細又太高壓,水會鑽出裂縫
channel = clamp((240 - grind) / 60, 0, 1) * clamp((pressure - 8.5) / 2.5, 0, 1)
eyEff = ey * (1 - 0.15 * channel)
// 酸苦:-1 = 很酸,0 = 平衡,+1 = 很苦
balance = clamp((eyEff - 20) / 4 + (temp - 93) * 0.06, -1, 1)