工具 指南
productivity 免费 无需注册

购物清单

智能购物清单,带分类、价格估算和localStorage持久化功能。

正在加载工具…

关于此工具

使用商品名称、数量、单位和类别构建您的购物清单。商品自动按类别分组(农产品、乳制品、肉类等),可添加可选价格以显示累计总计,购物时勾选商品,并以纯文本格式分享或导入清单。

使用方法

  1. 1 第一步:输入商品名称,设置数量和单位,选择类别,然后按「添加」。
  2. 2 第二步:商品自动按类别分组;点击任意商品将其标记为已找到。
  3. 3 第三步:为每件商品添加可选价格,以查看底部的估算总计。
  4. 4 第四步:使用「分享清单」复制纯文本摘要,或使用「导入」粘贴清单并自动解析。

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.

常见问题

{# 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.) #}