README file from
GithubCooklang Editor Obsidian Plugin
A plugin for Obsidian adding support for Cooklang

Looking for maintainers, reach out dubadub on Discor server.
Installation
- This plugin has been submitted community plugins repo. You can install it from Communinty Plugins within Obsidian.
- You can build and install the plugin manually with Node.js 24 LTS and npm 11 by checking out the files to
<your vault>/.obsidian/plugins/cooklang-obsidian, then runningnpm ciandnpm run build.
Rich preview
Opening a .cook file and toggling Preview shows a single rich recipe page:
- Hero with the recipe title, description, title image (a sibling file named like
the recipe, e.g.
Curry.jpg, or the first URL inimage/imagesmetadata), and meta pills for total time, servings, difficulty, source and tags. Metadata image URLs are loaded from their remote hosts when the preview is open and images are enabled. - Servings scaler — a
− N servings +control in the sticky bar that rescales every ingredient quantity (and inline quantities in the steps) in real time. - Two-column layout on wide panes: a sticky ingredient checklist beside the steps; it stacks into a single column on narrow panes and mobile.
- Cooklang sections (
= Section =) group both the ingredients and the steps, and> notesrender as callouts. - Per-step images following the Cooklang convention
(
Recipe.1.jpgfor the first step,Recipe.2.jpgfor the second, …). - Step tracking — tap a step to mark it current and dim completed steps.
Each of these can be toggled in the plugin settings (Servings scaler, Two-column layout, Step tracking), falling back to a simple stacked list.
Recipe references
Reference another recipe with Cooklang ingredient syntax, for example
@./Components/Beans. References resolve relative to the root of the vault,
which acts as the Cooklang recipes root. The plugin opens a matching .cook
file first, following the Cooklang convention. A quantity such as {2} opens
the target at twice its base scale, {4%servings} targets four servings, and a
quantity matching the target's yield unit scales to that yield. If no .cook
file exists, the plugin falls back to a same-path Markdown file only when its
frontmatter contains the Boolean flag:
---
recipe: true
---
This works in full recipe views and in embedded cook/cooklang blocks.
Security
Third-party plugins can access files on your computer, connect to the internet, and even install additional programs.
The source code of this plugin is available on GitHub for you to audit yourself, but installing plugins into Obsidian is a matter of trust.
I can assure you here that I do nothing to collect your data, send information to the internet or otherwise do anything nefarious with your system. However, be aware that I could, and without auditing the code yourself, you only have my word that I don't.
Roadmap
This is the stuff I would ideally like to include in this plugin that isn't available as yet:
- Improve editor/preview mode buttons to be more like markdown
- Command to convert
.mdto.cook- Maybe also
cookcode block support?
- Maybe also
- Include option for showing quantities inline in the method
- Option to link between ingredients and method?
- Include options for showing ingredients list, tools list and time
- (calculate total time)
- Unit conversion (metric <-> imperial)
- Scaling up/down (check spec)
- Shopping list and
.conffile support (needs designing) - Better metadata support.
- Making source links clickable.
- Support for Obsidian tagging.
- (Maybe, pending feedback) Markdown formatting support.