Skip to content
Recipes · head-to-head

Mealie vs Tandoor Recipes

Updated Sep 2026prices checked · Jul 2026
We earn commissions when you shop through the links below. Full disclosure →
The verdict

Pick Mealie for the simplest recipe manager that still plans meals and builds shopping lists — one container on SQLite, a built-in backup, and nothing else to run. Pick Tandoor if you want PostgreSQL as standard (full-text and trigram search with no database switch), Dropbox/Nextcloud file sync and supermarket-ordered shopping lists, and you are happy to own a database and your own backups.

Side by side

Mealie
Tandoor Recipes
Category
Mealie: RecipesTandoor Recipes: Recipes
Stack
Mealie: Python · VueTandoor Recipes: Python (Django) · Vue
License
Mealie: AGPL-3.0Tandoor Recipes: AGPL-3.0 + Commons Clause
Min RAM
Mealie: 1 GB (upstream compose limit)Tandoor Recipes: 1 GB (our estimate)
Containers
Mealie: 1Tandoor Recipes: 2 (app + PostgreSQL)
Database
Mealie: SQLite default · PostgreSQL optionalTandoor Recipes: PostgreSQL (SQLite not for production)
Search
Mealie: Basic search; fuzzy search needs PostgreSQLTandoor Recipes: Full-text + trigram similarity
Import from other apps
Mealie: URL scraper + migrations from 9 apps (Tandoor, Paprika, Nextcloud Cookbook…)Tandoor Recipes: URL import + importers from many apps (Mealie, Paprika, Nextcloud…)
First login
Mealie: Published default, change at onceTandoor Recipes: /setup page creates the admin
Built-in backup
Mealie: Yes (Admin Settings → Backups)Tandoor Recipes: No — pg_dumpall + media copy
Difficulty
Mealie: 2 / 5Tandoor Recipes: 2 / 5

Mealie and Tandoor Recipes are the two self-hosted recipe managers people most often weigh against each other. Both import recipes from a URL, both plan meals and build shopping lists, both group users into households, and both run in Docker on a small box. The difference is how much machinery each one asks you to run and how far each one goes past the basics. Mealie is a single container on SQLite by default. Tandoor is an app container plus PostgreSQL, with more knobs for search and file sync. That choice drives the setup, the backup routine, and who each one suits.

One container on SQLite vs. an app plus PostgreSQL

Mealie ships as one image — a Python backend and a Vue frontend — with its data in /app/data. Its installation checklist calls SQLite "the ideal choice for Mealie when you have 1-20 Users" and reserves PostgreSQL for "many concurrent users." PostgreSQL is optional, but not cosmetic: upstream notes that "some features are only enabled on PostgreSQL, such as fuzzy search."

Tandoor is a Django application, and its recommended Docker Compose install is two services: db_recipes running postgres:16-alpine and web_recipes running the vabene1111/recipes image. Since Tandoor 2 that image bundles its own nginx, which serves media files and passes the rest to gunicorn, so the official compose publishes a single port 80 and needs no separate web server. SQLite exists as a DB_ENGINE option, but the configuration reference says "Production should always use postgresql," and every official compose example uses it.

Footprint

Mealie's official compose sets a memory: 1000M limit on the container, and the docs explain why: Python "can pre-allocate larger amounts of memory than is necessary" on a machine with a lot of RAM. Mealie publishes no separate minimum-RAM figure, so that 1 GB limit is the number to plan around.

Tandoor publishes no RAM requirement for its Docker install. The only memory figure in its docs — at least 2048 MB — applies to the manual install, where the frontend is built from source with yarn build; the Docker image arrives prebuilt. Our 1 GB floor for Tandoor is our own estimate for the two containers (a gunicorn app server that defaults to three workers, plus PostgreSQL), not an upstream number and not a measurement. Neither app has a measured idle figure on this site yet.

Setup and first login

Mealie's install is one compose file: set BASE_URL, TZ, and your PUID/PGID, run docker compose up -d, and open port 9925. The first login is the published default — changeme@example.com / MyPassword — which you change at once. Our Mealie page carries the full snippet.

Tandoor's install is the compose file plus a downloaded .env template, in which upstream says you "NEED to set SECRET_KEY, ALLOWED_HOSTS and POSTGRES_PASSWORD." After docker compose up -d, upstream says to wait two to three minutes on the very first start while database migrations run. With no users in the database, the first visit redirects to a /setup page that creates the admin account — there is no default password to forget to change. Local signup is off by default (ENABLE_SIGNUP=0). See our Tandoor page for the snippet.

Both rate 2 out of 5 to deploy. Tandoor's extra step is the .env file and a database container; Mealie's is changing a known default login.

Features

The overlap is large. Mealie's recipe scraper creates recipes "from hundreds of websites by simply providing a URL"; its meal planner is a calendar view showing "the previous day and the next 6 days by default"; shopping lists take items directly or link a recipe and all its ingredients; cookbooks filter recipes by categories, tags, and tools. Households are subdivisions within a group, and groups are "fully isolated instances of Mealie." Recipe Actions send the recipe JSON to a URL you choose — upstream's example is triggering a Home Assistant webhook — and there is a documented API. Mealie also has bulk actions, can merge duplicate foods and units, and migrates collections from nine other apps, Tandoor, Paprika and Nextcloud Cookbook among them.

Tandoor covers the same ground with a power-user tilt. Its README promises import "from thousands of websites" that publish ld+json or microdata, planning "multiple meals for each day," shopping lists "via the meal plan or straight from recipes" with supermarket-specific ordering, and cookbooks. Search is full-text with trigram similarity, and you can batch-tag, merge, and rename ingredients, tags, and units. Households share a meal plan and shopping list by default, and spaces split one installation into separate, multi-tenant recipe collections. Tandoor also has optional AI features — importing from images, PDFs, or raw text, sorting steps, and extracting nutrition — routed through LiteLLM to a provider you configure, with a per-space spending cap. It also syncs files with Dropbox and Nextcloud.

Both import from other recipe managers: Mealie's migrations include Tandoor, and Tandoor has a Mealie importer (separate versions for backups made before and after Mealie 1.0). You can move a collection in either direction.

Backups and upgrades

Mealie has a built-in backup under Settings → Admin Settings → Backups, and on SQLite everything lives under /app/data/.

Tandoor's backup page is blunt: "There is currently no 'good' way of backing up your data implemented in the application itself." You back up the PostgreSQL database with pg_dumpall and copy the media files directory yourself. Upgrades are docker compose down, docker compose pull, docker compose up -d — upstream says to back up first and read the release notes — and there is "no mechanism to downgrade the database," so a bad upgrade means restoring a dump. Moving to a newer PostgreSQL major version is a manual dump and restore.

Licensing

Mealie is AGPL-3.0. Tandoor is AGPL-3.0 with the Commons Clause, which withholds the right to "Sell" the software — including charging for hosting or support services whose value comes from it. Self-hosting for yourself, your family, or your team is unaffected; it matters only if you planned to offer Tandoor as a paid service.

Which to choose

Choose Mealie if you want the simplest recipe manager that still does meal plans and shopping lists: one container, SQLite, a built-in backup, and nothing else to run. Choose Tandoor if you want PostgreSQL as standard (full-text and trigram search with no database switch), Dropbox/Nextcloud file sync and supermarket-ordered shopping lists — and you are comfortable owning a database and your own backups. Neither wins outright; it depends on whether you want the lighter tool or the deeper one.

Choosing between Tandoor and Mealie

Reversed, the trade is the same: start with Tandoor if your collection is large enough that search matters, or you want recipe files synced with Dropbox or Nextcloud, because PostgreSQL search is standard there. Drop back to Mealie if what you mostly need is to scrape a recipe, plan the week, and shop from the list, on the fewest moving parts. Both live in the Recipes category.

Common questions

Mealie vs Tandoor — which self-hosted recipe manager should I pick?

Pick Mealie if you want the simplest setup: one container on SQLite with URL import, a meal planner, shopping lists, and a built-in backup. Pick Tandoor if you want PostgreSQL as standard (full-text and trigram search with no database switch), Dropbox/Nextcloud file sync and supermarket-ordered shopping lists, and you are comfortable running a database and your own backups.

Which needs less RAM, Mealie or Tandoor?

Neither publishes a minimum. Mealie's official compose caps the container at 1000M, so plan on about 1 GB. Tandoor publishes no Docker RAM figure; our 1 GB estimate covers its app container plus PostgreSQL. Neither has been measured on this site yet.

Can I move my recipes from Mealie to Tandoor?

Yes. Tandoor's import feature has a Mealie importer, with separate versions for backups made before and after Mealie 1.0. Upstream says to create a full backup in Mealie's admin settings, because exporting only recipe data gives an incomplete import.

Where to host itaffiliate disclosure
Kamateratrial either on
The entry tier is a free trial — fine for a first look. Size it up (or run the 2 vCPU / 4 GB box the cost figures above assume) once you're keeping it.1 vCPU · 1 GB RAM · 20 GB SSD · $4.00/mo
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Other comparisons with these apps

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.