Say how it tasted. Get the next grind.

Coffee Shot Timer times your espresso, logs it against the bean, and turns “sour” or “bitter” into the grinder setting for your next shot.

  • Free
  • Works offline
  • Open source
  • Android 7+
Try it: a new bag, dialed in shot by shot Example
Shot chart Extraction time from 10 to 45 seconds against brew ratio from 1:1.5 to 1:3. The target box covers 25 to 30 seconds and 1:2.0 to 1:2.5. Shots are plotted as numbered dots.

Shot 1 Grind 3.0 · 18 g → 38 g (1:2.1) · 19 s

How did it taste? Pick one to see the next grind.

Example grinder with 0.1 steps. The shots are made up; the recommendations use the app’s own rules.

No magic. Three rules and your grinder’s step size.

Taste decides the direction. When you skip the taste, the timer decides. How far the shot missed 25 to 30 seconds decides how big the step is.

The three rules laid on the extraction time axis from 10 to 45 seconds.

Grind finer

Tastes sour, or runs under 25 s

The water ran through too easily and left the sweetness behind. A finer grind slows it down.

“Try grinding finer”

Keep it

25 to 30 s, tastes right

The setting is stored with the bean for the next time you open that bag.

“Keep current setting”

Grind coarser

Tastes bitter, or runs over 30 s

The shot ran long and pulled out the harsh stuff. A coarser grind lets the water through faster.

“Try grinding coarser”
How far to turn
Time outside 25 to 30 sRecommendation
Up to 3 seconds1 step
4 to 6 seconds2 steps
More than 6 seconds3 steps

You set your grinder’s scale and step size once during setup, so “1 step” means a click on a stepped grinder or 0.1 on a stepless dial. The app never suggests a setting outside your grinder’s range.

Every bag keeps its own dial.

Switch from the Ethiopian to the Colombian and the app switches with you: last grind, roast date and the next-shot recommendation come along with the bean.

Next-shot guidance
The last recommendation is saved per bean and waiting when you come back to it.
Last grind setting
Shown on the bean, so a re-opened bag starts where you left off.
Roast date
Days since roast next to the bean name while you pull the shot.
Package photo
Snap the bag so you recognise it when you buy it again.
Dial-in status
New Bean, Experimenting, Needs Work or Dialed In, from your recent shots with that bean.
Timer screen with the bean Ethiopian Yirgacheffe selected, 33 days since roast, grinder setting 48.9, a green ring at 29 seconds and 17 g to 34 g.
Timer. Bean, roast age and grind sit above the ring.
Edit bean screen with roast date, tasting notes, grinder setting 2.8 and a photo of the coffee bag.
Bean. Roast date, notes, grind and a photo of the bag.

After the shot, the numbers explain themselves.

Each shot gets a score out of 100 and a plain sentence about what happened. Over a few days you see whether the bag is getting better or drifting.

Shot details: ratio 1:2.2, 18 g to 40 g in 29 seconds, taste Perfect, score 100 out of 100 with a breakdown and the line: Perfect taste. Time was in the sweet spot.
Shot details. Score breakdown and what happened.
Analysis screen with an overall quality gauge at 72 and a recent trends line chart.
Analysis. Overall quality and the trend across recent shots.
Shot history for Colombian Supremo: a summary saying 3 of the last 5 shots were perfect, then shots with ratio, time, grinder setting, taste and a Dialed in badge.
History. Every shot with ratio, time, grind and taste.
Filter shots sheet with grinder setting, brew ratio range, extraction time range and an option for optimal extraction time only, 25 to 30 seconds.
Filters. Narrow history by grind, ratio or time.

Nothing leaves your phone.

The app has no internet permission. That isn’t a setting you can forget to turn off: Android won’t let it go online.

Internet accessNoneNo network permission in the app manifest.
AccountNoneOpen it and start pulling shots.
Tracking and analyticsNoneNo analytics or crash-reporting libraries.
Permissions2Camera for bean photos, vibration for timer feedback.
PriceFreeNo ads, no subscription.

Built in the open.

MIT licensed and developed on GitHub. Report a bug, suggest a rule, or help translate. The app ships in English and German.

Open the bag. Pull a shot. Ask what’s next.

Free on Google Play for Android 7 and newer.

Get it on Google Play