Reveal Hidden Files
approvedby Josip Markus
Reveal dot-prefixed files and folders in the File Explorer panel, with a per-pattern deny list. - This plugin has not been manually reviewed by Obsidian staff.
Reveal Hidden Files
An Obsidian desktop plugin that surfaces dot-prefixed files and folders in the File Explorer panel, with a per-pattern deny list for entries you want to keep hidden.
The plugin ships with default deny patterns for .git/ and .venv/ so vaults with real git repositories or Python virtual environments do not freeze on toggle. Other dot-prefixed entries (.obsidian/, .env/, .trash/, .DS_Store) appear when the toggle is on by default. Remove the defaults under Settings → Community plugins → Reveal Hidden Files → Deny patterns if you want .git/ or .venv/ visible; add new patterns there for any other dotfile content you want kept hidden.
Installation
From Obsidian: In Settings → Community plugins → Browse, search for "Reveal Hidden Files", then install and enable it.
From GitHub: Download main.js, manifest.json, and styles.css from the latest release into YourVault/.obsidian/plugins/reveal-hidden-files/, then enable the plugin in Settings → Community plugins.
Usage
- Enable Reveal Hidden Files in Settings → Community plugins.
- Toggle visibility through any of the following affordances. All four invoke the same toggle state:
- The eye-off ribbon icon in Obsidian's left ribbon
- The command palette command Toggle hidden files visibility
- An optional keyboard shortcut you bind under Settings → Hotkeys
- The toggle control inside the plugin's settings panel
- Optional: edit deny patterns under Settings → Community plugins → Reveal Hidden Files → Deny patterns. The defaults (
.git,.venv) keep heavy folders hidden even when the toggle is on; add your own to keep additional entries hidden, or remove either default to surface that folder. Patterns use gitignore-style semantics: a pattern without a forward slash matches the basename at any depth (e.g.,.DS_Storematches.DS_Storeeverywhere it appears in the vault;node_modulesmatches everynode_modulesfolder;.cachematches every.cachefolder). A pattern containing a forward slash matches the full vault-relative path via minimatch glob syntax (e.g.,.git/**matches everything inside any root.git/;.obsidian/plugins/*/data.jsonmatches that specific path;**/.DS_Storeis equivalent to bare.DS_Storeunder the basename rule but more explicit). - Optional: enable Settings → Files & Links → Detect all file extensions in Obsidian if you want files with unrecognized extensions (such as
.log,.env, or extension-less files) to also appear in the File Explorer. This plugin handles dotfile visibility only; the extension setting is a separate Obsidian preference the plugin does not modify.
Behavior
- Reveals any vault-relative path whose name begins with
., at any depth — except entries matching a deny pattern - Works for root-level and nested hidden paths, including deep dot-folders inside non-hidden parents (
projects/app/.cache/,notes/archive/.backups/, etc.) - Deny patterns use gitignore-style basename matching for bare names; full-path minimatch for patterns with
/ - Toggle state and deny patterns persist per vault across Obsidian restarts
- Default deny patterns for
.gitand.venvare seeded on first plugin load; remove them in settings if you want those folders visible - Serializes rapid toggle clicks so an in-flight toggle is not interrupted
- Does not rename, delete, or modify vault files on disk
- Does not modify Obsidian's "Detect all file extensions" setting; that remains under your control
- Restores Obsidian's default File Explorer behavior when the plugin is disabled or uninstalled
Affordances
| Affordance | Always available | Configurable |
|---|---|---|
| Ribbon icon | Yes | Hide via Obsidian's Appearance settings |
| Command palette command | Yes | Searchable as "Toggle hidden files visibility" |
| Keyboard shortcut | No (unbound by default) | Bind under Settings → Hotkeys |
| Settings-panel toggle | Yes | — |
Compatibility
Desktop only. The plugin depends on Obsidian's local filesystem adapter and several undocumented internal methods (reconcileDeletion, reconcileFileInternal, getRealPath, _exists, listRecursive). These are stable in practice but could change in a future Obsidian release, in which case the plugin may need an update.
Security and privacy
- Reads your vault's directory listings through Node.js filesystem APIs to find hidden files. Obsidian's own file API filters out dot-prefixed entries, so deeply-nested ones (such as
.cache/or.backups/) are invisible to it; reading the filesystem directly is the only way to surface them. The plugin only reads directory names to discover entries — it never creates, modifies, or deletes files through this access. - Uses undocumented Obsidian internals to register hidden paths in the File Explorer
- Reveals hidden files that may contain secrets, credentials, or configuration; review your deny patterns before sharing screenshots of your vault
- Does not use telemetry
- Does not make network requests
- Does not require an account or external service
- Does not include ads or paid features
Development
Build from source:
npm install # install dependencies
npm run build # production bundle (writes main.js)
npm run dev # watch build for iterating against a side-loaded vault
main.js is generated and is not committed to the repository.
Credits
The reconcileDeletion interception pattern is adapted from polyipseity/obsidian-show-hidden-files, the community plugin that first solved this problem.
License
MIT — see LICENSE. You are free to use, modify, and redistribute it.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.