Mealie

Self-hosted recipe manager and meal planner

Recipe Managers ★ 13.3k stars Easy setup AGPL-3.0

Mealie is a self-hosted recipe manager, meal planner, and shopping list application. It can import recipes from URLs, organize them with tags and categories, and generate grocery lists.

Key features

  • Import recipes from URLs
  • Meal planning calendar
  • Shopping list generation
  • REST API and integrations

Pros & cons

Strengths

  • Polished modern UI
  • Strong import and API support

Trade-offs

  • Import accuracy varies by site
  • Heavier than minimal apps

Mealie replaces

Last reviewed Aug 26, 2026 · 809 words

The reason to run Mealie is the paste-a-URL import. Drop in a link to a recipe page and Mealie discards the 1,400-word backstory, the six ad blocks and the autoplaying video, keeping the ingredients, steps, yield and photo as a clean page you own. It gets the structure right on the majority of mainstream recipe sites, and the catalogue's warning that accuracy varies by site is true for a specific, predictable reason worth knowing before you judge it.

Import works because of schema.org, and fails where it is missing

Most recipe sites embed a Recipe object as JSON-LD in the page for Google's rich results. Mealie's scraper reads that block first, which is why imports from large food sites are near perfect: the site already did the structuring. Where it fails is on pages with no structured data, such as personal blogs, forum posts and sites behind aggressive bot protection. For those, Mealie falls back to heuristics and the result needs a minute of editing, or you paste the text into the manual editor. Judge the tool on the sites you actually cook from, not on the one obscure blog that breaks it. Bulk import takes a list of URLs in one go, which is how I emptied a browser bookmarks folder of about 80 recipes in an afternoon, then spent the next one deleting the half I was never going to cook.

Compose with Postgres, then change the first password

services:
  mealie:
    image: ghcr.io/mealie-recipes/mealie:latest
    ports:
      - "9925:9000"
    environment:
      BASE_URL: https://recipes.example.com
      ALLOW_SIGNUP: "false"
      DB_ENGINE: postgres
      POSTGRES_SERVER: db
      POSTGRES_PORT: 5432
      POSTGRES_DB: mealie
      POSTGRES_USER: mealie
      POSTGRES_PASSWORD: change-this
    volumes:
      - ./mealie-data:/app/data
    depends_on:
      - db
    restart: unless-stopped
  db:
    image: postgres:16
    environment:
      POSTGRES_DB: mealie
      POSTGRES_USER: mealie
      POSTGRES_PASSWORD: change-this
    volumes:
      - ./pg-data:/var/lib/postgresql/data
    restart: unless-stopped

The container listens on 9000; point your reverse proxy at 9925 and set BASE_URL to the resulting public address, otherwise links in shared recipes point at the wrong host. First login is [email protected] with password MyPassword; change both before you do anything else, because BASE_URL is a public address and that default is in every tutorial on the internet. ALLOW_SIGNUP=false keeps registration closed; you invite household members from the admin panel. SQLite is the default and fine for one household. Postgres is worth the extra container once several people add recipes at once, and it turns the backup into a pg_dump rather than copying a file the app may be writing to.

The meal plan and shopping list are what a family actually uses

Recipes are the entry point; the calendar is why it sticks. Put recipes on days, and Mealie builds a shopping list from the week, able to combine the same ingredient across recipes so three dishes needing onions can become one line. The list is shared by everyone in the household group, ticks off in real time on a phone in the shop, and takes manual items for the things no recipe mentions. This is the workflow Paprika and Plan to Eat charge for, and it is what keeps a household using the thing after the novelty of importing 200 recipes wears off.

The API and integrations earn the "heavier" label

Mealie has a real REST API with per-user tokens, OIDC login (so Authentik users get single sign-on with OIDC_AUTH_ENABLED=true and the usual client settings), and an official Home Assistant integration that exposes the meal plan and shopping list to dashboards and automations. That is why it needs 512 MB where a minimal recipe app needs 100: it is a small platform, not a page of bookmarks. If you never touch any of it, the weight is still modest by the standards of a modern container.

Mealie versus Tandoor in one paragraph

Tandoor is the other serious option in the recipes category, and the two are closer than their communities admit. Tandoor has the deeper data model (ingredient hierarchies, keyword trees, nested sub-recipes) and suits someone cataloguing a serious collection. Mealie has the friendlier interface, the better phone experience and the easier onboarding for a partner who does not care about data models. For a household that mostly imports, plans and shops, Mealie; for a cook building a structured archive, Tandoor.

What I'd do

Mealie with Postgres behind a reverse proxy, default credentials changed within the first minute, signups off, one household group with everyone invited. Import the 20 recipes you actually cook rather than the 500 you might, put next week on the calendar, and let the shopping list do the persuading. If you later find yourself wanting ingredient taxonomies, you will know Tandoor is for you; most households never get there.

Compare Mealie

9 head-to-head comparisons.

Similar recipe managers apps