Tandoor vs Mealie: Recipe Managers Compared
Quick Verdict
Mealie for most people, Tandoor for serious home cooks. Mealie is easier to set up, imports recipes from URLs more reliably, and has a cleaner mobile experience. Tandoor has deeper features — meal planning with automatic shopping lists, nutritional tracking, multi-user household management, and cookbook organization. If you just want to save recipes from the internet and have them in one place, Mealie. If you plan meals weekly and want shopping lists generated from your meal plan, Tandoor.
Feature Comparison
| Feature | Tandoor | Mealie |
|---|---|---|
| Recipe import from URL | Yes | Yes (more reliable) |
| Recipe import format | OpenAPI, JSON, Nextcloud Cookbook, Paprika, Chowdown, Mealie | URL scraping, JSON, Chowdown |
| Meal planning | Yes (weekly/monthly calendar) | Yes (basic) |
| Shopping lists | Auto-generated from meal plans | Manual + recipe-linked |
| Nutritional info | Yes (via Open Food Facts) | No |
| Cookbook organization | Yes (create multiple cookbooks) | Yes (categories and tags) |
| Multi-user / households | Yes (full household management) | Yes (group-based) |
| Sharing | Public recipe links, share to other Tandoor instances | Public recipe links |
| Mobile app | Responsive web + community Android/iOS apps | Responsive web |
| API | Full REST API | Full REST API |
| Recipe scaling | Yes | Yes |
| Cooking timers | Yes (step-by-step mode) | No |
| Food/ingredient database | Yes (connects to Open Food Facts) | No |
| Step-by-step cook mode | Yes | No |
| OCR for handwritten recipes | No | Experimental |
| User permissions | View, edit, admin roles | Admin, user, guest |
| Database | PostgreSQL (recommended) or SQLite | SQLite (default) or PostgreSQL |
| Framework | Django (Python) | FastAPI (Python) + Nuxt.js |
| Docker image size | ~400 MB | ~300 MB |
| License | AGPL-3.0 | AGPL-3.0 |
Docker Setup
Tandoor
services:
tandoor:
image: ghcr.io/tandoorrecipes/recipes:1.5.26
container_name: tandoor
restart: unless-stopped
ports:
- "8080:8080"
environment:
- SECRET_KEY=your-random-secret-key-change-this # CHANGE: generate with `openssl rand -base64 48`
- DB_ENGINE=django.db.backends.postgresql
- POSTGRES_HOST=tandoor-db
- POSTGRES_PORT=5432
- POSTGRES_DB=tandoor
- POSTGRES_USER=tandoor
- POSTGRES_PASSWORD=change_this_password # CHANGE THIS
- ENABLE_SIGNUP=0 # Disable public registration
- TIMEZONE=UTC
volumes:
- tandoor_static:/opt/recipes/staticfiles
- tandoor_media:/opt/recipes/mediafiles
depends_on:
- tandoor-db
tandoor-db:
image: postgres:16-alpine
container_name: tandoor-db
restart: unless-stopped
environment:
- POSTGRES_DB=tandoor
- POSTGRES_USER=tandoor
- POSTGRES_PASSWORD=change_this_password # Must match above
volumes:
- tandoor_db:/var/lib/postgresql/data
volumes:
tandoor_static:
tandoor_media:
tandoor_db:
Mealie
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:v2.6.0
container_name: mealie
restart: unless-stopped
ports:
- "9925:9000"
environment:
- ALLOW_SIGNUP=false
- TZ=UTC
- MAX_WORKERS=1
- WEB_CONCURRENCY=1
- BASE_URL=http://localhost:9925 # Change to your actual URL
volumes:
- mealie_data:/app/data
volumes:
mealie_data:
Mealie uses SQLite by default, making it simpler to deploy — no separate database container needed. For larger installations with multiple users, Mealie also supports PostgreSQL.
Recipe Import: The Feature That Matters Most
The primary reason people install a recipe manager is to save recipes from websites. Both apps scrape recipe URLs, but the experience differs significantly.
Mealie’s import is more reliable. It handles a wider range of recipe websites out of the box, parses structured data (JSON-LD, Microdata) well, and generally produces cleaner results. The browser extension makes importing a one-click operation — click the extension on a recipe page, and it appears in Mealie within seconds.
Tandoor’s import works but requires more cleanup. It sometimes misses ingredients or steps from certain sites, and the imported formatting can be inconsistent. Tandoor compensates by supporting more import formats — you can import from Paprika, Nextcloud Cookbook, and other recipe managers, which is valuable if you’re migrating from another system.
Meal Planning and Shopping
This is where Tandoor pulls ahead decisively.
Tandoor’s meal plan is a real calendar. Drag recipes onto days, assign them to meals (breakfast, lunch, dinner, snack), and the system generates a consolidated shopping list with quantities aggregated across all planned meals. “Need 3 onions total this week” instead of listing the same ingredient from each recipe separately. You can check items off as you shop, and the list is accessible on your phone.
Mealie has meal planning, but it’s simpler — more of a schedule view than a kitchen management tool. Shopping lists exist but are less tightly integrated with the meal plan.
The Kitchen Workflow
If you actively cook and plan meals, Tandoor’s step-by-step cook mode is surprisingly useful. Open a recipe on your phone or tablet in the kitchen, and it shows one step at a time with large text, built-in timers, and ingredient callouts. Swipe to the next step. It’s designed for flour-covered hands.
Mealie displays recipes in a standard format — all steps visible, scrollable. Clean and readable, but not optimized for active cooking.
Performance
| Metric | Tandoor | Mealie |
|---|---|---|
| RAM (idle) | ~250 MB (app + PostgreSQL) | ~150 MB (with SQLite) |
| RAM (active) | ~350 MB | ~200 MB |
| CPU | Low | Low |
| Startup time | ~15 seconds | ~10 seconds |
| Recipe load time | Fast | Fast |
| Import speed | 5-15 seconds per URL | 3-10 seconds per URL |
Mealie is lighter because SQLite eliminates the database container overhead. With PostgreSQL, both apps use comparable resources.
Community
| Metric | Tandoor | Mealie |
|---|---|---|
| GitHub stars | 6K+ | 8K+ |
| Contributors | 100+ | 150+ |
| Release cadence | Monthly | Monthly-bimonthly |
| Community | GitHub Discussions, Discord | GitHub Discussions, Discord |
| Documentation | Good (docs site) | Good (docs site) |
Both have active communities and responsive developers. Mealie’s community is slightly larger, partly because its simpler setup brings in more casual users.
Use Cases
Choose Tandoor If…
- You plan meals weekly and want automatic shopping lists
- You track nutritional information
- You manage a household with multiple cooks who need different permissions
- You want step-by-step cook mode with timers
- You’re migrating from Paprika, Nextcloud Cookbook, or another recipe manager
- You want to organize recipes into multiple named cookbooks
Choose Mealie If…
- Your primary need is saving recipes from websites
- You want the simplest possible setup (single container, SQLite)
- Mobile experience is a priority — Mealie’s responsive design is excellent
- You don’t need complex meal planning or shopping list generation
- You prefer a clean, modern UI over feature density
- You’re a casual cook who collects recipes more than plans meals
Final Verdict
Mealie is the better recipe manager for collecting recipes. Its URL import is more reliable, the UI is cleaner, and the single-container deployment is refreshingly simple. If you browse food blogs and want to save the good ones to your own server, Mealie does this better than anything else.
Tandoor is the better kitchen management system. Meal planning, shopping lists, nutritional tracking, and cook mode make it a genuine tool for running a kitchen. It’s more complex to set up and use, but the payoff is real if you plan meals regularly.
For a household that plans meals weekly: Tandoor. For everyone else: Mealie.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments