Shopping List
Smart shopping list with categories, price estimates, and localStorage persistence.
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 Step 1: Type an item name, set the quantity and unit, choose a category, and press Add.
- 2 Step 2: Items are grouped by category automatically; tap any item to mark it as found.
- 3 Step 3: Add optional prices per item to see an estimated total at the bottom.
- 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
$5pack of six, enter quantity1, unitpkg, price5.00— not quantity6, 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.