Tools Guides
productivity Free No signup

Shopping List

Smart shopping list with categories, price estimates, and localStorage persistence.

Loading tool…

About this tool

Build your shopping list with item names, quantities, units, and categories. Items are automatically grouped by category (Produce, Dairy, Meat, etc.), you can add optional prices for a running total, check off items as you shop, and share or import lists as plain text.

How to use

  1. 1 Step 1: Type an item name, set the quantity and unit, choose a category, and press Add.
  2. 2 Step 2: Items are grouped by category automatically; tap any item to mark it as found.
  3. 3 Step 3: Add optional prices per item to see an estimated total at the bottom.
  4. 4 Step 4: Use 'Share List' to copy a plain-text summary, or 'Import' to paste a list and auto-parse it.

A shopping list that organizes itself by aisle

The quiet superpower of this list is that it groups items by category automatically. As you add things, each one drops into a section — Produce, Dairy, Meat, Bakery, Frozen, Canned, Beverages, Household, or Other — and the list renders those sections in a fixed order. The practical effect is that your list mirrors the layout of a typical supermarket: you collect all the produce, then everything refrigerated, then the dry goods, without doubling back across the store. No more zig-zagging because "milk" was scribbled three lines below "apples."

How an item is stored

Every item carries five pieces of information: a name, a quantity, a unit, a category, and an optional price. The available units are pcs, pkg, kg, g, lbs, and oz — enough to cover both whole items and weighed goods. The list lives entirely in your browser's local storage under a single key, so it survives a page refresh, a closed tab, or a restarted laptop. Because nothing is sent to a server, your list is private by default and works with no internet connection at all.

The running total, and how it is calculated

If you fill in a price, the tool keeps a live estimated total at the bottom. The important detail is that price is treated as a per-unit figure and multiplied by quantity: an item entered as 3 kg of apples at $2.00 contributes 3 × 2.00 = $6.00 to the total, not $2.00. Items without a price are simply left out of the sum, so you can price only the things you care about budgeting and ignore the rest. The total bar appears only once at least one priced item exists.

A worked example

Say you add: 6 pcs Eggs (Dairy, $0.30 each), 1 pkg Bread (Bakery, $2.50), and 2 kg Bananas (Produce, $1.10). The list shows three category sections in store order — Produce, then Dairy, then Bakery — and the total reads (6 × 0.30) + (1 × 2.50) + (2 × 1.10) = $6.50. Tap the circle beside an item to check it off; it gets a strike-through but stays on the list and in the total, so you can see what is already in the cart.

Sharing and importing in plain text

The Share button turns your list into clean plain text — category headers like --- Produce ---, then one line per item in the form [ ] 2 kg Bananas ($1.10 ea), with [x] marking checked items. This is deliberately human-readable so you can paste it into a text message, a note, or an email and the recipient understands it instantly. The Import button reverses the process: paste lines like 2 kg Apples or 1 pcs Bread and the tool parses each into an item. It recognizes the quantity unit name pattern, skips category headers, and strips any [x] checkboxes, so you can round-trip a shared list back into an editable one.

Use cases

  • Weekly grocery runs. Build the list through the week as you run low on things, then shop it in aisle order.
  • Splitting the trip. Share the text list with a partner so two people can divide a big shop without buying duplicates.
  • Budgeting. Add prices to see the bill before you reach the till, and trim items if the total runs high.
  • Recurring lists. Keep a master list in a note, paste it into Import each week, and tweak from there instead of starting fresh.

Tips and common mistakes

  • Price is per unit, not per line. For a $5 pack of six, enter quantity 1, unit pkg, price 5.00 — not quantity 6, or the total will be six times too high.
  • Imported items land in "Other." The plain-text format does not record categories, so anything you import starts in the Other section; re-add it through the form if you want it sorted.
  • Checking off does not remove an item. A ticked item stays for reference; use the ✕ to delete it entirely, or Clear All to wipe the list.
  • Local only means device-local. Because the list lives in this browser, it will not appear on your phone unless you share the text across. That is the trade-off for needing no account and no server.
  • Use Enter to add quickly. Pressing Enter in the name field submits the item, so you can type a name and hit Enter repeatedly to add a row of staples fast.

Frequently Asked Questions

{# Alpine.js — self-hosted. (The previous jsdelivr CDN tag had a stale SRI integrity hash, so the browser refused to run it and window.Alpine was never defined — silently breaking every FAQ accordion and Alpine tool.) #}