Obsidian Find and Replace Across All Files: How to Make it Work

Rafael Pinheiro

Rafael Pinheiro

Rafael Pinheiro is founder of Ottic, building AI-native editorial infrastructure that helps companies turn expertise into scalable, high-quality content engines optimized for Google and AI search. Previously, he was founder of Clipping, an education platform focused on high-performance learning, where he led growth, product, and content at scale.

You changed your mind about a tag. Maybe #project should have been #work all along. Or a client corrected their name spelling and now it's wrong in 300 notes. You press Cmd+H, ready to fix it — and Obsidian's replace bar says "Search and replace in current file."

One file. That's it.

This gap has frustrated the Obsidian community since 2020. The original feature request has over 260 likes and keeps growing. As one user put it:

"I think this is a key feature that seems core to a text editor." — sam.baron, Obsidian Forum

The good news: there are real solutions now. Some are plugins you install in a minute. Others involve external editors. And newer AI-powered tools let you describe what you want changed in plain English. The right choice depends on what you're trying to do — so let's start there.

Key Takeaways

  • Obsidian has no built-in vault-wide replace — Cmd+H / Ctrl+H only works in the note you're editing
  • Two community plugins handle vault-wide replacement, each with different strengths — one prioritizes speed, the other safety
  • VS Code works as an external workaround but doesn't understand Obsidian's [[wikilinks]], so you can break connections
  • Tag-specific changes have a dedicated solution in the Tag Wrangler plugin (873 GitHub stars)
  • AI tools like Desktop Commander handle conditional, context-aware replacements that no plugin can — like "only replace in files tagged #draft"

Quick Reference: Which Tool for Which Job

Before diving into each option, here's the short answer:

What you need to doBest toolWhy
Fix a typo in a single noteObsidian's built-in Cmd+HAlready there, no setup
Replace a word or phrase across your vaultGlobal Search and Replace pluginFast, regex support, stays inside Obsidian
Replace with a preview of every changeFind-n-Replace pluginShows each match, lets you pick which to change
Rename or merge tags vault-wideTag Wrangler pluginBuilt specifically for tag operations
Advanced regex across files with filteringVS Code (Cmd+Shift+H)Powerful search, file pattern filtering
Conditional replacements ("only in draft files")Desktop CommanderNatural language, reads file context before acting

Now let's look at each approach in detail.

The Built-in Replace: What It Does and Where It Stops

Obsidian's native find-and-replace is easy to miss because it looks like it might work vault-wide. Open it with Cmd+H on Mac (Ctrl+H on Windows) or through the Command Palette by typing "replace."

It handles single-file replacements well. Swap a word, fix a date, clean up formatting — within the note you're editing, it's fine.

But the vault-wide Search panel (the left sidebar) is read-only. You can find text across every note in your vault using operators like file:, path:, tag:, and even regex — but there's no replace button. You can look, but you can't touch.

"There is currently no core Obsidian ways to search and replace." — smiggles, Obsidian Forum

This is the wall that sends people searching for alternatives.

Vault-wide Plugins: Two Options, Different Tradeoffs

The Obsidian community has built plugins to fill the gap. Both are worth knowing about — they solve different versions of the same problem. (For more community plugins that extend Obsidian, our roundup of the best Obsidian plugins covers the essentials.)

Global Search and Replace

The Global Search and Replace plugin was born directly from that 2020 feature request thread. Its creator, Mahmoud Fawzy Khalil, announced it in the forum after years of community demand. It now has over 52,000 downloads.

Install it: Settings > Community Plugins > search "Global Search and Replace" > Install > Enable.

How it works: Open the Command Palette, type "Global Search and Replace." A search box appears that works across every markdown file in your vault. It supports regex, case-sensitive matching, and special replacement patterns like $1 for capture groups.

The tradeoff: Speed over caution. There's no preview of what will change — you type the replacement, confirm, and it applies everywhere immediately. For straightforward swaps ("Johanson" to "Johansson"), this is fast and effective. For anything involving patterns that might match more than you expect, you're operating without a safety net.

Find-n-Replace

The Find-n-Replace plugin takes the opposite approach: safety over speed.

It shows every match before you commit. You can click individual results to include or exclude them. It supports file filtering (include/exclude patterns like VS Code), multiline matching, and search history. It works on all text-based files in your vault, not just .md.

Where it shines: When you need to see exactly what's about to change. Replace #project with #work and you'll see every match listed — including the ones you didn't expect, like #project-alpha appearing in the results.

The catch: It's newer (released late 2025) and its warning is direct: "This plugin directly modifies your vault files! All replace operations permanently change file contents." There's no undo beyond what you've backed up.

FeatureGlobal Search and ReplaceFind-n-Replace
Preview before replacingNoYes
Select individual matchesNoYes (Ctrl/Cmd+click)
File include/exclude filtersNoYes
Regex supportYesYes
Multiline matchingNoYes
Search historyNoYes (configurable)
Downloads52,000+New (2025)
Non-.md filesNoYes

When Tags Are the Problem: Tag Wrangler

A huge portion of "search and replace" requests in Obsidian are actually about tags. Someone synced highlights from Readwise and ended up with thousands of #orange and #pink tags scattered across their vault. Or they want to restructure #project into #work/project.

"Having synced my Obsidian with highlights from readwise, I now have tags from those highlights in Obsidian, many thousands of 'orange', 'pink' etc" — drjasonclark, Obsidian Forum

For tag-specific operations, Tag Wrangler is the tool. With 873 GitHub stars, it's the most popular plugin in this space. Right-click any tag in the sidebar and you can rename it — across every file in your vault. It handles subtags, merges, and hierarchical restructuring.

The key advantage: Tag Wrangler understands what a tag is. A generic find-and-replace would change #project inside a heading like ## Project Overview, which isn't a tag at all. Tag Wrangler uses Obsidian's own parser to identify real tag instances and only touches those.

The VS Code Workaround (and Why It's Risky)

In nearly every forum thread about vault-wide replace, someone recommends VS Code within the first three replies:

"If you install Code from Microsoft you can use Ctrl - Shift - H to search and replace I believe." — b83s, Obsidian Forum

The steps are simple: open VS Code, go to File > Open Folder, pick your vault, and press Cmd+Shift+H (Mac) or Ctrl+Shift+H (Windows). You get regex support, file filtering by pattern, and a full preview of every match.

It works well for plain text. Fixing a misspelled word, updating a URL, standardizing a date format — VS Code handles these cleanly.

It doesn't understand Obsidian. This is where people get burned. Change "Meeting Notes" to "Meetings" and VS Code dutifully updates every file — including inside [[Meeting Notes]] links that other notes use. Obsidian won't know those links changed, so they all break silently. You might not notice for weeks, until you click a link and land on an empty page. (Our guide to Obsidian's markdown syntax explains how these links work under the hood.)

If you use VS Code for replacement, always check your wikilinks afterward. The core plugin "Outgoing Links" will show broken references in whatever note you're viewing.

Try Desktop Commander App

Desktop Commander reads your files, runs commands, and automates workflows — all in natural language.

Download Free

Desktop Commander AI Approach to Search and Replace in Obsidian

All the tools above share a limitation: they can only match patterns. They can find text that looks like what you typed and replace it with what you told them. But they can't reason about what they're doing.

Here's what that means in practice. Say you want to:

  • Replace #todo with #review — but only in files that have status: draft in their frontmatter
  • Change [[Meeting Notes]] to [[Meetings]] across your vault — and update both the filename and every link pointing to it
  • Fix a name everywhere — but skip code blocks and quotes

None of those are "find and replace" operations. They require reading each file, understanding its structure, making a judgment call, and then applying the right change. That's where Desktop Commander fits in.

Desktop Commander connects AI directly to the files on your machine. Your Obsidian vault is just a folder of markdown files — Desktop Commander can read all of them, understand their structure, and apply exactly the changes you describe. It works through something called an MCP server, which gives the AI direct access to your filesystem.

What conditional replacement looks like

Instead of typing regex patterns, you describe what you want in plain English:

Replace a tag only in certain files:

"Find every file in my Obsidian vault with 'status: draft' in the frontmatter. In those files only, replace #todo with #review. Leave #todo-later and #todolist alone."

Convert link formats with context awareness:

"Change all wikilinks like [[Note Name]] to markdown links like [Note Name](Note Name.md). If a link has display text like [[Note Name|click here]], keep the display text as the link label."

Clean up imported content:

"I imported from Readwise and now have thousands of color tags. Remove every instance of #orange, #pink, #yellow, and #blue from all files. Don't remove any other tags."

Each of these would require a different regex pattern in a traditional tool — and some (like the frontmatter-conditional replacement) aren't possible with regex at all. With Desktop Commander, the AI reads each file, evaluates whether it matches your criteria, and makes precise edits.

Getting started

  1. Download Desktop Commander — available as a native app for macOS and Windows
  2. Point it at your vault folder
  3. Describe what you want to change
  4. Review the proposed changes before confirming

The prompt library has ready-made templates for common Obsidian vault tasks. For a deeper look at how AI handles vault organization beyond search and replace, see our guide to managing your Obsidian knowledge base with AI.

Protecting Your Vault Before Bulk Changes

Whatever tool you use, bulk changes deserve a safety net. A few minutes of preparation can save hours of recovery:

Turn on File Recovery. Settings > Core Plugins > File Recovery. Obsidian will keep snapshots of your notes, so you can roll back individual files if something goes wrong.

Make a backup. Copy your vault folder somewhere else. If you use git (even basics), initialize it in your vault:

git init
git add .
git commit -m "backup before bulk replace"

One command rolls everything back if you need it.

Preview first. Whether it's Find-n-Replace's match list, VS Code's diff view, or Desktop Commander's proposed changes — look before you confirm. This is the single best habit for vault maintenance, and it's one reason building a proper knowledge management system includes documenting your change process.

Try Desktop Commander App

Desktop Commander reads your files, runs commands, and automates workflows — all in natural language.

Download Free

Community Discussions Worth Reading

Vault-wide find and replace has been one of Obsidian's most discussed missing features for years. These threads capture the full picture — workarounds, plugin announcements, and the creative solutions people have built:

Frequently Asked Questions

Will replacing text break my Obsidian links? ▾
It depends on the tool. Obsidian automatically updates [[wikilinks]] when you rename a file through its own interface, but plugins and external editors don't trigger that update. If your replacement touches text inside links, you'll either need Tag Wrangler (for tag changes), careful regex that avoids link syntax, or Desktop Commander, which can update both the text and the references in a single operation.
Can I undo a vault-wide replacement? ▾
There's no global "undo" button. Obsidian's File Recovery plugin saves snapshots of individual files, which helps for small mistakes. For full peace of mind, use git or copy your vault folder before any bulk operation. A single git checkout . command brings everything back.
Can I replace text only in files with a specific tag or property? ▾
Plugins can't filter replacements by file content — they work across everything. VS Code can filter by filename pattern but not by what's inside the file. Desktop Commander handles this natively. Describe the condition ("only files tagged #work" or "only files with status: draft") and it targets just those files. For more on how AI tools bridge this gap, see our overview of the best MCP servers for knowledge bases.
What about regex — do any Obsidian plugins support it? ▾
Yes. Global Search and Replace supports JavaScript regex with capture groups. Find-n-Replace supports regex with multiline matching. For single-file regex, the Regex Find/Replace plugin offers a focused interface. None of these match VS Code's regex power, but they keep you inside Obsidian.
My vault has thousands of notes — will plugins slow down? ▾
Plugins run inside Obsidian's interface, so large vaults (5,000+ notes) can cause noticeable lag. VS Code and Desktop Commander work outside Obsidian, accessing files directly on disk, so vault size isn't a bottleneck. Desktop Commander in particular uses streaming-based file operations designed to handle large volumes of files efficiently.