Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Pinboard - Pin Files and FoldersNew to Visual Studio Code? Get it now.
Pinboard - Pin Files and Folders

Pinboard - Pin Files and Folders

Daan Rosendal

|
826 installs
| (2) | Free
Pin files and folders to a persistent Explorer sidebar panel with global/workspace scopes, drag reordering, workspace presets, and quick actions
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Pinboard

Pin any file or folder as a persistent shortcut inside the Explorer sidebar.

Pinboard panel screenshot

Install from the VS Code Marketplace or Open VSX Registry (Cursor, Antigravity, Windsurf).

In case you enjoy using the extension, a coffee is always appreciated 😊

Buy Me a Coffee

First-time setup: Once installed, the Pinboard panel appears at the bottom of the Explorer sidebar. Drag it to the top if you prefer it there. VS Code doesn't allow extensions to control their panel position on install.


Features

Pin files and folders

Click + in the panel header to pick any file or folder, or right-click any item in the Explorer file tree and choose Pin to Pinboard.

Two persistence scopes

Toggle between Global (pins survive across all workspaces) and Workspace (pins are local to the current workspace) using the scope button in the panel header. Also configurable via Settings > Pinboard > Scope.

Drag to reorder

Drag pinned items to rearrange them: dragging up drops the item before the pin you release on, dragging down drops it after. Order is persisted. When you drop a pinned item onto a pinned folder, Pinboard asks whether to reorder the pin or move it into that folder. Set Settings > Pinboard > Drop On Pinned Folder to reorder or move to skip the question. VS Code gives extensions no modifier keys during drags, which is why this is a prompt or a setting instead of Ctrl/Cmd-drag.

Move and copy files

Right-click any item and choose Move to… or Copy to… to pick a destination folder. You can also drag a file or folder from inside a pinned folder onto another folder in the panel to move it (VS Code asks for confirmation unless explorer.confirmDragAndDrop is off). If the destination already has an item with the same name you are asked first, and a replaced item is moved to the Trash. Moving a pinned item, or a folder that contains one, keeps the pin pointing at the new location. There is no undo for the move or copy itself, and dragging always moves; use Copy to… to copy. Dropping a file or folder on the empty area of the panel asks whether to move it to the workspace root or to a folder you choose.

Aliases

Right-click any pinned root item and choose Set Alias… to give it a custom display name. The alias replaces the default label in the panel; the underlying path is unchanged. Clear the alias to revert.

Sorting

By default pins keep the order you arranged them in. Set Settings > Pinboard > Sort Pins to alias (or run Pinboard: Toggle Sort (Manual / Alphabetical)) to sort pinned root items alphabetically by their displayed label, which is the alias if set, otherwise the name. Combined with aliases such as [api] Server and [ui] App, prefixes act as groups. Sorting never changes your stored order, so switching back to manual restores it. Drag reordering and Move Up/Down are disabled while sorting is on.

Compact folders

Folders that contain only a single folder are shown as one row, like src/main/java/com, so deep paths take fewer clicks. A row ends at a folder with several entries, a file, or nothing. The pinned item itself is never merged. Actions on a merged row (rename, delete, new file, move, copy, drag) apply to its last folder. Turn it off with Settings > Pinboard > Compact Folders, or change the text between the names (for example / or ›) with Compact Folder Separator.

Rename with F2

Select a row in the Pinboard tree and press F2 to rename it, the same as Rename in the context menu.

Label style

Configure Settings > Pinboard > Label Style to display pinned root items as the file/folder name (default) or as a path relative to the workspace root, useful in monorepos where multiple pinned folders share the same name. Aliases always take precedence over this setting.

Workspace presets

This is, for instance, useful in large monorepos. Commit a .pinboard.json file to the workspace root to define named pinboard presets, then teammates switch to Workspace scope and click the list selection button in the panel header to open the menu for choosing a preset - letting them replace their current workspace pins with the preset's paths in one step.

{
  "presets": [
    {
      "name": "Full Stack",
      "paths": [
        "apps/web/src",
        "services/api-gateway/src",
        "services/auth-service/src",
        "packages/shared/src",
        "packages/db/src"
      ]
    },
    {
      "name": "Backend On-Call",
      "paths": [
        "infra/k8s",
        "docs/runbooks",
        { "path": "services/api-gateway", "alias": "API Gateway" },
        { "path": "services/auth-service", "alias": "Auth" },
        { "path": "services/billing-service", "alias": "Billing" },
        { "path": "services/notification-service", "alias": "Notifications" }
      ]
    },
    {
      "name": "Platform Eng",
      "paths": [
        { "path": "packages/db", "alias": "Database Layer" },
        { "path": "packages/config", "alias": "Shared Config" },
        { "path": "infra/terraform", "alias": "Terraform" },
        { "path": "tools/codegen", "alias": "Codegen" },
        { "path": "e2e", "alias": "E2E Tests" },
        { "path": ".github/workflows", "alias": "CI/CD" }
      ]
    }
  ]
}

All paths are relative to the workspace root. Paths that don't exist on disk are silently ignored. The extension never modifies .pinboard.json.

Auto-reveal active file

When you switch between editor tabs, the Pinboard tree automatically highlights the active file if it falls under a pinned folder or is a pinned file itself. This makes it easy to keep track of where you are relative to your pinned items. When the active file is not under any pin, the previous selection is cleared so the tree never shows a stale highlight.

Controlled by the pinboard.autoReveal setting (enabled by default).

Auto-refresh

The panel updates automatically when files or folders are created or deleted inside a pinned directory, with no manual refresh needed.

Context menu

Right-click any item for contextual actions:

Note: VS Code does not expose its internal Explorer context menu API to extensions, so this menu is built independently. It covers the most common file operations but is not identical to the native Explorer context menu.

Item type Actions
Pinned folder New File, New Folder, Reveal in Finder, Open in Terminal, Find in Folder, Move Up, Move Down, Open in New Window, Copy Path, Copy Relative Path, Copy to…, Move to…, Rename, Delete, Set Alias…, Unpin Folder
Pinned file Open to the Side, Move Up, Move Down, Copy Path, Copy Relative Path, Copy to…, Move to…, Reveal in Finder, Rename, Delete, Set Alias…, Unpin File
Subfolder New File, New Folder, Reveal in Finder, Open in Terminal, Find in Folder, Copy Path, Copy Relative Path, Copy to…, Move to…, Rename, Delete
Nested file Open to the Side, Reveal in Finder, Copy Path, Copy Relative Path, Copy to…, Move to…, Rename, Delete

Usage

Action How
Pin a folder Click + in the panel header, or right-click a folder in Explorer and choose Pin to Pinboard
Pin a file Click + in the panel header, or right-click a file in Explorer and choose Pin to Pinboard
Unpin a folder Hover a pinned folder and click Unpin Folder, or right-click it and choose Unpin Folder
Unpin a file Hover a pinned file and click Unpin File, or right-click it and choose Unpin File
Open in new window Hover a pinned folder and click Open in New Window, or right-click it and choose that action
Toggle scope Click the scope button in the panel header to switch between Global and Workspace
Reorder Drag a pinned item, or right-click it and choose Move Up or Move Down
Apply a preset Switch to Workspace scope, then click the preset button in the panel header
Set an alias Right-click a pinned root item and choose Set Alias…
Toggle label style Open the command palette and run Pinboard: Toggle Label Style (Folder Name / Relative Path)

Extension Settings

Setting Default Description
pinboard.scope "workspace" "global" - pins persist across all workspaces. "workspace" - pins are scoped to the current workspace.
pinboard.autoReveal true Auto-reveal the active file in the Pinboard tree when it falls under a pinned folder.
pinboard.dropOnPinnedFolder "ask" "ask" - ask whether to reorder or move when a pin is dropped on a pinned folder. "reorder" - always reorder. "move" - always move into the folder.
pinboard.compactFolders true Show folders that contain only a single folder as one row, like a/b/c.
pinboard.compactFolderSeparator / Text between the folder names of a merged row, like / or ›.
pinboard.sortPins "manual" "manual" - pins keep your order. "alias" - sort alphabetically by alias, falling back to name.
pinboard.labelStyle "name" "name" - display the file or folder name (folder name). "relativePath" - display path relative to workspace root.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft