Grocy

ERP for your home groceries and pantry

Recipe Managers ★ 9.5k stars Medium setup MIT

Grocy is a self-hosted groceries and household management solution. It tracks pantry stock, expiration dates, shopping lists, recipes, chores, and meal planning all in one place.

Key features

  • Pantry stock and expiry tracking
  • Recipe and meal planning
  • Shopping lists
  • Chore and task tracking

Pros & cons

Strengths

  • Comprehensive household management
  • Barcode scanning support

Trade-offs

  • Busy interface
  • Initial data entry effort

Grocy replaces

Last reviewed Aug 26, 2026 · 745 words

Grocy works for exactly as long as you log every item that enters the house and every item that leaves it. For a 2-person household that is about 15 to 20 minutes a week once the products exist, and the week you stop, the stock numbers become fiction and the expiry warnings become noise. I have run it for years and would run it again, but that is the deal, and the "ERP for your home" tagline is a warning as much as a joke. Everything below is about making the logging cheap enough to survive.

Stock with quantities, locations (fridge, freezer, pantry) and best-before dates; a shopping list that fills itself from minimum-stock rules; recipes that check what you have and consume it when cooked; a meal plan that turns missing ingredients into the shopping list; chores with schedules; tasks; batteries with charge cycles; equipment with manuals attached. The expiry view is the payoff: a list of what goes off this week, sorted, with a consume button next to each line. The interface is dense, and every module is optional, which matters later.

Docker: the LinuxServer image on port 9283

services:
  grocy:
    image: lscr.io/linuxserver/grocy:latest
    ports:
      - "9283:80"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    volumes:
      - ./config:/config
    restart: unless-stopped

Default login is admin with password admin; change it. The SQLite database and uploaded pictures sit in config/, so that one directory is the backup. 256 MB of RAM is plenty. Upstream also publishes a two-container image (front end and back end); the LinuxServer one is simpler and what most people run. Behind a reverse proxy it wants no special settings.

Product setup is where people quit

The first evening is not scanning, it is defining products, and getting 3 fields right per product decides whether the weekly logging takes 15 minutes or 45. Set a stock unit and a purchase unit with a conversion (buy 1 pack, stock 6 eggs). Set a default location so a purchase needs no thought. Set a default best-before in days, so scanning milk gives it 7 days without typing a date. Do this for the 40 products you buy every week and skip the rest; the long tail of the pantry can stay untracked forever without hurting the expiry list. The data-entry effort everyone complains about is front-loaded, not permanent.

Scanning is what makes it sustainable

Typing product names is what kills it. Three ways round that. The open-source Grocy Android app has a camera scanner built in and connects with an API key from Settings, then Manage API keys; purchase and consume become 2 taps. Barcode Buddy is a companion server that sits in front of Grocy and takes input from a cheap USB or Bluetooth scanner, matching unknown barcodes against Open Food Facts to create products it has never seen. A 20 dollar USB scanner on the kitchen counter, wired to Barcode Buddy, is the setup that made my household keep logging. A Home Assistant integration exists as a custom component, so the expiry list and chores can appear on a wall tablet.

Turn off what you will not use

config.php in the config directory has a block of FEATURE_FLAG_* constants. Set FEATURE_FLAG_CHORES, FEATURE_FLAG_BATTERIES, FEATURE_FLAG_EQUIPMENT, FEATURE_FLAG_TASKS and FEATURE_FLAG_CALENDAR to false if you only want stock and recipes; the sidebar shrinks to something a partner will tolerate. Set CULTURE and CURRENCY there too. This is the single biggest fix for the "busy interface" complaint, and almost nobody does it.

If you only want recipes, do not use Grocy

Grocy's recipe module is built around stock consumption, not around cooking. If what you want is a recipe box with an importer that scrapes any site, a meal planner and a shopping list, Mealie or Tandoor do that better with a tenth of the setup; the recipes category covers the split. Grocy is for people who want to know what is in the freezer.

What I'd do

Run the LinuxServer image, define your 40 weekly products with units, locations and default best-before days, put a USB scanner on the counter through Barcode Buddy, install the Android app, and disable every module except stock, shopping list and recipes. Give it 4 weeks. If the household is still logging, keep it; if not, switch to Mealie and let the freezer stay a mystery.

Compare Grocy

1 head-to-head comparisons.

Similar recipe managers apps