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

Unhidden

notenerdnotenerd697 downloads

Reveal hidden dot-folders (like .claude or .github) in the file explorer, search, and Bases, with live updates, file-type filters, and exclusions.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates2

An Obsidian plugin that reveals hidden dot-folders (.claude, .github, .vscode, and friends) inside your vault. Revealed folders show up in the file explorer, search, the metadata cache, and Bases, and stay live as files change on disk. Nothing on disk is ever modified: revealing and hiding only changes what Obsidian indexes.

Features

  • Reveal any hidden folder or file: toggle vault-root dot-entries from settings, reveal a nested hidden path like projects/.notes, or reveal a single dotfile like .env.
  • Eager indexing: the full folder tree is registered the moment you reveal it, including deeply nested sub-folders.
  • Live updates: a recursive watcher keeps revealed folders in sync as files are created, changed, or deleted.
  • New-path alerts: a lightweight watcher on the vault root notices freshly created hidden folders/files and nudges you to reveal them.
  • File-type control: index only an allowlist of extensions (the default), or flip to indexing every file type. Dotfiles also match on the segment after their leading dot, so env in the allowlist covers .env, .env.local and .env.example, and gitignore covers .gitignore. Files with no extension at all (LICENSE, Makefile) stay out.
  • Visible in the file explorer: indexing a file is not enough for Obsidian to list it — the explorer only draws a row for an extension that maps to a view. Allowlisted extensions Obsidian does not already handle are mapped to the markdown view, so revealed files appear in the sidebar and open as editable text instead of being handed to your default app. Toggle it off under File types if it clashes with another plugin.
  • Exclusions: folder names like node_modules are skipped wherever they appear, so revealing .expo or a project folder doesn't flood your index.
  • Command palette: Reveal a hidden folder, Hide a revealed folder (both with fuzzy pickers), and Rescan revealed folders.

A limitation worth knowing

Obsidian reads a file's extension from the last dot in its name. A file whose only dot is the leading one — .env, .gitignore, .prettierrc — therefore has no extension as far as Obsidian is concerned, so there is nothing for the mapping above to bind to. Those files are indexed either way (search, links, Bases and other plugins see them), but listing them in the explorer needs the second toggle described below; without it, opening one hands it to your default app.

Split dotfiles are fine, because their extension comes from the last dot: .env.local is extension local, .env.example is example, .eslintrc.json is json. Those are in the default allowlist and show up normally, listed under their basename with the extension as a badge. A file named config.env works too — only the bare form is affected.

Also show files with no extension (off by default, under File types) covers the bare form by claiming the empty extension. The claim cannot be scoped to revealed folders, but in practice its reach is narrow: Obsidian does not index extensionless files from ordinary folders at all, so the only ones it can affect are those this plugin reveals. A LICENSE sitting in a normal folder stayed unindexed and unlisted in testing. It is off by default because the claim is still app-wide and undocumented, not because it was observed to cause trouble.

Do note what revealing an .env file means: its contents become searchable, show up in Quick switcher, and are visible to anything that walks the vault — sync included. That is the point of the feature, but it is worth a thought before turning it on in a vault that syncs.

How it works

Obsidian has no public API for indexing hidden paths, so the plugin calls (and patches) a small set of undocumented methods on the desktop FileSystemAdapter (reconcileFolderCreation, reconcileFileInternal, reconcileDeletion, and the listRecursiveChild / reconcileFile entry points). All patches are guarded, installed only while at least one folder is revealed, and fully restored on unload. This also means the plugin is desktop only.

Getting a revealed file to appear takes a second, separate mechanism. Obsidian's file explorer only draws a row for an extension that maps to a view, so the plugin claims the allowlisted extensions Obsidian does not already own (via the documented Plugin.registerExtensions) and maps them to the markdown view. The undocumented app.viewRegistry is read only to see which extensions Obsidian already owns — remapping those would break their real viewers — and to hand claims back when the allowlist changes mid-session. Every claim is released on unload. Because a row is created at the moment a file enters the index, changing either display setting forces a full conceal-and-re-reveal.

Development

npm install
npm run dev    # unminified build with inline sourcemaps
npm run build  # typecheck + minified production build

The build bundles src/main.ts into main.js with esbuild. Copy (or symlink) main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/unhidden/ and enable the plugin in Settings → Community plugins.

Layout

File Role
src/main.ts Plugin entry point: lifecycle, commands, settings persistence
src/reveal-engine.ts Core: reveals/conceals folders, eager tree indexing, adapter patches
src/vault-internals.ts Typed surface of the undocumented adapter methods and view registry
src/settings.ts Settings shape, defaults, legacy-format migration, input parsing
src/settings-tab.ts Settings UI
src/folder-pick-modal.ts Fuzzy folder picker used by the commands

License

MIT — see LICENSE.

HealthExcellent
ReviewSatisfactory
About
Reveal hidden dot-folders and dotfiles so they appear in Obsidian's file explorer, search, metadata cache, and Bases. Keep revealed folders live with eager indexing and recursive watchers without modifying files on disk; detect new hidden paths and restrict indexing by file type. Manage reveals and rescans from the command palette; desktop only.
FilesSearchBases
Details
Current version
1.1.0
Last updated
2 weeks ago
Created
4 months ago
Updates
2 releases
Downloads
697
Compatible with
Obsidian 1.4.0+
Platforms
Desktop only
License
MIT
Report bugRequest featureReport plugin
Author
notenerdnotenerd
GitHubnotenerdofficial
  1. Community
  2. Plugins
  3. Files
  4. Unhidden

Related plugins

Omnisearch

Intelligent search for your notes, PDFs, and OCR for images.

Home tab

A browser-like search tab for your local files.

Notebook Navigator

A better file browser and calendar inspired by Apple Notes, Bear, Evernote and Day One.

TaskNotes

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

Smart Connections

Find related notes and excerpts while writing. Your AI link building copilot displays relevant content in graph + list view. A local embedding model powers semantic search. Zero setup. No API key.

Claudian

Embeds Claude Code/Codex and other local Agents as AI collaborators in your vault.

Quick Switcher++

Enhanced Quick Switcher, search open panels, and symbols.

Advanced URI

Control everything with URI.

Tag Wrangler

Rename, merge, toggle, and search tags from the tag pane.

Thino

Quickly capture memos and display them in the sidebar with a heatmap. (Closed source)