| Item | Recommendation | Details | Copy |
|---|---|---|---|
| {{ row.item }} | {{ row.value }} | {{ row.detail }} |
| Action | When | Execution note | Copy |
|---|---|---|---|
| {{ row.action }} | {{ row.when }} | {{ row.note }} |
| Brew marker | Current value | Copy |
|---|---|---|
| {{ row.label }} | {{ row.value }} |
Coffee grind size is the size of the particles left after grinding, and it is one of the main controls behind flow rate and extraction. When the particles are too small, water meets too much resistance and the cup can drift toward bitterness or dryness. When they are too large, water passes too quickly and the brew can taste thin, sharp, or underdeveloped.
This chooser turns that tradeoff into a practical starting point. It uses your brew method, the brew time you want, and optionally the brew time you actually measured to estimate a particle size in microns, label the grind band in plain language, and map that estimate to a grinder dial move when you provide your grinder range.
That makes it useful when you open a new bag, switch from one brewer to another, or try to rescue a cup that missed the mark. A pour-over that ran fast and tastes sour calls for a different response from an espresso shot that dragged and tastes bitter, and the tool keeps those corrections tied to the method you are actually using.
The micron figure should be read as a calibration aid, not as a universal number that transfers perfectly between grinders. Burr geometry, roast level, dose, brew ratio, agitation, filter paper, and water chemistry still shape the result, so the real value of the tool is consistency: it gives you a repeatable baseline for your own setup and helps you move in the right direction with fewer guess-and-check brews.
All calculations stay in the browser, so you can compare scenarios and export the guidance without sending brew data to a server. Treat the recommendation as a dial-in guide that narrows the search space, then confirm it with taste and a measured brew time.
Start with the brew method and the time you want the brew to land. The tool keeps separate timing and micron ranges for pour-over, Chemex, AeroPress, espresso, moka pot, French press, and cold brew concentrate, so the same target time does not produce the same answer across different brewers. A twenty-eight second espresso and a four minute press pot sit in completely different particle ranges, and the presets reflect that.
If you already brewed a cup, add the actual time as well. The chooser compares measured time with target time, then nudges the grind finer when the brew finished too quickly and coarser when it ran too long. That correction is capped so a single extreme brew cannot push the recommendation into unrealistic territory.
The taste check helps with the final adjustment. Sour and weak cups tighten the grind slightly, while bitter, harsh, or dry cups open it up. The water temperature field gives you a place to track your current brew temperature and pairs the result with a reminder that small temperature moves, usually one to two degrees at a time, can support a grind change when the cup tastes unbalanced.
The advanced grinder fields matter when you want the answer translated into your own hardware. By entering the finest and coarsest dial numbers and an estimated burr gap range, you get a dial target and an approximate click move relative to your current setting. That is especially useful when you already know your grinder but want a cleaner, more method-aware way to choose the next adjustment.
In practice, the best rhythm is simple: choose a method, set a realistic target time, brew once, taste carefully, then change one variable at a time. This tool is strongest when it is part of that loop rather than a replacement for it.
The script normalizes time inputs into seconds, picks the active method preset, and converts the requested brew time into a base particle-size estimate. Each preset stores a target time range, a default target, a micron range, a timing slack window, and a reference water temperature. The base estimate is calculated with a linear interpolation: as the target time moves toward the slow end of the method range, the recommendation moves toward the finer end of the micron range.
If an actual brew time is present, the tool computes the relative error between actual and target time and applies a proportional correction capped at plus or minus 75 percent. Taste feedback is applied after that time correction. The final result is then clamped to a safety envelope that allows some movement outside the preset range without letting the recommendation become absurdly fine or coarse.
Water temperature is not folded into the micron formula itself. The value you enter is displayed in the summary, guidance table, brew trace, and export payload, while the recommendation text uses it as a practical reminder for small follow-up changes. That distinction matters because the tool is primarily a grind selector with taste-aware coaching, not a full extraction model.
| Method | Target range | Default target | Micron range | Timing slack | Reference water |
|---|---|---|---|---|---|
| Pour-over (V60 or flat-bed) | 150 to 210 sec | 180 sec | 550 to 750 | 18 sec | 94 deg C |
| Chemex | 225 to 285 sec | 255 sec | 800 to 980 | 20 sec | 93 deg C |
| AeroPress (classic) | 90 to 150 sec | 120 sec | 480 to 640 | 15 sec | 90 deg C |
| Espresso (1:2 ratio) | 25 to 32 sec | 28 sec | 230 to 360 | 4 sec | 93 deg C |
| Moka pot | 120 to 210 sec | 170 sec | 420 to 600 | 14 sec | 92 deg C |
| French press | 210 to 300 sec | 240 sec | 900 to 1150 | 20 sec | 95 deg C |
| Cold brew concentrate | 43200 to 64800 sec | 54000 sec | 950 to 1150 | 1200 sec | 20 deg C |
| Taste cue | Multiplier | Effect |
|---|---|---|
| Balanced or unsure | 1.00 | Leaves the grind estimate unchanged. |
| Too sour or sharp | 0.94 | Moves the recommendation finer. |
| Too bitter or dry | 1.06 | Moves the recommendation coarser. |
| Thin or weak | 0.97 | Makes a smaller move finer. |
| Dry or astringent | 1.05 | Makes a smaller move coarser. |
| Band | Lower bound | Upper bound | Typical note |
|---|---|---|---|
| Extra fine | 0 | 259 | Turkish powder |
| Fine | 260 | 359 | Espresso range |
| Medium-fine | 360 | 519 | Paper filter sweet spot |
| Medium | 520 | 719 | Versatile drip profile |
| Medium-coarse | 720 | 899 | Thicker paper or immersion |
| Coarse | 900 | 1149 | Press-friendly |
| Extra coarse | 1150 | No upper bound | Cold brew range |
The grinder dial target is a separate translation layer. The tool maps the final micron estimate into the burr-gap range you provide, then scales that value across your dial minimum and maximum so it can recommend a click move relative to the current setting. If your grinder calibration is rough, the micron estimate will usually be more trustworthy than the click count.
The headline answer is the grind recommendation itself: a grind band, an estimated particle size in microns, and a grinder-dial suggestion when calibration data is available. That combination tells you both the general direction and the approximate magnitude of the move.
The time window badge shows what counts as close enough for the next brew. It is centered on your chosen target time and widened by a method-specific slack value, so espresso gets a narrow window while long immersion methods get more breathing room.
The taste focus badge summarizes the correction logic in plain language. It does not replace tasting the cup, but it does help you avoid common overcorrections, such as making a sour brew dramatically finer when a small move would be more sensible.
| Output area | What it shows | Best use |
|---|---|---|
| Grind Guidance | The main recommendation, time window, taste focus, and water reminder. | Use this as the practical answer for the next brew. |
| Dial-In Playbook | A short action list organized by when to adjust and what to check next. | Useful when you want a simple sequence instead of a single number. |
| Brew Trace | A compact record of method, target time, actual time, delta, grind, dial move, taste cue, and temperature. | Helpful for logging one brew and comparing it with the next. |
| JSON | The inputs, recommendation fields, and fix actions in structured form. | Useful for storing or reusing the result in another workflow. |
A fast, sour pour-over is a good example of the tool at its most useful. With the default pour-over preset, a target of 3.0 minutes and an actual time of 2.5 minutes produce a recommendation of about 565 microns, which lands in the Medium band. Because the cup tastes sour, the guidance also leans toward a slightly finer move and a small temperature increase.
A starting-point cold brew behaves differently. If you choose cold brew concentrate and leave the actual time blank, the tool simply maps the target steep into the coarse preset range. A target near the default 15-hour mark yields a recommendation around the middle of the cold-brew range, which is useful when you want a stable first batch before making smaller texture and extraction adjustments.
The contrast between those examples explains the tool's design: short brews with fast feedback need tighter, more reactive changes, while long immersion brews benefit from a calm starting estimate and slower iteration.
No. It is an estimate tied to the method presets and your optional grinder calibration. Different burr sets can produce very different particle distributions at the same nominal gap.
No. Leave it blank when you want a first-pass recommendation. Add it after the first brew if you want the time-correction step to refine the answer.
No. The temperature field is tracked and shown in the output, but the script does not feed it into the micron calculation. It is there to support practical follow-up decisions.
Espresso sits in a tight time range with high resistance and pressure, so a small shift in particle size can move shot time quickly. The narrow timing window in the preset reflects that sensitivity.
Usually not. Dial numbers are only meaningful inside the range you entered for your own grinder. The micron estimate is the more portable part of the result.
No. It generates the current recommendation, trace rows, and exports in the browser, but it does not keep a server-side log of your sessions.