Skip to content

Online Grocery List

Build a private browser-saved grocery checklist with categories, duplicate protection, purchase toggles, cleanup, and exact clipboard export.

Privacy: your files never leave your device. All processing happens locally in your browser.

How to use

  1. 1.Enter a grocery item, choose a simple category, and add it to the list.
  2. 2.Check purchased rows, remove individual entries, or clear all purchased rows while reviewing what remains.
  3. 3.Copy the exact checklist when needed; remember that browser-local storage is not cloud backup.

About Online Grocery List

Online Grocery List is a small browser-based checklist for planning a shopping trip without creating an account. Add an item, choose a category, mark it purchased, remove it, clear purchased entries, or copy the exact list. The current list is saved only in localStorage on this browser and is never uploaded to Lizely.

Each item has a user-provided name, one interface category, a purchased state, and a browser-generated identifier. Names are trimmed and internal whitespace runs are reduced to one ordinary space. This prevents visually accidental duplicates caused only by leading spaces or repeated gaps while preserving the words the visitor entered.

Duplicate detection is case-insensitive. Milk and milk are treated as the same item, so a second entry returns an explicit error rather than producing two confusing rows. The tool does not merge quantities, infer brands, or decide that related names such as apple and apples are identical.

The category choices are Produce, Dairy, Bakery, Meat, Pantry, Frozen, Household, and Other. They are a bounded interface organization choice, not a nutrition standard, store taxonomy, or claim about where every product belongs. Visitors can use Other whenever the simple set does not fit.

A list can contain up to 100 unique items, and an item name can contain up to 80 Unicode code points. These bounds keep rendering, localStorage writes, clipboard output, and mobile interaction predictable. Empty names, overlong names, duplicate identifiers, duplicate names, and invalid categories produce errors without changing the saved list.

Checking an item changes only its purchased flag. Clear purchased removes every checked row and retains unchecked rows in their existing order. Remove deletes one selected row. There is no hidden sorting, category regrouping, price calculation, quantity arithmetic, recommendation, or automatic inventory behavior.

Copy list formats one item per line. Unchecked rows begin with [ ], checked rows begin with [x], and the chosen category follows an em dash. Clipboard success appears only after the browser confirms the write. If permission is denied, the page tells the visitor to select the visible list manually.

The saved value is versioned under a Lizely-specific localStorage key. On load, the parser accepts only an array of structurally valid rows, rejects more than 100 stored entries, and drops malformed rows. Invalid JSON returns an empty list rather than crashing the page or trusting arbitrary stored objects.

Local browser storage is convenient but not a backup or sync service. Clearing site data, using private browsing, switching browsers, changing devices, or browser cleanup policies can remove the list. The tool has no cloud recovery, sharing link, multi-user editing, login, notification, or cross-device synchronization.

Use the list for a single shopping trip, pantry reminder, household supply run, or quick checklist. Do not place passwords, payment information, medical details, or other sensitive data in browser storage. Anyone with access to the same browser profile may be able to view locally stored entries.

The item categories and ordering do not provide dietary, allergy, health, budgeting, or food-safety guidance. Verify labels, prices, storage requirements, and personal needs independently. The tool only records the text and state that the visitor chooses.

Pure logic tests cover normalization, duplicate rejection, toggling, removal, clearing purchased items, exact export, storage parsing, missing identifiers, and length boundaries. React connects those tested operations to explicit user actions and writes only the resulting array to localStorage. No remote database, worker, AI model, analytics payload containing the list, or new package participates.

Methodology & sources

Normalize a proposed name by trimming and collapsing internal whitespace, enforce one through 80 Unicode code points, at most 100 rows, a nonempty unique identifier, a whitelisted interface category, and case-insensitive unique names; return immutable arrays for add, toggle, remove, and clear-purchased operations; serialize valid rows to a versioned localStorage key after each action; parse only structurally valid stored rows; format exact [ ] or [x] lines with category labels; and report clipboard success only after confirmation.

Frequently asked questions

Where is my grocery list saved?
Only in localStorage for this browser profile; it is not uploaded or synchronized.
Why can I not add Milk and milk separately?
Duplicate checking is case-insensitive to prevent accidental repeated items.
Will the list survive clearing browser data?
No. Clearing site storage, private browsing, or switching devices can remove it.
Does the tool calculate prices or quantities?
No. It is a bounded checklist and does not infer shopping data.

Text Tools guides

View all