Skip to content
Folder Tag Sync logo

Folder Tag Sync

Bridge Obsidian's rigid folders and flexible tags. Deterministic, rule-based, no AI inference.

A file lives in exactly one folder. But knowledge rarely fits one category — a Q4 retrospective is a project, an archive, a meeting, and something Alice worked on, all at once. Tags let you say so. Folder Tag Sync keeps both views in lockstep.

FILESYSTEM rigid · each file has one parent folder SYNC RULES ordered by priority · bidirectional TAGS polyhierarchy · each file can have many tag parents vault/ Projects/ Q4-Roadmap/ ◄ winner kickoff.md (placed by priority 10) brief.md notes.md Time/2024/q4/roadmap/ kickoff.md × would live here if Rule 2 won Topics/roadmaps/q4/ kickoff.md × would live here if Rule 3 won Archive/ 1 matches first priority 10 ✓ MOVES FILE folder ^Projects/(.*)$ tag #projects/{1} transforms: snake_case · strip emoji 2 matches second priority 20 TAG ONLY folder ^Time/(.*)$ tag #time/{1} transforms: snake_case 3 matches last priority 30 TAG ONLY folder ^Topics/(.*)$ tag #topics/{1} transforms: snake_case · lowercase projects/ └ q4_roadmap/ └ kickoff.md ★ ├ brief.md └ notes.md via Rule 1 · #projects/{1} time/ └ 2024/q4/roadmap/ └ kickoff.md ★ ├ brief.md └ notes.md via Rule 2 · #time/{1} topics/ └ roadmaps/q4/ └ kickoff.md ★ ├ brief.md └ notes.md via Rule 3 · #topics/{1} One folder branch. Three priority-ordered rules match. The same content lives in three tag hierarchies. Every arrow is bidirectional — folder changes propagate to tags; tag changes move the file.

Folders are rigid, single-hierarchy structures required for file storage. Tags are flexible, overlapping hierarchies better for knowledge representation. You need both — and you need them to stay in sync without having to think about it.

Folder Tag Sync bridges the two with deterministic, rule-based transformations. No AI inference. No surprises.

Folder → tag

Drop a file into a folder, and matching tags appear in frontmatter. Transform naming conventions on the way (Title Case → snake_case, strip emojis, handle Johnny Decimal prefixes).

Tag → folder

Add a tag to a note, and the file moves to the right folder. Reverse the naming transformations cleanly.

Regex-powered

Match paths and tags with regex. Named capture groups. Multiple rules with priority ordering.

Transformation pipeline

Compose case conversions, emoji handling, number-prefix stripping, and custom regex into per-rule pipelines.

File event → Rule matcher → Transformation pipeline → Sync executor
  1. Rule matcher finds rules by priority using regex patterns
  2. Transformation pipeline converts between folder and tag naming conventions
  3. Sync executors update frontmatter tags or move files

Phase 1 complete: core transformations, rule matching, both sync directions, settings UI, 156+ automated tests.

See the roadmap for what’s next.