My V60
- Dose
- 15 g
- Water
- 250 g
- Temp
- 94 °C
- Ratio
- 1:16.7
- 01Pour to 50 g
- 02Pour to 150 g
- 03Pour to 250 g
Coffee recipes, in plain text
Write your recipe in a few simple lines. Brewlang turns it into a brew sheet you can scale, share and follow step by step.
That's a whole recipe. Add details when you need them ↓
Why Brewlang
No forms, no JSON. Just text.
V60 to siphon, every recipe reads the same.
Change the dose, every pour follows.
Written in grams and °C, read in ounces and °F.
It catches what doesn't add up, and tells you how to fix it.
Brew with
Real recipes
Pick a recipe, then edit the code: the brew sheet follows.
Aim to finish at3:30
Developers
A TypeScript library with no runtime dependencies. Diagnostics never throw.
import { check, toJson } from "brewlang"; const { recipe, diagnostics } = check(source); const json = toJson(recipe);The library →
The <brew-recipe> element renders the sheet, styled with plain CSS variables.
import "@brewlang/render/element"; <brew-recipe src="v60.brew" scale="1.5"> </brew-recipe>Recipe cards →
Point your assistant to llms.txt: the whole language on one page, so it writes valid recipes.
brewlang.github.io/llms.txt