Markdown import
You can import recipes directly as Markdown files, or import a ZIP archive exported from another Mirepoix installation.
How to import
On your recipes list, tap Add Recipe, then Choose a file in the Add a recipe sheet. A file picker opens. Choose a file is there whether or not the deployment has an Anthropic API key, and reading a text file or a ZIP never needs one.
Pick one or more .md, .txt, .text, or .zip files. What happens next
depends on how many you choose and what kind they are. The picker also takes
images: if anything you pick is an image, the whole pick goes to
Mirabel, who sends the image to her photo reader,
which takes AI, and sorts the other files the way she sorts a file dropped on
her panel.
Mirabel’s own From a file choice, in her add-a-recipe interview, works too. A single text file picked there becomes a Recipe draft in her chat instead of opening in the editor.
A single .md, .txt, or .text file
Pick one text file and Mirepoix reads it the way it reads pasted text. When it reads cleanly, the new-recipe editor opens with the recipe filled in. It’s a review step, not an instant import: nothing joins your recipes until you tap Save to kitchen there. The read is free — it doesn’t use Mirabel, and it doesn’t count against your monthly AI allowance.
A file already written in Mirepoix’s own recipe format is read exactly as written, and the editor opens with it right away.
Anything else is read as text. When that read isn’t clean, the sheet opens nothing and says so. It offers Open it anyway, to open what Mirepoix made of the file and check it over carefully, and, when AI is available, Read it with AI. That reads the file’s text again with AI, in the sheet, drawing on the allowance, and opens the result in the editor. When there’s no recipe to find in the file at all, only Read it with AI is offered; without AI, the sheet suggests pasting just the recipe text. See AI import for when AI is available.
To bring in files without the review step, pick more than one at a time or put them in a ZIP — both take the direct route below.
When Mirabel hands the file to AI, a substitution the recipe offers and an ingredient it marks optional come back as fields — a substitute row under the ingredient, and the line’s own optional mark — instead of a note in the footer.
A file over about 12,000 characters won’t read as a single recipe. The sheet says That file is too big to read as one recipe. Paste just the recipe instead. Copy just the recipe out of the file and paste it into the sheet’s box.
Several files at once
Choose more than one .md, .txt, or .text file together and they import right away, one
recipe each — no draft, no AI, and no charge against your AI allowance. Each file must use the
recipe format and include a # Title
heading — a file without one fails to import.
The sheet shows Importing… while it works, then a line saying what came in, such as Imported 3 recipes., along with any file that failed. A ZIP takes the same route and reports the same way. A kitchen can run five of these imports an hour; past that, the sheet says Import limit reached. Try again in an hour.
ZIP archives
A .zip file is expected to come from Mirepoix Export.
It can contain recipe files, recipe photos, QuickBites, the ingredient
catalog, and aisle/category ordering.
An exported archive carries each recipe twice: a readable .md file, and a
.json file in a recipes/ folder that records the recipe exactly. The import
reads the .json and skips the matching .md, so a recipe comes back the way
it left, down to the shapes the text format can’t spell. If a .json is
damaged, the .md is read instead and the import summary says so. An older
archive with no recipes/ folder still imports from its .md files.
Editing an exported .md offline takes one extra step, because the .json is
what gets read — see
edit a recipe offline.
You can also assemble a ZIP manually from .md recipe files if you’re
migrating from another system. With no recipes/ folder in it, every .md is
read.
An entry in the archive that Mirepoix doesn’t recognize is named in the import summary rather than passed over in silence. Housekeeping files your computer tucks into a ZIP are ignored without comment.
What happens on import
- Recipes are created or updated based on their title.
- Recipe photos are restored for the recipes the import creates or replaces — one photo per recipe. Imported photos go through the same checks as photos you add in the app, so a bad image in an archive is rejected and reported.
- QuickBites are merged by name. An imported bite updates the one with the same name and adds any that are new, so the bites you already have are kept.
- Categories and tags from front matter are created if they don’t exist.
- Each ingredient in the ZIP is added, or updates your kitchen’s entry with the same name. What it brings is its aisle, store placements, how often the Pantry checks it, and Don’t ask. Nutrition figures and alternate names an older archive saved for an ingredient are skipped, so an ingredient you already have keeps its own nutrition. The rest of that ingredient imports as usual.
- Category ordering is restored. Your aisle order is filled in only if you haven’t set your own — a customized aisle order is never overwritten.
A single archive can’t be larger than the app’s per-file upload limit (about 10 MB). A kitchen with many photos can produce an export that’s too large to import in one piece for now.
Conflicts
If a recipe with the same title already exists, the imported version replaces it — there’s no merge, the existing recipe is overwritten.
See also
- Import & Export — the full set of ways to bring recipes in and out
- Import a recipe with AI — for sources that aren’t already in the recipe format
Last updated October 14, 2026