Wayback Linker

approved

by Real-Fruit-Snacks

Archive external links in the active note with the Wayback Machine and replace them with snapshot URLs. - This plugin has not been manually reviewed by Obsidian staff.

1 stars104 downloadsUpdated 26d agoMIT
Wayback Linker

Archive external links in a note — or your whole vault — with the Wayback Machine, and replace them with durable snapshot URLs.

License: MIT Latest release Obsidian

Documentation · Changelog · Report an issue


Overview

Wayback Linker sends the external http(s) links in your notes to the Internet Archive's Save Page Now service, waits for each capture to finish, and rewrites the link in place to the resulting web.archive.org snapshot URL. The sources you cite stay readable even after the original page changes or disappears.

Archiving works at three scopes:

  • Active note — the ribbon button or a command processes every external link in the current Markdown note.
  • Whole vault — a command scans every note, shows a confirmation with link/note/URL counts, archives each unique URL once, and replaces successful links across the vault.
  • Single link — right-click any external URL in the editor and archive just that one.

Long runs show a live progress window with per-URL status and a Cancel button, plus a clickable status-bar counter. Links are only replaced when a capture actually succeeds — a failed or canceled URL keeps its original link untouched.

Features

  • Fresh captures, verified — asks Save Page Now for a new snapshot and checks the returned timestamp is actually fresh, not a stale capture served from cache.
  • Vault-wide scan with confirmation — see exactly how many links, notes, and unique URLs are affected before anything runs.
  • Markdown-aware parsing — handles [text](url) links, <autolinks>, and (optionally) bare pasted URLs, while skipping images and existing web.archive.org links.
  • Ignored domains — list domains to skip (subdomains included), one per line or comma-separated.
  • Throttle handling — when the Archive reports its active-session limit, the plugin waits and retries on a configurable schedule instead of failing.
  • Optional snapshot fallback — if a fresh capture fails or times out, optionally fall back to the most recent existing snapshot from the availability and CDX APIs.
  • Cancelable runs — stop a batch at any point; replacements already completed are kept, everything else is left unchanged.
  • Secure credentials — Internet Archive S3 keys live in Obsidian's native keychain, never in plugin data files.
  • Desktop and mobile — uses Obsidian's own networking API throughout, so it works on both.

Installation

Requires Obsidian 1.11.4 or newer.

Community plugins (recommended)

  1. Open Settings → Community plugins → Browse.
  2. Search for Wayback Linker, then Install and Enable.

BRAT (for the latest pre-release)

Install BRAT, then add Real-Fruit-Snacks/wayback-linker as a beta plugin.

Manual

Download main.js, manifest.json, and styles.css from the latest release into <your-vault>/.obsidian/plugins/wayback-linker/, then enable Wayback Linker under Settings → Community plugins.

Getting started

  1. Open a note with external links and click the archive ribbon icon — or run a command from the palette.
  2. Watch the progress window; each URL shows Working, Fresh, Fallback, or Failed as captures complete.
  3. Successful links are rewritten in place to their web.archive.org snapshot.

Commands

CommandDescription
Archive active note links with Wayback MachineArchive every external link in the current note
Archive all vault links with Wayback MachineScan the vault, confirm the scope, then archive and replace across all notes

You can also right-click any external URL in the editor and choose Archive link with Wayback Machine to process a single link.

Settings

SettingPurpose
Delay between archive requestsMilliseconds to wait between Save Page Now requests (default 1500)
Archive bare URLsAlso replace plain pasted URLs that aren't inside Markdown links
Ignored domainsDomains to skip everywhere, including subdomains
Maximum wait for fresh capturesSeconds to wait for a capture before leaving the link unchanged
Fall back to latest existing snapshotUse the newest existing snapshot when a fresh capture fails
Throttle retry delay / Maximum throttle retriesHow patiently to retry when the Archive rate-limits
Internet Archive access key / secret keyKeychain entries for authenticated captures
Debug modeLog errors and internals to the developer console

Internet Archive authentication

Fresh captures are more reliable with an authenticated account:

  1. Log in at archive.org and open https://archive.org/account/s3.php.
  2. Copy your access key and secret key.
  3. In Settings → Wayback Linker, create keychain entries for both keys using the secure selectors.

Only the keychain entry names are written to data.json — the actual credentials stay in Obsidian's secure keychain.

How replacement works

Wayback Linker is deliberately conservative about touching your notes:

  • Notes are re-read and re-parsed after archiving finishes, so edits you make while captures run never cause a stale or misplaced replacement.
  • A link is replaced only when the Archive returns a verified snapshot; failures, timeouts, and cancellations leave the original untouched.
  • The single-link right-click flow re-checks that the exact link text is still where it was before replacing it.

Privacy

The plugin talks only to the Internet Archive (web.archive.org / archive.org) over HTTPS — no telemetry, no third-party services. Be aware that archiving is inherently public: every URL you archive is sent to the Internet Archive, and successful captures become publicly visible snapshots. Use Ignored domains for anything you'd rather keep out.

Architecture

wayback-linker/
├── main.ts            Plugin source (TypeScript, bundled with esbuild)
├── main.test.ts       Unit tests for parsing and replacement (Vitest)
├── manifest.json      Obsidian plugin manifest
├── styles.css         Plugin styles, scoped to .wayback-* classes
├── versions.json      Plugin version → minimum Obsidian version map
└── docs/              Documentation site and brand assets
  • Parsing and replacement are pure functions, exported and unit-tested independently of Obsidian.
  • All network activity goes through Obsidian's requestUrl, so it works on mobile and respects the platform.
  • Rate-limit citizenship — configurable inter-request delay, Save Page Now session-limit detection, and bounded retries.

Contributing

Contributions are welcome. Please read CONTRIBUTING.md and the Code of Conduct before opening a pull request.

License

Released under the MIT License.

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.