Michael Naumov20k downloadsEnhances the Excluded files setting bringing gitignore syntax.
Obsidian's Files and links > Excluded files setting does less than its name suggests: excluded files still sit in the Files pane, still turn up in Backlinks, still appear in search. They are de-emphasized, not excluded.
This plugin makes them behave as though they are not there, and lets you say which ones with gitignore syntax — the pattern language you already know — kept in two places: global patterns in the plugin settings, which Obsidian Sync carries to every device, and local patterns in a .obsidianignore file for this device only. Your existing .gitignore and Obsidian's own setting can feed it too.
[!WARNING]
The plugin makes Obsidian behave like the ignored files do not exist. This might affect features like
Obsidian Sync,Obsidian Publish, etc.Ensure you configured the plugin correctly to avoid data loss.
The documentation is a demo vault. Every feature has a note that explains what it does and why you would want it, with folders already in place to hide and un-hide.
Start reading here — it is plain markdown, so it works on GitHub with nothing installed.
A copy of the vault ships with every release. You can access it via any of the following:
Advanced Exclude: Open demo vault command.advanced-exclude-demo-vault.zip from the Releases. It unzips into a single advanced-exclude-demo-vault-<version> folder.demo-vault/ in this repository.Exclude with gitignore syntax — a folder, an extension, a path, in two settings text areas: global patterns that sync with your vault, and local patterns kept in .obsidianignore for one device. A line starting with # is a comment, as in .gitignore; write \# for a pattern that really starts with #. 01 Exclude a folder
Whitelist instead of blacklist, including the negation trap that catches most people: once * ignores everything, folders must be re-included with !*/ before any !file rule can reach inside them. 02 Whitelist with negation
Catch pattern mistakes as you type — every pattern box lists, under it, the lines that match nothing (an unclosed [, a lone \ at the end, a ./ path) in red, and the lines that probably mean something else (a \ between folders, a trailing space, a regular expression copied from Obsidian's Excluded files) in amber. Nothing is blocked: every line is still saved and applied. When .obsidianignore is edited outside Obsidian and gains an error, a notice names the line when you come back.
Choose where patterns come from and how hard they hide — your .gitignore, Obsidian's own Excluded files setting, and how completely an ignored file disappears: Full removes it from Obsidian's index, so even a 30,000-file folder is never indexed; Files pane hides it from the Files pane only; Soft leaves it out of search, the quick switcher, link suggestions, graph, unlinked mentions and Bases, exactly where Obsidian's own Excluded files applies, while it stays in the Files pane and in links. The extra sources are off by default, so a fresh install changes nothing until you turn one on. 03 Exclude mode and sources
Pick the features the Soft mode reaches — search, graph, unlinked mentions and the rest each have a toggle, so a folder can be left out of unlinked mentions only while search and graph still find it. 03 Exclude mode and sources
Exclude notes by property, in the Soft mode — visibility: gm-only keeps a game master's notes out of search and graph without moving them. 03 Exclude mode and sources
Hide folders left empty by exclusion, cascading up through parents whose whole subtree went away. Genuinely empty folders stay visible. 04 Settings
Switch between profiles — named sets of patterns and settings that compose with @import, so Focus can import Work and add its own lines, with !negation working across them as in one .gitignore. @import file:<vault path> pastes a vault file's patterns the same way, so @import file:.gitignore places the vault's .gitignore anywhere in a profile. The profiles sync with the vault; each device picks its own active one from the status bar. 05 Profiles
| Plugin | Features | How Advanced Exclude differs |
|---|---|---|
Explorer Hider |
Explorer and bookmark hiding through CSS; context-menu selection | Broader exclusion: index filtering rather than CSS alone |
File Explorer++ |
Explorer hiding and pinning; wildcard and regex filters | Broader exclusion: can remove files from the index; no pinning |
File Hider |
Explorer context-menu hiding; visibility toggle command | Broader exclusion: pattern-based index filtering |
File Ignore |
Leading-dot renames; exclusion travels with the file | Same exclusion goal; keeps file names unchanged |
Hide Folders |
Explorer visibility toggle by folder name | Broader exclusion: patterns across paths; index exclusion as well |
Ignore |
.obsidianignore; native Excluded files list |
Same exclusion goal; removes files from the index too; synced patterns, profiles, validation |
Ignore Filters Boost |
Explorer actions editing native Excluded files; exclude-all-except-one | Broader exclusion: pattern rules rather than editing the native list |
Shadow Tree |
Explorer-only filtering; folder pins; optional Sync exclusion | Broader exclusion: can remove files from the index; no folder pinning |
Sieve |
Scan-time exclusion; Syncthing-style first-match rules; vault display name | Same exclusion goal; uses gitignore syntax; no vault renaming |
Toggle Excluded Folders |
One-click toggle of native Excluded files | Broader exclusion: maintained patterns and profiles; index filtering |
Last searched for similar plugins on 2026-10-26.
The plugin is available in the official Community Plugins repository.
To install the latest beta release of this plugin (regardless if it is available in the official Community Plugins repository or not), follow these steps:
Add plugin button once and wait a few seconds for the plugin to install.By default, debug messages for this plugin (id: advanced-exclude) are hidden.
If you need to enable them refer to the documentation.
All notable changes to this project will be documented in the CHANGELOG.
Contributions are welcome — see CONTRIBUTING to get set up.
Open issues through the issue forms, not as blank issues.
To report a bug from inside Obsidian, run the Advanced Exclude: Report a bug command. It opens the bug form with the plugin version, the Obsidian version and your operating system already filled in.
Filing from the CLI or the API (gh issue create --body, or an AI agent filing for you) skips the form, and gh issue create --template cannot load an issue form. In that case, open the matching form in .github/ISSUE_TEMPLATE/, copy every field as a ### <label> heading in the form's order, and fill in each one. Always state the plugin version, the Obsidian version and your operating system.