Importing Recipes
Your cookbook can now import from several apps, using a single, simple flow:
- Go to Settings → Import
- Pick a source from the dropdown
- Choose a file (ZIP/CSV as required)
- (Optional) tick Make recipes public
- Click Import
Max upload size follows
BODY_SIZE_LIMITin your.env. Increase it if large archives fail.
Other supported formats
These match the code in src/lib/utils/import/registry.js and follow the same “pick type → upload → import” flow.
| Source | File(s) you upload | What the ZIP/CSV must contain | Notes |
|---|---|---|---|
| Paprika | .paprikarecipes or .zip |
A .paprikarecipes file, or a ZIP with *.paprikarecipe members |
Categories ignored; photos imported if present |
| Chowdown | .zip |
_recipes/*.md and optional images/* |
Front-matter + body parsed; local images imported |
| Mealie | .zip |
recipes/<dir>/*.json and recipes/<dir>/images/* |
Ingredients/steps normalized; images imported from archive |
| MyRecipeBox | .csv |
Columns like title, description, ingredients, instructions, notes, … |
Maps columns directly to your schema; no images |
| Nextcloud | .zip |
<dir>/recipe.json and <dir>/full.jpg (use full.jpg) |
JSON is schema.org-ish; image imported |
| PlanToEat | .csv |
Official PTE export CSV | Downloads Photo Url if present |
| Recipe Keeper | .zip |
recipes.html and images/<uid>_*.jpg |
HTML parsed; photos matched by filename |
| Tandoor | .zip |
Top-level numbered zips each with recipe.json and image (with or without extension) |
Uses embedded image; images without extension are handled |
What gets mapped where?
All importers use the same map-driven pipeline. Fields are normalized into your Recipe schema:
name,description,ingredients,directions,notesprep_time,cook_time,total_timeservingsratingsourceandsource_urlimage_url/photo_url(if present)created(converted to a Date when available)- Flags:
on_favorites,on_grocery_list,is_pinned,in_trash(defaults to false) is_public(from the checkbox)
Photos are imported when available:
- From archives (Paprika, Mealie, Nextcloud, Recipe Keeper, Tandoor): saved locally and attached to each recipe.
- From CSVs (PlanToEat): we try to download the
Photo Url.
Categories/tags are ignored for now across all importers.