NameIsKyro725 downloadsChrome-style compact pinned tabs with custom icons, smooth movement, and accidental-close protection.
Chrome-style pinned tabs for Obsidian — compact, recognizable, and harder to close by accident.
Created and maintained by @NameIsKyro.
Pinned Tabs uses Obsidian's native pinned state and presents pinned tabs as a compact, icon-first group at the left of each desktop tab bar. It also remembers the pinned file or view locally, so a restored workspace cannot silently move that pin onto unrelated content. It keeps meaningful view icons, supports daily-note and per-file icons, and can protect pins from common accidental-close actions. File-backed viewers—including images, PDFs, media, and document viewers—can use compact attachment-specific icons while keeping their original viewer state.
This option becomes available after the plugin is accepted into Obsidian's Community Plugins directory:
Until it is listed, use a prerelease or manual installation.
Download compact-pinned-tabs-release.zip from the latest
GitHub release.
Extract it into the following folder inside the intended vault:
<vault>/.obsidian/plugins/compact-pinned-tabs/
Confirm the plugin folder directly contains:
main.js
manifest.json
styles.css
Restart or reload Obsidian.
Open Settings → Community plugins and enable Pinned Tabs.
Install BRAT, choose Add beta plugin, and enter:
NameIsKyro/compact-pinned-tabs
Pin the current tab in any of these ways:
The tab keeps Obsidian's native pinned state, becomes compact, and is visually grouped with other pins on the left when that setting is enabled. Click a pin to activate it, hover for its normal tooltip, or drag tabs using Obsidian's native tab controls.
Pinned files and views are saved in this plugin's local Obsidian data. If a saved pin is missing after a vault rebuild, Pinned Tabs opens it again and pins it automatically. Unpin a tab—or use the plugin's delayed close button—to remove it from the saved set before closing it permanently.
For a daily note, enable title detection and choose its icon. For an exact
custom file, open Settings → Pinned Tabs → Custom file icons, add
an entry, and provide either a title such as Home or a vault path such as
Dashboards/Home.md. Exact path rules are evaluated before title rules and
custom rules take priority over daily-note detection.
Attachments use the same pin commands as notes. Images and other formats that Obsidian can open directly are saved and restored with their viewer state. A format such as Word must already open in a workspace tab through Obsidian or an installed document-viewer plugin; Pinned Tabs preserves that registered viewer but does not bundle its own document renderer.
No command has a default hotkey. Assign shortcuts under Settings → Hotkeys if wanted.
| Command | Behavior |
|---|---|
| Toggle pin for current tab | Pins an unpinned current tab or unpins a pinned current tab. Disabled when there is no usable current tab. |
| Pin and compact current tab | Applies Obsidian's native pinned state to the current tab. Disabled when there is no usable current tab. |
| Unpin current tab | Removes the native pinned state from the current tab. Disabled when there is no usable current tab. |
| Close every unpinned tab | Closes every unpinned root tab while retaining pinned tabs. |
| Close unpinned siblings in current group | Closes unpinned siblings while retaining the current tab and every pin. |
| Focus next pinned tab | Activates the next pinned tab in the current tab group. |
| Focus previous pinned tab | Activates the previous pinned tab in the current tab group. |
| Apply Chrome-style preset | Applies the recommended compact layout, motion, icon, and close-protection values. |
| Clean up restored duplicate tabs | Keeps one pinned copy of each file and closes matching copies in the same tab group. |
| Setting | Behavior |
|---|---|
| Apply Chrome-style preset | Applies the recommended 44 px icon-only layout, hidden close button, left grouping, motion, and protection values. |
| Pinned tab icon | Selects the fallback icon for compact Markdown and other tabs. |
| Keep plugin and view icons | Preserves icons supplied by non-Markdown views. |
| Graph view icon | Uses the native Graph icon or a selectable network-style icon. |
| Use attachment icons | Shows compact file-type icons for pinned images, documents, spreadsheets, presentations, media, archives, and other attachments. |
| Detect daily notes by title | Detects common valid date-title formats. |
| Daily-note icon | Sets a registered icon name or single emoji for detected daily notes. |
| Custom file icons | Adds, removes, and reorders exact title/path icon rules. |
| Icon size | Sets the compact icon size from 12–24 px. |
| Icon color | Uses the theme accent, normal text, or muted text color. |
| Compact tab width | Sets compact pinned-tab width from 36–120 px. |
| Icon-only pinned tabs | Hides the tab title while compact. |
| Show pin button in left ribbon | Shows or hides the ribbon shortcut. |
| Keep pinned tabs on the left | Visually orders pins before normal tabs in each group. |
| Show pinned group divider | Draws a subtle divider after the final pin. |
| Hide Obsidian pin badge | Hides the redundant native pinned-status badge. |
| Accent pinned tabs | Adds a subtle theme-accent marker. |
| Highlight active pinned tab | Gives the selected pin a stronger theme-aware background. |
| Show close button on hover | Enables the plugin's delayed, explicit close control. |
| Close button hover delay | Sets the pointer dwell time from 0–1500 ms. |
| Close button size | Sets the close icon size from 10–18 px. |
| Expand tab on hover | Temporarily reveals the title of a compact tab. |
| Expanded hover width | Sets temporary expanded width from 120–280 px. |
| Animate size changes | Animates compact and expanded widths. |
| Animate tabs moving left | Animates a newly pinned tab into the visual pinned group. |
| Move animation speed | Sets movement duration from 100–500 ms. |
| Protect from bulk close | Preserves pins during supported tab-menu close-all, close-others, and close-after actions. |
| Protect keyboard close | Blocks Cmd/Ctrl+W and Ctrl+F4 while the active tab is pinned. |
| Protect against middle-click close | Ignores middle-click on pinned tabs. |
| Clean up duplicates after vault rebuild | During startup recovery, keeps one pinned copy and closes matching restored copies in the same tab group. Enabled by default. |
| Restore defaults | Restores every setting to its default value. |
The links and badges in this README are loaded by GitHub, not by the installed plugin.
Confirm the folder name is exactly compact-pinned-tabs and that main.js,
manifest.json, and styles.css are directly inside it. Reload Obsidian and
check that the installed Obsidian version is at least 1.13.0.
Confirm the tab is actually pinned in Obsidian, then toggle the plugin off and on. Test with Obsidian's default theme and temporarily disable other plugins that modify tabs.
Update to version 1.0.4 or newer. The plugin now validates cached tab-header matches against Obsidian's native pin marker and leaves ambiguous headers untouched instead of styling a neighbouring tab.
Keep Clean up duplicates after vault rebuild enabled. Pinned Tabs checks the restored layout while Obsidian is changing it and performs one final check after the layout becomes quiet. If a duplicate remains, run Clean up restored duplicate tabs from the command palette. The command affects only identical file-backed views in the same tab group when at least one copy is pinned.
Version 1.0.3 and newer remember the actual pinned file or view. After the workspace settles, Pinned Tabs removes a transferred pin from the unrelated page and restores the saved tab automatically. If this happened on an older version, update the plugin, pin the intended tab once, and rebuild again.
Use an exact title or vault-relative path. Paths are normalized and matched case-insensitively. Verify the icon name exists in Obsidian's current icon set, or use a single emoji.
Enable Show close button on hover, then keep the pointer over the pin for the configured delay. Keyboard users can focus the pinned tab and press Tab.
When reporting a visual problem, include the Obsidian version, plugin version, operating system, theme, conflicting tab-related plugins, exact reproduction steps, and a clear description of the incorrect result.
Requirements: Node.js 20 or newer and npm.
npm ci
npm run dev
npm run dev watches the source modules and rebuilds main.js. Reload
Obsidian after a code change.
Before a pull request or release, run:
npm test
npm run build
npm audit
npm run check performs strict TypeScript checking.npm run lint runs the current Obsidian ESLint recommendations.npm run validate verifies manifest, package, version, license, and required
repository metadata.npm run build creates a minified production main.js.Generated main.js is ignored by Git and belongs in GitHub releases, not the
source repository. See CONTRIBUTING.md and
RELEASING.md. For a click-by-click release walkthrough, use the
beginner publishing guide.
Use GitHub Issues for reproducible bugs and focused feature requests. Follow SECURITY.md for private vulnerability reports.
See CHANGELOG.md.
Released under the MIT License.
Copyright © 2026 NameIsKyro.