eondrcode14k downloadsMake plugin management more intuitive and efficient.
A more capable plugin manager for Obsidian.
Keep plugin-heavy Obsidian vaults fast and manageable with delayed startup, batch controls, groups and tags, GitHub installs, and guided conflict diagnosis.
简体中文 · 日本語 · 한국어 · Español · Français · Русский · Releases · Support

Better Add-on Manager (BPM) is a control center for Obsidian community plugins, designed for vaults that rely on many plugins and need more than simple enable/disable toggles.
It helps you keep startup responsive, organize plugins by workflow, install plugins from GitHub releases, and isolate conflicts when something breaks.
| 🚀 Startup | 📦 Management | 🏷️ Organization | 📥 Installation | 🔍 Diagnosis |
|---|---|---|---|---|
| Delayed plugin startup and startup self-checks | Batch enable/disable, quick search, and status filters | Groups, tags, notes, descriptions, and custom names | Install from GitHub repositories and release versions | Guided conflict troubleshooting with report generation |
BPM is organized around five focused tabs. Each tab owns one workflow, so related controls stay together and the manager remains easy to scan across desktop and mobile.
| Tab | Workflow |
|---|---|
| 🧩 Plugin View | Manage installed plugins, metadata, filters, startup behavior, and per-plugin actions |
| 📥 Install Hub | Install plugins or themes from GitHub and manage tracked sources |
| 📦 Transfer Pack | Export, import, and restore plugin/theme packs across vaults |
| 🎛️ Ribbon Order | Control Obsidian ribbon icon order and visibility |
| 🔍 Conflict Diagnosis | Locate plugin problems and generate troubleshooting reports |
The main tab for day-to-day plugin management.

| Area | What it does |
|---|---|
| Plugin list | Browse installed community plugins in a compact, searchable management view |
| Batch actions | Enable or disable plugins in bulk, including grouped workflows |
| Filters | Filter by enabled state, group, tag, delay setting, and keyword |
| Organization | Add custom names, descriptions, notes, groups, and tags |
| Startup control | Assign delayed startup presets and keep startup behavior visible from the list |
| Plugin actions | Check updates, download updates, restart a plugin, temporarily start a plugin, open settings, open folders, copy IDs, open repositories, clear config, hide, or delete |
| BPM tags | Automatically marks BPM-installed plugins with bpm-install and supports ignored plugins with bpm-ignore |
The Install Hub handles GitHub-based installation and the sources BPM can track after installation.

| Area | What it does |
|---|---|
| Install type | Switch between plugin and theme installation |
| Repository input | Accepts user/repo or full GitHub repository URLs |
| Release selection | Fetch available GitHub releases and install latest or a selected version |
| Release notes | Shows release information before installation when available |
| Recent installs | Keeps recently used repositories for faster repeated installs |
| Source tracking | Optionally tracks installed repositories for later checks, updates, and reinstalls |
| Source management | Review tracked plugin/theme sources, update targets, reinstall items, and keep source metadata current |
The Transfer Pack tab moves plugin setups between vaults without turning the README into a manual checklist.

| Area | What it does |
|---|---|
| Export list | Select local plugins and themes to include in a JSON transfer pack |
| Plugin configs | Export selected plugin configuration files when needed |
| Taxonomy | Export BPM groups, tags, and delay presets |
| Layout data | Export manager order, hidden items, and ribbon layout |
| Sources | Export GitHub repository maps, source subscriptions, and install history |
| Workspace preferences | Export style, delay mode, tag display, and startup-check preferences |
| Import preview | Load a pack, review bundled plugins, themes, sources, configs, and layout data before applying |
| Restore options | Install missing plugins/themes, merge plugin config, restore enabled state, apply layout, merge sources, and import themes |
The Ribbon Order tab keeps Obsidian's left ribbon predictable, especially when delayed plugins register icons after startup.

| Area | What it does |
|---|---|
| Icon ordering | Drag ribbon items into a stable order |
| Visibility control | Show or hide individual ribbon icons |
| Native sync mode | Manages ribbon layout in BPM data without relying on Obsidian workspace config |
| Reset action | Show all ribbon items and sort them by name |
| Reload guidance | Prompts for reload when hidden startup icons need Obsidian to refresh |
The Conflict Diagnosis tab guides plugin conflict testing step by step, keeping the tested state and result in one place.

| Area | What it does |
|---|---|
| Pre-check | Confirms whether the issue still appears when other plugins are disabled |
| Binary narrowing | Uses guided split testing to reduce the suspect plugin set |
| Conflict pair search | Helps locate two-plugin conflicts, including cross-group cases |
| Manual feedback loop | Asks you to test each step and mark whether the problem still exists |
| State controls | Undo the previous step, restart Obsidian, exit troubleshooting, restore the original state, or keep the current state |
| Result report | Generates a Markdown conflict report with the detected plugins and suggested next actions |
Recommended for most users.
Use this when you want to install a GitHub release directly.
main.js, manifest.json, and styles.css into .obsidian/plugins/better-plugins-manager/.After enabling the plugin, open BPM in either way:
BPM is a local Obsidian plugin manager, but some features intentionally use external services or browser APIs:
github.com, api.github.com, and raw.githubusercontent.com. BPM also opens github.com repository pages and the project tutorial link on www.bilibili.com only when the user clicks the related buttons.btoa/atob only to pack and restore binary/text files inside local Transfer Pack JSON data. It is not used to hide API keys, URLs, remote code, or executable payloads.Use Conflict Diagnosis when a problem appears after enabling community plugins and you need a structured way to narrow down the cause.
When Delayed Startup is enabled, BPM checks .obsidian/community-plugins.json to make sure Obsidian and BPM are not trying to control the same plugins at startup.
| Case | BPM behavior |
|---|---|
| No unmanaged plugins | Starts normally |
| Unmanaged plugins detected | Shows a takeover prompt |
| Auto Takeover enabled | Moves detected plugins under BPM management automatically |
Plugin marked bpm-ignore |
Leaves it in Obsidian's native startup list |
Taking over keeps delayed startup, enabled state, and BPM's plugin records consistent. After a successful takeover, restart Obsidian so the startup list is applied cleanly.
For current versions, use the Transfer Pack tab to move setups between vaults. It exports and imports plugin lists, themes, selected plugin configs, groups, tags, delay presets, layout data, ribbon order, source subscriptions, install history, and workspace preferences.
The older Markdown/frontmatter export for Obsidian Base is kept only for legacy data compatibility. New setups should use Transfer Pack instead of configuring a Base export folder.
BPM settings are split into focused pages:
| Page | What you can configure |
|---|---|
| Basic | Language, persistent filters, delayed startup, auto takeover, startup update checks, source update checks, source auto-update, BPM tag visibility, ribbon order, commands, debug mode, and GitHub token |
| Main Page Actions | Choose which plugin actions appear directly on plugin cards and which stay in the right-click menu |
| Style | Plugin list layout, item display style, group/tag styles, and disabled-plugin fading |
| Groups | Create, rename, recolor, and delete plugin groups |
| Tags | Create, rename, recolor, and delete plugin tags |
| Delay | Create and maintain delayed-start profiles; shown only when delayed startup is enabled |
| Command | Availability | Description |
|---|---|---|
| Open the plugin manager | Always available | Opens the BPM main interface |
| Troubleshoot plugin conflicts | Always available | Starts the conflict diagnosis workflow |
| Enable/Disable selected plugin | Optional setting | Registers one command per plugin for direct toggling |
| One-click Enable/Disable selected group | Optional setting | Registers group-level commands for batch toggling |
| Platform | Supported |
|---|---|
| Windows / macOS / Linux | ✅ |
| Android | ✅ |
| iOS / iPadOS | ✅ |
The plugin automatically switches between desktop/mobile layouts based on the platform.
Issues and PRs are welcome!