Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Unified Shopping List Sorter

oirehToirehT211 downloads

Auto-sort managed shopping-list blocks by checkbox status, configured store keywords, and item name.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates5

Unified Shopping List Sorter is an Obsidian plugin for managed shopping-list blocks. It inserts Markdown task-list blocks into notes and keeps only those blocks sorted by checkbox status, configured store keywords, and item name.

Current scope

  • Insert a managed shopping list from the command palette.
  • Sort managed shopping-list blocks without touching normal checkboxes elsewhere in the note.
  • Hide managed block markers in the editor so lists render cleanly.
  • Keep unchecked items above checked items.
  • Sort store-aware items using configurable German grocery store keywords.
  • Auto-sort with a configurable debounce delay.

Usage

Use the command palette command Unified Shopping List Sorter: Insert shopping list to add a managed block to the current note:

<!-- shopping-list:start {"title":"Shopping list"} -->
## Shopping list
- [ ] Item
<!-- shopping-list:end -->

Only content between those markers is managed. The plugin hides the marker lines in the editor while keeping them in the Markdown source. Normal Markdown task lists elsewhere in the note are ignored.

Use Unified Shopping List Sorter: Sort shopping lists in current note to sort manually. When auto-sort is enabled, the plugin also sorts after editor changes once the configured delay has elapsed. The cursor moves with the item you were editing, so you can keep typing where you left off.

Sorting rules

  • unchecked tasks first
  • checked tasks second
  • untagged items before store-grouped items
  • store groups sorted A-Z
  • items inside each group sorted A-Z with German-aware collation

Store keywords are matched case-insensitively around word and punctuation boundaries. The default keywords are aldi, dm, edeka, lidl, netto, penny, and rewe.

German supermarket examples

With the default German store keywords, each checkbox-status group is sorted in this order:

  1. Items without a recognised store keyword
  2. aldi
  3. dm
  4. edeka
  5. lidl
  6. netto
  7. penny
  8. rewe

The comma-separated setting controls which store names are recognised, not a manual priority order. Store groups are ordered alphabetically. Inside a store group, the store keyword is ignored for item-name sorting. If an item mentions several stores, such as Pizza Rewe/Aldi, it is grouped under the alphabetically first matched store, in this case aldi.

For example, this managed block:

<!-- shopping-list:start {"title":"Alltag einkaufen"} -->
## Alltag einkaufen
- [ ] Pesto Rewe
- [x] Waschmittel dm
- [ ] Hafermilch
- [ ] Gurken Edeka
- [ ] Nudeln Rewe
- [ ] Pizza Rewe/Aldi
- [ ] Shampoo dm
- [ ] Kaffee
- [ ] Milch Aldi
- [x] Butter Aldi
- [ ] Duschgel dm
- [ ] Brot Lidl
<!-- shopping-list:end -->

is sorted as:

<!-- shopping-list:start {"title":"Alltag einkaufen"} -->
## Alltag einkaufen
- [ ] Hafermilch
- [ ] Kaffee
- [ ] Milch Aldi
- [ ] Pizza Rewe/Aldi
- [ ] Duschgel dm
- [ ] Shampoo dm
- [ ] Gurken Edeka
- [ ] Brot Lidl
- [ ] Nudeln Rewe
- [ ] Pesto Rewe
- [x] Butter Aldi
- [x] Waschmittel dm
<!-- shopping-list:end -->

Some common German supermarket keyword sets produce these group orders:

  1. aldi, edeka, rewe sorts as untagged, aldi, edeka, rewe.
  2. aldi, lidl, netto, penny sorts as untagged, aldi, lidl, netto, penny.
  3. dm, edeka, rewe sorts as untagged, dm, edeka, rewe.

Settings

  • Auto-sort: enable or disable sorting after edits.
  • Auto-sort delay: debounce delay in milliseconds.
  • Store keywords: comma-separated store names for grouping.
  • Default list title: heading used by the insert command.

Settings are saved through Obsidian plugin data (.obsidian/plugins/shopping-list-sorter/data.json). With Obsidian Sync, enable syncing for plugin data/community plugin settings so store keyword changes are carried to other devices in the sync chain.

Development

pnpm install
pnpm test
pnpm build

The Obsidian runtime loads manifest.json, the bundled main.js, and styles.css from a vault plugin folder:

<Vault>/.obsidian/plugins/shopping-list-sorter/
HealthExcellent
ReviewSatisfactory
About
Insert and maintain managed shopping-list blocks in notes, keeping unchecked items above checked ones and grouping items by store keywords with German-aware A–Z sorting. Hide management markers in the editor and ignore normal checkboxes elsewhere. Auto-sort lists after edits with a configurable delay.
TasksAutomation
Details
Current version
1.0.4
Last updated
Last week
Created
5 months ago
Updates
5 releases
Downloads
211
Compatible with
Obsidian 1.0.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
oirehToirehToireht
GitHuboireht
  1. Community
  2. Plugins
  3. Tasks
  4. Unified Shopping List Sorter

Related plugins

Rollover Daily Todos

Rollover any unchecked checkboxes from your last daily note into today's note.

Task Collector

Change task status and collect tasks within a document using hotkeys and context menus.

Todoist Sync

Materialize Todoist tasks within your notes.

Things3 Sync

Sync between Obsidian and Things3. Supports multi-language, tags and dates.

TaskNotes

Note-based task management with calendar, pomodoro and time-tracking integration.

Homepage

Open a note, base, or workspace on startup, or set it for quick access later.

Templater

Create and use dynamic templates.

BRAT

Easily install a beta version of a plugin for testing.

Linter

Format and style your notes. Linter can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular Markdown contents like list, italics, and bold styles; and more with the use of custom rule options.

Advanced URI

Control everything with URI.