siulved5429 downloadsMove notes into folders by ordered rules on tags, properties, titles and paths, with a preview before any bulk move.
Move notes into folders by ordered rules on tags, properties, titles and paths, with a preview before any bulk move.

Write the rules once and let them file your notes. Nothing moves until you ask (or turn on automatic moving), a bulk move shows you every move first, and every move can be undone.
A rule has a condition and a destination folder. A note goes to the folder of the first rule that matches it, checked from the top, so put the specific rules first.
| Condition | Matches |
|---|---|
| Tag | A tag, nested tags included: #project matches #project and #project/alpha, not #projects. Body tags and the tags property both count. |
| Property | A property equal to a value (ignoring case), or one item of a list property. Leave the value empty to match any note that has the property filled in. |
| Title matches | A regular expression tested against the note's name, ignoring case. ^\d{4}-\d{2}-\d{2}$ matches daily notes. |
| Path matches | A regular expression tested against the whole path, for example ^[^/]+\.md$ for notes in the vault root. |

Things that keep it from surprising you:
Templates by default, names compared ignoring case) never move, and neither does a note with note-mover: disable in its properties.A destination can hold placeholders, so one rule files notes by year, project or type:
| Placeholder | Becomes |
|---|---|
{{date:YYYY/MM}} |
The note's date in any Moment format. It comes from the property named in the rule's Date from property field when that holds a date such as 2026-10-09; otherwise from the note's creation time. |
{{property:project}} |
The property's value; the first item of a list; [[links]] without the brackets. |
{{tag}} |
The tag that made a tag rule match, with nested tags kept as folders: #project/alpha gives project/alpha. |
{{title}} |
The note's name. |
{{parent}} |
The name of the folder the note is in now. |
For example, Journal/{{date:YYYY/MM}} sends a note created in October 2026 to Journal/2026/10, and Projects/{{property:project}} sends a note with project: Apollo to Projects/Apollo. Under a rule with placeholders the settings show what the destination comes to for the note you have open.
\ / : * ? " < > | are removed or replaced, leading and trailing dots and spaces are dropped, and .. never survives.| Command | What it does |
|---|---|
| Move this note by the rules | Moves the open note now, or tells you why it stays. |
| Preview moves for the notes in this folder | Lists every move for the notes in the open note's folder (subfolders included) with a checkbox for each. Nothing moves until you press the button. |
| Preview moves for every note | The same for the whole vault. |
| Undo the last move | Puts the last batch back; run it again to step back through earlier batches (the last 20). A note that was moved again or whose old place is taken stays where it is. |
There is also a Move notes by the rules item in the file explorer's folder menu.
Moves use Obsidian's own rename, so links to the moved notes update as usual. Turn on Automatically update internal links in Settings → Files and links first: otherwise Obsidian asks about links once per note that has links to it, after each move. The preview warns you when it is off.
Turn on Move notes by themselves and a note that is edited or renamed and now matches a rule moves two seconds later, so a half-typed tag does not send it away. It is off by default. If the destination already has a note with that name, you get one notice and the note stays. A note you put back with undo is not moved by itself again, and for five seconds after a move the plugin ignores edits (Obsidian rewriting links in other notes), so a move never sets off more moves.
The rules work the same way (first match wins, a tag or a title regular expression picks the folder), plus properties and paths, a preview before bulk moves and undo. Rules are not imported; they take a minute to re-enter. note-mover: disable in the properties replaces Auto Note Mover's AutoNoteMover: disable.
It reads your notes' tags, properties and names to match rules and moves files inside your vault. It makes no network requests and sends nothing anywhere.
In Obsidian, open Settings → Community plugins → Browse and search for "Note Mover Rules".
| Plugin | What it does | Source |
|---|---|---|
| Shared Blocks | Write a block of text once and reuse it in any note. Edit the source and every reference re-renders live. | shared-blocks |
| Text Case and Cleanup | Change case, make camelCase or slugs, sort lines and remove duplicates, and repair text pasted out of a PDF, without touching code or URLs. | text-format |
| Typography as You Type | Curly quotes, dashes and ellipses as you type, kept out of code and maths, with Backspace to take one back. | smart-typography-plugin |
| Section Numbering | Number headings as an outline (1, 1.1, 1.2) and keep every link to them working when they renumber. | section-numbering |
| Spreadsheet to Table | Paste cells from Excel or Google Sheets as a Markdown table with a real header, insert CSV files, and copy tables back out. | spreadsheet-to-table |
| Hybrid Line Numbers | Relative and hybrid line numbers for Vim-style jumps, where a folded section counts as one line. | hybrid-line-numbers |
| List Item Callouts | Colour a single list item as a callout by starting it with a character such as &, ! or ?. |
list-item-callouts |
| Folder Counts | See how many notes or files each folder holds, right in the file explorer, with a vault total and folder exclusions. | folder-counts |
| Note Reading Time | Reading time of the current note or your selection in the status bar, optionally saved to a property. | note-reading-time |
| Task Rollover | Roll unfinished tasks from your last daily note into today's when it is created, with a real undo. | task-rollover |
| Zoom Into Section | Zoom into a heading or list item to see only it and its contents, with a breadcrumb bar to climb back out. | zoom-into-section |
| Link Title on Paste | Paste a web address and get a Markdown link with the page's title, fetched in the background and undone in one step. | link-title-on-paste |
| Update Radar | Checks your installed community plugins for updates in the background, shows what changed, and flags the ones that look abandoned. | community-update-checker |
| Dataview to Bases | Convert Dataview queries into Bases blocks, and see which queries in your vault can be converted. | dataview-to-bases |
| Line Editing Commands | Duplicate, join, sort and reverse lines, insert blank lines and jump to a line number, with multi-cursor support. | line-editing-commands |
| Tab History | Keeps each tab's back and forward history across restarts, and adds commands to move, maximize and close tabs. | tab-history |
| URL Cards | Shows web addresses as cards with title, description and image, and reads existing cardlink blocks. | url-cards |
| Vim Config | Loads a vimrc-style file from your vault so your key mappings and editor commands are ready when vim mode starts. | vim-config |
| Task Archive | Moves completed tasks, with their sub-items, into an archive section or note. | task-archive |
| Revisit Later | Link the current note into a future daily note, with a date typed in plain English, so it comes back when you want to review it. | revisit-later |
| Explorer Colors Plus | Color files and folders in the file explorer, with a palette, cascading to children, and import from File Color. | explorer-colors-plus |
| Book Lookup | Create book notes from Open Library or Google Books, with cover images, ISBN search and Book Search compatible templates. | book-lookup |
| Web Search Menu | Search the web for selected text or the note title from the right-click menu, with engines you define. | web-search-menu |
All of them are in the community directory: Settings -> Community plugins -> Browse, then search for the name.