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

Indexed Search

Michael NaumovMichael Naumov23 downloads

Makes core Search fast on large vaults, with the same results, through a trigram index kept in IndexedDB.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates1

Core Search has no index: every query reads every note in the vault and runs its matcher on each one. On a vault of tens of thousands of notes that is half a second to a second per query, every time. The fast search plugins answer in a search box of their own, with their own query language and their own, different results.

Indexed Search keeps core Search and makes it fast. It keeps a trigram index of your notes in IndexedDB and, for each query, hands core Search only the notes that can possibly match, so core reads and checks those instead of the whole vault. The pane, the query syntax and the matcher are core's own, so the results are exactly the ones core Search gives without the plugin. On a 37,000-note vault, queries came back 4 to 5 times faster. The index lives outside memory, adds nothing measurable to it at rest, and survives a restart or a crash without a rebuild.

Core Search reads only the notes that can match

More screenshots
Same query syntax, same results Turn narrowing off to compare Core Search reads only the notes that can match Same query syntax, same results Turn narrowing off to compare

Demo vault

The documentation is a demo vault. Every feature has a note that explains what it does and why you would want it, with a button that runs a search in the Search pane so you can watch it happen.

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:

  1. Running the Indexed Search: Open demo vault command.
  2. Downloading indexed-search-demo-vault.zip from the Releases. It unzips into a single indexed-search-demo-vault-<version> folder.
  3. Browsing its source in demo-vault/ in this repository.

What it does

  1. Narrows core Search: for every query typed into the Search pane, core reads only the notes the index cannot rule out. A note can contain lantern only if it contains lan, ant, nte, ter and ern, so every note missing one of them is skipped unread: see Core Search, narrowed.
  2. The same query language: plain terms, phrases, OR, -, parentheses, regular expressions, file:, path:, tag:, content:, match-case: and ignore-case: all narrow. Any query part the index cannot check, such as a term of one or two characters, /\d+/, a property or line:, leaves core to read every note, as it does without the plugin.
  3. Exactly core's results: the index only ever rules notes out, and core's own matcher decides. Canvas files, attachments, notes edited since they were indexed and notes not indexed yet always stay in, and a note edited while a search runs is checked again.
  4. A persistent index: the index is kept in IndexedDB, one small record per trigram and segment of notes, never in the heap. It is built once, in about a minute and a half on a 37,000-note vault, and kept current as notes change; on restart only the notes that changed are read again. A crash or a forced quit loses at most the last batch.
  5. A switch to compare: the shouldNarrowSearch setting turns narrowing off, with no restart, so you can time core Search alone or rule the plugin out. Every setting is listed by its data.json key in Settings.

See also

My other Obsidian resources

Plugin Features How Indexed Search differs
Advanced search adds VS Code-like search controls to core Search Complements it: changes no control, makes the search itself faster
Better Search Result Views groups core Search results under their headings and finds words split by line breaks Complements it: leaves the results and their view alone
Better Search Views shows core Search, backlinks and query results as outliner-like context trees Complements it: leaves the result view alone
CFR Find its own search box over a worker-powered index, with typo-tolerant fuzzy matching Same goal, different engine: keeps core Search's pane, syntax and exact results
CJK Search matches equivalent CJK and compatibility characters in Search and other views Complements it: does not change what a query matches
Core Search Assistant a keyboard interface and bigger previews for core Search Complements it: no interface of its own
Fast Find 10K fast fuzzy search for large vaults, titles first, then headings, then content Same goal, different engine: no separate search box or ranking; core Search answers
Lean Search its own quick search with precise matching and frecency ranking Same goal, different engine: core Search's own results and order
Native Search answers from the operating system's index (macOS Spotlight) in its own view Same goal, different engine: an index of its own on every platform, and core Search answers
Native Search Replace adds replace controls to core Search Complements it: no replace; only fewer files to read
Omnisearch its own fuzzy, ranked search box over a persistent index, with PDFs and OCR Same goal, different engine: keeps core Search's pane, syntax and exact results
Power Explorer a file explorer with instant word-prefix search for huge vaults Same goal, different engine: substrings and regexes, through core Search
Vault Finder its own fast full-text search, with optional AI keyword expansion Same goal, different engine: core Search's exact results, no AI
VaultDex relevance-scored full-text search with PARA filters and its own operators Same goal, different engine: core Search's query language and results

Last searched for similar plugins on 2026-11-01.

For plugin developers

Indexed Search publishes a typed API (contract 1.0.0) whose search(query) answers a query written in core Search's own syntax with exactly the files core Search lists, because core's own parser and matcher decide. It is declared in api.d.ts with its contract in api-contract.ts. How to reach it, its options and what a hit carries are in 03 For plugin developers.

Installation

The plugin is available in the official Community Plugins repository.

Beta versions

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:

  1. Ensure you have the BRAT plugin installed and enabled.
  2. Click Install via BRAT.
  3. An Obsidian pop-up window should appear. In the window, click the Add plugin button once and wait a few seconds for the plugin to install.

Debugging

By default, debug messages for this plugin (id: indexed-search) are hidden.

If you need to enable them refer to the documentation.

Changelog

All notable changes to this project will be documented in the CHANGELOG.

Contributing

Contributions are welcome — see CONTRIBUTING to get set up.

Support

Support this plugin

Filing an issue (for AI agents and humans)

Open issues through the issue forms, not as blank issues.

To report a bug from inside Obsidian, run the Indexed Search: 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.

License

© mnaoumov

HealthExcellent
ReviewSatisfactory
About
Keep core Search fast and accurate by building a persistent trigram index in IndexedDB that narrows which notes core must read. Return native core Search results much faster on large vaults, with minimal memory impact and an index that survives restarts and crashes.
SearchData
Details
Current version
1.0.0
Last updated
3 days ago
Created
Last week
Updates
1 release
Downloads
23
Compatible with
Obsidian 1.14.5+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Sponsor
Buy Me a Coffee
Author
Michael NaumovMichael Naumovmnaoumov
mnaoumov.dev
GitHubmnaoumov
Xmnaoumov
  1. Community
  2. Plugins
  3. Search
  4. Indexed Search

Related plugins

LiftOff

Mobile-first gym workout tracker. Log sets, reps, and weights with speed-optimized UX. Data stored as markdown in your vault.

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.

Quick Switcher++

Enhanced Quick Switcher, search open panels, and symbols.

Tag Wrangler

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

Omnisearch

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

Meld Encrypt

Hide secrets in your notes.

Tracker

Track occurrences and numbers in your notes.

CSV Table

Render CSV data as a table within your notes.

Quiet Outline

Make outline quiet and more powerful, including no-auto-expand, rendering heading as Markdown, and search support.

Charted Roots

Family tree visualization with GEDCOM/Gramps import and Canvas/PDF/Markdown export. Charts, maps, timelines, citations, fictional calendars. For genealogists, worldbuilders, and TTRPG campaigns.