Cross-references
Pull one recipe’s steps into another, or drop a clickable link to a recipe in prose. Useful when one recipe is a component of another — pasta and the sauce, pizza and the dough.
Embed another recipe in a step
- Open the recipe and tap Edit.
- Add a new step with
## Step Title.on its own line. - On the next line, write
> @[Recipe Title]— exactly the title of the recipe you want to embed. - Save.
The embedded recipe renders as a card inside the step. Its ingredients, instructions, and footer appear inline. An arrow link in the card header opens the full embedded recipe in a new view.
## Make the sauce.
> @[Simple Tomato Sauce]
## Cook the pasta.
- Spaghetti, 400 g
Link to a recipe in prose
Write @[Recipe Title] in step text, an ingredient prep note, a cross-reference prep note, or the footer. It renders as a clickable link to that recipe — no embedding, no ingredient pulling.
This pairs well with @[Simple Salad].
Scale or annotate an embedded recipe
Add , N after the title for a multiplier, : for a prep note, or both:
> @[Pizza Dough], 2: Make a double batch.
- The
, 2multiplies the embedded recipe’s ingredient quantities by 2 in the grocery list and scales the embedded numbers in the rendered card - The text after the colon renders alongside the embedded card as a prep note
- Both parts are optional —
> @[Pizza Dough], 2and> @[Pizza Dough]: Make a double batch.are both valid
The multiplier accepts whole numbers (2), fractions (3/2), and decimals (1.5).
How embedded multipliers compound with scaling
When you scale a recipe that embeds another recipe, the two factors multiply. A parent recipe scaled to 2× with a , 2 cross-reference scales the embedded recipe’s quantities and marked numbers by 4×. The embedded card’s badge updates to show the effective factor — × 4 in this example — so the number on the card always tracks what’s actually being cooked.
See Scaling a recipe for how the scaling bar works.
Embedded reference rules
| Rule | Why |
|---|---|
> @[...] must stand alone in its step |
A step with both a cross-reference and ingredients or instructions is rejected at save time |
One > @[...] per step |
Two embedded references in the same step is a parse error |
The step needs a ## heading |
Cross-references can’t appear in implicit steps (recipes without ## headers) |
| Quantity comes after the title | Write > @[Title], 2, not > 2x @[Title] — the old prefix syntax is rejected |
How titles match
Cross-reference titles match the target recipe’s title with case and punctuation ignored. @[pizza dough] and @[Pizza Dough] both resolve to a recipe titled Pizza Dough. The match runs a slugifier: each title is Unicode-normalized, lowercased, spaces become hyphens, and anything outside a-z 0-9 - is stripped. So spaces matter (Pizza Dough and PizzaDough are different), but accents and most punctuation don’t.
Renaming a recipe automatically rewrites every @[OldTitle] reference in your kitchen to the new title. You don’t have to hunt them down.
If the embedded recipe is missing
A broken cross-reference renders a placeholder card with a notice in place of the embedded steps:
This step references “Simple Tomato Sauce”, but no recipe with that name exists.
The parent recipe still works otherwise. Fix it by editing the cross-reference to match an existing recipe — or add the missing recipe.
A bare @[Title] link to a missing recipe renders as a normal link to the slug. Tapping it lands on the Recipe not found page.
See also
- Recipe format — the full markdown syntax reference
- Scaling a recipe — how the parent’s scale factor compounds with embedded multipliers
- Editing a recipe — using the graphical editor