Cook smarter

Join the waitlist for Fond. Recipes, meal plans, and a little AI sous-chef that learns how you cook.

Cooklang
BastienBastien

Cooklang

A markup language for writing recipes in plain text, making ingredients, cookware, and timers machine-readable while keeping files human-readable and portable.

Cooklang is an open-source markup language designed specifically for recipes. Instead of storing recipes in complex databases or proprietary formats, Cooklang lets you write them as plain text files with simple annotations — and you own every file. Any app that understands the Cooklang spec can parse ingredients, cookware, and timers directly from the text, enabling features like automatic shopping lists, recipe scaling, and cook mode without manual data entry.

How Cooklang works

In Cooklang, you write recipes as natural steps and mark up three types of elements:

Symbol Element Example What the parser extracts
@ Ingredient @salt{2%tsp} Name: salt, Quantity: 2, Unit: tsp
# Cookware #large pot Equipment: large pot
~ Timer ~{15%minutes} Duration: 15 minutes

The syntax is intentionally minimal. You can read a Cooklang file without any special software — it is just a text file that also happens to be machine-readable.

Ingredient syntax in detail

Ingredients are the most frequently annotated element. Cooklang handles several common patterns:

Pattern Syntax Result
Name + quantity + unit @flour{500%g} 500 g flour
Name + quantity, no unit @eggs{3} 3 eggs
Name only @butter butter (no quantity)
Multi-word name @olive oil{2%tbsp} 2 tbsp olive oil
Fractional quantity @milk{1/2%cup} 1/2 cup milk

This simplicity means you spend time cooking, not formatting data.

Example recipe

Boil @water{1%liter} in a #large pot.
Add @pasta{400%g} and cook for ~{12%minutes}.
Drain and toss with @olive oil{2%tbsp} and @garlic{2%cloves}, minced.
Season with @salt{1%tsp} and @black pepper{1/2%tsp}.
Serve immediately with @parmesan{30%g}, grated.

From this plain text, a Cooklang parser can automatically generate:

  • A complete ingredient list with quantities
  • A shopping list grouped by category
  • Step-by-step instructions for cook mode
  • Scaled quantities for any number of servings

Cooklang vs other recipe formats

Feature Cooklang JSON-LD / Schema.org Proprietary database Markdown
Human-readable Yes — plain text No — structured data No — locked format Yes
Machine-readable Yes — parsed elements Yes — structured data Yes — within app only No
Portable Yes — text files Partially — embedded in HTML No — vendor lock-in Yes
Ingredient extraction Automatic Manual entry required Manual entry required Manual
Version control (Git) Easy Possible but verbose Difficult Easy
Shopping list generation Automatic Requires app logic App-specific Manual

Most recipe managers store your data in a proprietary database or use structured formats like JSON-LD, which are designed for search engines rather than humans. Cooklang takes a different approach: files are human-readable first, machine-readable second. You can edit a Cooklang recipe in any text editor, store it in Git, or move it between apps — no import headaches or vendor lock-in.

Why Cooklang matters for home cooks

You do not need to be a programmer to benefit from Cooklang. The format solves real problems that every home cook faces:

Problem How Cooklang helps
Recipes scattered across apps, bookmarks, screenshots One text file per recipe, stored wherever you want
Shopping lists take forever to make Ingredients extracted automatically from recipes
Scaling a recipe means recalculating every ingredient Recipe scaling works automatically with parsed quantities
Recipes locked inside one app Plain text files work with any Cooklang-compatible app
Meal prep planning is tedious Combine multiple recipe files to generate a unified shopping list
No way to track what you changed Text files work with version control — see every edit

Advanced Cooklang features

Metadata

Add recipe-level information at the top of any Cooklang file:

>> servings: 4
>> source: grandma
>> time: 45 minutes

Comments

Use -- for inline comments that the parser ignores:

Add @sugar{200%g}. -- you can reduce to 150g for less sweetness

Multi-step recipes

Each line in a Cooklang file is one step. Blank lines separate steps into logical groups, making complex recipes with dozens of steps easy to follow.

Writing your first Cooklang recipe

  1. Open any text editor (Notepad, VS Code, TextEdit)
  2. Write your recipe steps as plain sentences
  3. Mark ingredients with @name{quantity%unit}
  4. Mark cookware with #name
  5. Mark timers with ~{duration%unit}
  6. Save with a .cook extension
  7. Open in any Cooklang-compatible app

The learning curve is about five minutes. If you can write a text message, you can write Cooklang.

Cooklang and measurement

Cooklang works with any unit system. Whether you prefer grams and milliliters or cups and tablespoons, the format does not care. Apps like Fond that support unit conversion can even switch between systems automatically, and using a kitchen scale with weight-based Cooklang recipes gives you the most precise results when scaling.

Cooklang in Fond

Fond is built on Cooklang under the hood, so every recipe you save is automatically structured — ingredients, quantities, timers, all of it. That means features like recipe scaling, shopping lists, meal prep planning, and cook mode work out of the box, with zero manual tagging. You can also import recipes from other sources and Fond converts them to Cooklang automatically. You never have to think about the format.

To learn more about the specification, visit cooklang.org.

Frequently asked questions

Do I need to know programming to use Cooklang?

No. Cooklang uses three symbols (@, #, ~) and plain text. If you can write a recipe on paper, you can write it in Cooklang. The syntax takes about five minutes to learn.

Can I convert my existing recipes to Cooklang?

Yes. You can manually add the @, #, and ~ annotations to any text recipe, or use apps like Fond that import recipes and convert them automatically.

What apps support Cooklang?

Several apps and tools support Cooklang, including Fond, CookCLI (the official command-line tool), and community-built parsers in multiple programming languages. The specification is open, so any developer can build Cooklang support into their app.

Is Cooklang good for baking recipes?

Yes. Baking recipes benefit especially from Cooklang because precise quantities are critical. When every ingredient has a parsed quantity and unit, recipe scaling and unit conversion (grams to ounces, for example) work automatically. Bakers who use baker's percentages can even annotate those in metadata.

Where should I store my Cooklang files?

Anywhere you store text files — a folder on your computer, Dropbox, Google Drive, or a Git repository. Because Cooklang files are plain text, they are tiny (a few kilobytes each) and work with any backup or sync system.

Related Fond featureCooklang parser

Cook smarter

Join the waitlist for Fond. Recipes, meal plans, and a little AI sous-chef that learns how you cook.

Related terms