SATOSprod37 downloadsRemembers which Markdown notes you pinned and re-opens them as pinned tabs the next time Obsidian starts.
Obsidian plugin that remembers which Markdown tabs you pinned and automatically re-opens and re-pins them every time you restart Obsidian.
Author: SATOSprod
License: MIT — see LICENSE
Obsidian does not remember pinned tabs between restarts. Pin five notes you are actively working on, close the app — or it crashes, or your system reboots — and the next time you open Obsidian, those tabs are gone and everything is unpinned again. Pins Save fixes that by tracking every pinned Markdown note and restoring it automatically.
# 1. Clone the repository
git clone https://github.com/SATOSprod/pins-save.git
cd pins-save
# 2. Install dependencies
npm install
# 3. Build
npm run build
# Produces: main.js
Copy the following files into your vault:
<your-vault>/.obsidian/plugins/pins-save/
├── main.js ← compiled output
├── manifest.json
└── styles.css
Open Obsidian → Settings → Community plugins → Installed plugins and enable Pins Save.
npm run dev
Open Settings → Pins Save.
| State | Behaviour |
|---|---|
| On | Every saved note is automatically reopened and re-pinned each time Obsidian starts |
| Off | Saved notes are kept, but nothing is reopened automatically — manual restore still works |
| State | Behaviour |
|---|---|
| On | A short confirmation notice appears after startup restoration finishes |
| Off | Restoration happens silently in the background |
All actions are available from the Command Palette (Ctrl/Cmd + P) or as buttons in the settings panel.
| Action | Description |
|---|---|
| Scan pinned tabs now | Immediately re-scans the workspace and saves the currently pinned notes. Safe to run multiple times. |
| Restore pinned notes now | Reopens and re-pins every saved note. Notes already open are simply re-pinned, not duplicated. |
| Clear saved pinned notes list | Removes all saved entries. Does not touch currently open or pinned tabs. |
The settings page shows a live list of tracked notes:
| Field | Description |
|---|---|
| Currently saved notes | Full vault-relative path of every note currently tracked for restoration |
pins-save/
├── main.ts ← TypeScript source
├── main.js ← compiled output (gitignored, built locally)
├── styles.css ← plugin styles
├── manifest.json ← Obsidian plugin manifest
├── package.json
├── tsconfig.json
├── esbuild.config.mjs
├── version-bump.mjs
├── versions.json
├── .gitignore
├── LICENSE
└── README.md
onLayoutReady, then attaches a pinned-change listener to every open Markdown leaf via Obsidian's Workspace API.data.json.workspace.getLeaf("tab") and calls leaf.setPinned(true) to restore the pin.vault.on("rename") and vault.on("delete") keep the saved list accurate as files move or disappear.app.vault and app.workspace, so they are compatible with local vaults and sync services alike.This project is released under the MIT License.
See LICENSE for full terms.
© 2026 SATOSprod