ducktapekiller289 downloadsBulk convert all tags in your vault to lowercase, verify stats, and generate tag lists.
Bulk Tag Manager is a comprehensive tag management utility for Obsidian. It provides a unified, professional dashboard to rename, merge, delete, clean, standardise, and organise both tags and front matter properties across your entire vault. This plugin absorbed the functionalities from Tag Wrangler, by pjeby.
[!WARNING] This plugin contains a History system that allows you to undo any operation. However, if you are about to perform a destructive bulk process, it is recommended that you backup your vault before running bulk operations.
The plugin provides two interfaces:
At the top of the Settings Dashboard, expand the Overview section to see real-time analytics:
aliases, cssclasses, etc.).#Project vs #project), with a one-click "Merge all to canonical" button.Clicking any statistic opens a detailed list of the relevant tags or files.
If any files contain malformed YAML tag syntax (missing commas, unquoted colons, invalid formatting), an Invalid Tags warning block appears below the Overview. Clicking Fix Invalid opens a modal where you can review each issue and apply automatic or manual fixes.
Rename any tag across all files, in both frontmatter and the document body.
Child tags are automatically updated: renaming #project to #work will also rename #project/active to #work/active in both frontmatter and body.
Rename multiple tags simultaneously using a dedicated table of old/new pairs.
This is ideal for quickly reorganising small groups of tags without running multiple single rename operations.
Perform large-scale tag restructuring by uploading a data file.
old_tag and new_tag.The CSV should not contain headers or the # symbol (though the plugin handles them if present).
Consolidate multiple tags into a single canonical tag.
#film, #movie), or use the Select button for a multi-select modal with checkboxes.#cinema).Duplicate tags in the same file are automatically deduplicated after merging. Child tags are propagated (e.g. #film/drama becomes #cinema/drama).
Create hierarchical structures by moving existing tags under a new parent.
#work).#meetings, #tasks).Each child tag will be renamed to include the parent prefix (e.g. #work/meetings and #work/tasks).
Remove tags from all files in the current scope.
Deleting a parent tag also removes its child tags (e.g. deleting #project also removes #project/active and #project/done). Tags are removed from both frontmatter arrays and inline body occurrences. Trailing whitespace artifacts are automatically cleaned up.
Advanced tag restructuring using Regular Expressions.
^category-(.*)).new-category/$1).Regex complexity is limited to prevent catastrophic backtracking (ReDoS). Frontmatter content is excluded from pattern matching to prevent YAML corruption.
Configure how tags should be formatted vault-wide:
Click Convert All to apply these rules across all files in the current scope. A preview modal shows exactly which files and lines will be changed before you confirm.
In the Case statistics box, two buttons allow you to convert all tags in your vault to uppercase or lowercase in a single operation, independent of the Case Strategy setting.
Limit all operations to specific parts of your vault.
Templates, Archive).All statistics, conversions, and bulk operations respect the active scope filter.
Removes unnecessary quotes and trims whitespace from all frontmatter fields across the vault. This addresses Obsidian's tendency to add defensive quoting around property values.
Converts both tag properties and wiki link properties (such as aliases and cssclasses) to the inline array format ([value1, value2]) across all files in the current scope.
Converts both tag properties and wiki link properties to the multiline YAML list format across all files:
tags:
- tag1
- tag2
In the Tag Format Style statistics box, you can convert tags specifically (without affecting wiki link properties) between YAML list and inline array formats.
In the Wiki Link Format Style statistics box, you can convert wiki link properties specifically between YAML list and inline array formats.
Visualise your tags as a collapsible, searchable tree to understand your taxonomy. Includes:
Find tags used fewer times than a configurable threshold (default: 2 files). The orphan modal lists all matching tags with their usage counts and provides a Delete All Orphans button for bulk cleanup.
Generate a markdown file (All Tags.md) in your vault root listing every tag and its usage count, sorted alphabetically.
Every destructive operation (rename, merge, delete, convert, pattern rename, format conversion, property cleaning) is recorded with full file snapshots.
data.json small.Define tags that should never be modified by any rename, merge, or delete operation.
#status/active).*) for prefix matching (e.g. #status/* protects #status/active, #status/done, etc.).Protected tags are silently skipped during all bulk operations.
Define automatic correction rules that trigger when you save a note.
wip) and a Canonical tag (e.g. work-in-progress).#wip, it is automatically corrected to #work-in-progress.Aliases work in both frontmatter and the document body. Child tags are also corrected (e.g. #wip/urgent becomes #work-in-progress/urgent). A debounce timer prevents conflicts during rapid editing.
Right-click any tag in the tag pane, editor, reading view, or metadata properties panel to access:
Tags can also be dragged and dropped in the tag pane to restructure the hierarchy (e.g. dragging active onto project renames it to project/active).
Holding Ctrl/Cmd + Click on any tag in the editor or reading view opens its tag page, or prompts to create one.
main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/bulk-tag-manager/.| Command | Description |
|---|---|
Open Bulk Tag Manager Settings |
Opens the full settings dashboard |
Convert all tags (with preview) |
Runs bulk conversion based on current settings with a preview |
Generate Tag List |
Creates a markdown file listing all tags and their usage counts |
Show Tag Hierarchy |
Opens the tag hierarchy tree view |
Find Orphaned Tags |
Scans for tags below the usage threshold |
Undo Last Tag Operation |
Reverts the most recent operation |
#status/*) to the protected list before running bulk operations to prevent accidental modification.#Project and #project are treated as separate tags by Obsidian and can cause inconsistencies.This plugin incorporates and extends the context menu and tag page functionality originally created by pjeby in the Tag Wrangler plugin.