Integrated Archive moves files out of active work without treating them as disposable.
- Archive current file command and optional file-menu action.
- Restore archived files to their original locations, or undo the latest available archive operation.
- Archive or restore multiple selected files at once, or archive every file in a folder.
- Choose whether Delete asks each time, archives automatically, or uses Obsidian’s normal delete flow.
- The optional prompt offers Archive / Delete / Cancel. Delete follows your configured Obsidian trash setting and may be permanent.
- Configurable archive folder with optional original folder structure.
- Optionally delete folders that become empty after archiving.
- Optional archive tag and archived, created, and last-edited frontmatter dates.
- Optionally write the original path into archived notes so they can be restored even when archive history is lost or synced to another device.
- Protect paths that should never be archived.
- Collision-safe names such as
note (1).md; existing files are never overwritten. - Files already inside the archive use Obsidian's normal delete flow.
- Existing created and last-edited properties are preserved by default.
Right-click a file and select Archive, or run Integrated Archive: Archive current file from the command palette. Right-click a folder and select Archive, or run Integrated Archive: Archive all files in current folder, to archive every eligible file inside it. Configure the folder, delete prompt, tag, property names, folder structure, empty-folder cleanup, and date format under Settings → Integrated Archive.
Right-click an archived file and select Restore from archive, or run Integrated Archive: Restore current file from archive. Restores return files to their recorded original paths, reverse metadata added or replaced by that archive operation while preserving subsequent edits (for new archive records), and use collision-safe names if those paths are occupied. Integrated Archive: Undo last file archive restores the newest archived file that is still available. Undo works one file at a time: archiving N files takes N undos.
Enable Store original path in notes under the Restore settings to write each note's original location into its frontmatter. Restores fall back to this value when archive history is unavailable, for example after syncing the vault to another device. Only Markdown notes store this property; images, PDFs, and other files rely on archive history.
Add vault-relative paths under Protected paths to keep files or folders out of the archive. Archive actions are hidden for protected files, and batch commands skip them. Restores into protected paths are blocked, and the archive folder itself cannot sit inside a protected path.
Archiving more than 10 files at once asks for confirmation. Archive all files in current folder is hidden at the vault root so it cannot archive the whole vault, and folder deletes always use Obsidian's normal delete flow (the archive-on-delete setting applies to files only).
Archive history keeps the newest 200 records; older restores are evicted first.
The plugin works locally inside your vault. It has no network access, accounts, telemetry, or external services.
Integrated Archive requires Obsidian 1.13 or later.
Once Integrated Archive is listed in the Obsidian Community Plugins directory:
- Open Settings → Community plugins.
- Select Browse, search for Integrated Archive, and select Install.
- Select Enable.
- Download
main.jsandmanifest.jsonfrom the latest GitHub release. - Create
<vault>/.obsidian/plugins/integrated-archive/. - Copy both downloaded files into that folder.
- Reload Obsidian, then enable Integrated Archive under Settings → Community plugins.
bun install
bun run buildCopy manifest.json and main.js into:
<vault>/.obsidian/plugins/integrated-archive/
Then enable Integrated Archive under Settings → Community plugins.
Run bun run dev while developing and bun run check before committing. Run bun run test:coverage for a coverage report.
bun run check verifies release versions, type-checks and bundles the plugin, runs the official Obsidian ESLint rules, and executes the test suite.
Bump package.json, manifest.json, and versions.json together, then push a tag with that exact version and no v prefix:
bun run bump 0.2.0
bun run check
git add package.json manifest.json versions.json
git commit -m "Release 0.2.0"
git tag 0.2.0
git push origin main 0.2.0GitHub Actions verifies the version, builds the plugin, and creates a release containing the files Obsidian needs.

