Pinned Tabs

approved

by NameIsKyro

Chrome-style compact pinned tabs with custom icons, smooth movement, and accidental-close protection. - This plugin has not been manually reviewed by Obsidian staff.

1 stars691 downloadsUpdated 15d agoMIT

Pinned Tabs

Chrome-style pinned tabs for Obsidian — compact, recognizable, and harder to close by accident.

Latest release Build MIT License Obsidian

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.

Features

  • Compact fixed-width, icon-only pinned tabs with a one-click Chrome-style preset.
  • Visual left grouping, optional group divider, and smooth FLIP animation.
  • Native Graph and local Graph icons, plus selectable web-style alternatives.
  • Native icons from plugin-provided views, including views such as Hearth.
  • Automatic daily-note icons for common numeric and English date titles.
  • Case-insensitive custom icon rules for exact note titles or vault paths.
  • Compact attachment icons for images, PDFs, office documents, spreadsheets, presentations, audio, video, archives, and other file-backed views.
  • Any registered Obsidian/Lucide icon name or a single emoji.
  • Optional delayed hover close button with adjustable delay and size.
  • Protection from tab-menu bulk close, Cmd/Ctrl+W, Ctrl+F4, and middle-click.
  • Persistent pin identities that reopen and re-pin missing files or views after a vault rebuild.
  • Automatic repair when an unrelated plugin page inherits a restored pin.
  • Stable leaf-to-header matching when commands or modifier-clicks open tabs in the middle of an existing tab group.
  • Startup recovery that redecorates restored pins and optionally removes duplicate copies of the same pinned file after a vault rebuild.
  • Active-tab highlight, accent line, hover expansion, theme-aware colors, and reduced-motion support.
  • Declarative, searchable settings using the current Obsidian settings API.
  • Pop-out-window handling with unload cleanup.

Installation

Community Plugins

This option becomes available after the plugin is accepted into Obsidian's Community Plugins directory:

  1. Open Settings → Community plugins.
  2. Select Browse and search for Pinned Tabs.
  3. Select Install, then Enable.

Until it is listed, use a prerelease or manual installation.

Manual installation

  1. Download compact-pinned-tabs-release.zip from the latest GitHub release.

  2. Extract it into the following folder inside the intended vault:

    <vault>/.obsidian/plugins/compact-pinned-tabs/
    
  3. Confirm the plugin folder directly contains:

    main.js
    manifest.json
    styles.css
    
  4. Restart or reload Obsidian.

  5. Open Settings → Community plugins and enable Pinned Tabs.

BRAT prereleases

Install BRAT, choose Add beta plugin, and enter:

NameIsKyro/compact-pinned-tabs

Usage

Pin the current tab in any of these ways:

  1. Right-click its tab and select Obsidian's native Pin action.
  2. Run Pin and compact current tab from the command palette.
  3. Use the optional pin button in the left ribbon.

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.

Commands

No command has a default hotkey. Assign shortcuts under Settings → Hotkeys if wanted.

CommandBehavior
Toggle pin for current tabPins an unpinned current tab or unpins a pinned current tab. Disabled when there is no usable current tab.
Pin and compact current tabApplies Obsidian's native pinned state to the current tab. Disabled when there is no usable current tab.
Unpin current tabRemoves the native pinned state from the current tab. Disabled when there is no usable current tab.
Close every unpinned tabCloses every unpinned root tab while retaining pinned tabs.
Close unpinned siblings in current groupCloses unpinned siblings while retaining the current tab and every pin.
Focus next pinned tabActivates the next pinned tab in the current tab group.
Focus previous pinned tabActivates the previous pinned tab in the current tab group.
Apply Chrome-style presetApplies the recommended compact layout, motion, icon, and close-protection values.
Clean up restored duplicate tabsKeeps one pinned copy of each file and closes matching copies in the same tab group.

Settings reference

SettingBehavior
Apply Chrome-style presetApplies the recommended 44 px icon-only layout, hidden close button, left grouping, motion, and protection values.
Pinned tab iconSelects the fallback icon for compact Markdown and other tabs.
Keep plugin and view iconsPreserves icons supplied by non-Markdown views.
Graph view iconUses the native Graph icon or a selectable network-style icon.
Use attachment iconsShows compact file-type icons for pinned images, documents, spreadsheets, presentations, media, archives, and other attachments.
Detect daily notes by titleDetects common valid date-title formats.
Daily-note iconSets a registered icon name or single emoji for detected daily notes.
Custom file iconsAdds, removes, and reorders exact title/path icon rules.
Icon sizeSets the compact icon size from 12–24 px.
Icon colorUses the theme accent, normal text, or muted text color.
Compact tab widthSets compact pinned-tab width from 36–120 px.
Icon-only pinned tabsHides the tab title while compact.
Show pin button in left ribbonShows or hides the ribbon shortcut.
Keep pinned tabs on the leftVisually orders pins before normal tabs in each group.
Show pinned group dividerDraws a subtle divider after the final pin.
Hide Obsidian pin badgeHides the redundant native pinned-status badge.
Accent pinned tabsAdds a subtle theme-accent marker.
Highlight active pinned tabGives the selected pin a stronger theme-aware background.
Show close button on hoverEnables the plugin's delayed, explicit close control.
Close button hover delaySets the pointer dwell time from 0–1500 ms.
Close button sizeSets the close icon size from 10–18 px.
Expand tab on hoverTemporarily reveals the title of a compact tab.
Expanded hover widthSets temporary expanded width from 120–280 px.
Animate size changesAnimates compact and expanded widths.
Animate tabs moving leftAnimates a newly pinned tab into the visual pinned group.
Move animation speedSets movement duration from 100–500 ms.
Protect from bulk closePreserves pins during supported tab-menu close-all, close-others, and close-after actions.
Protect keyboard closeBlocks Cmd/Ctrl+W and Ctrl+F4 while the active tab is pinned.
Protect against middle-click closeIgnores middle-click on pinned tabs.
Clean up duplicates after vault rebuildDuring startup recovery, keeps one pinned copy and closes matching restored copies in the same tab group. Enabled by default.
Restore defaultsRestores every setting to its default value.

Keyboard behavior and accessibility

  • The plugin registers no default hotkeys.
  • Obsidian's normal Tab and arrow-key tab navigation remains available.
  • Pinned tabs retain a visible keyboard-focus outline.
  • When hover close is enabled, focusing a pinned tab reveals the real button so it can be reached with Tab and activated with Enter or Space.
  • Cmd/Ctrl+W and Ctrl+F4 are blocked only when keyboard protection is enabled and the active tab is pinned.
  • The close button includes the pinned tab's display name in its accessible label.
  • The operating system's reduced-motion preference disables plugin motion.

Privacy and external services

  • The plugin runs locally inside Obsidian.
  • It contains no telemetry or analytics.
  • It makes no network requests and transmits no filenames, paths, note content, or vault information.
  • It requires no account, payment, subscription, external file access, or closed-source component.
  • It never downloads or executes remote code.

The links and badges in this README are loaded by GitHub, not by the installed plugin.

Compatibility

  • Minimum Obsidian version: 1.13.0.
  • Desktop-only: yes. The plugin customizes the desktop workspace tab bar.
  • Supported operating systems: Windows, macOS, and Linux versions capable of running the required Obsidian release.
  • Mobile is intentionally unsupported and is not advertised.
  • Light and dark themes use Obsidian CSS variables rather than fixed colors.

Known limitations

  • The plugin maps each public workspace view to its corresponding desktop tab element. Major Obsidian tab-DOM changes may require a compatibility update.
  • Themes or plugins that heavily replace tab-bar layout may conflict with the compact widths or visual left ordering.
  • The additional bulk-close menu guard currently recognizes Obsidian's English tab-menu labels. The native pinned state remains in use in every locale, but the extra interception layer may not recognize translated labels.
  • Visually grouping pins on the left does not rewrite Obsidian's private workspace model.
  • Automatic duplicate cleanup is limited to file-backed views in the same tab group and runs only during startup layout recovery. Use the cleanup command if a duplicate appears later.
  • A view without a valid native icon falls back to the configured pinned icon.
  • Attachments can only be restored when Obsidian—or the plugin that registered their viewer—is installed and able to open that file type.

Troubleshooting

The plugin does not appear

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.

A pinned tab is not compact

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.

The wrong neighbouring tab looks pinned

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.

A pinned file was duplicated after rebuilding the vault

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.

A plugin page inherited the old pin after a vault rebuild

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.

A custom icon is not applied

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.

The close button does not appear

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.

Development

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.

Support

Use GitHub Issues for reproducible bugs and focused feature requests. Follow SECURITY.md for private vulnerability reports.

Changelog

See CHANGELOG.md.

License

Released under the MIT License.

Copyright © 2026 NameIsKyro.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.