Bookmark VaultSetup guide

Bookmark Vault

Bookmark Vault backs up desktop browser bookmarks and folders to your own Cloudflare Worker. Backups can run automatically while the browser is open. You can restore the latest backup into a new folder in another browser.

1. Extract the download

Extract Bookmark-Vault.zip to a folder you can keep. Inside Bookmark-Vault you’ll find:

Folder Purpose
addon Firefox and Zen extension
chromium Chrome, Brave, Vivaldi, Edge, and compatible desktop Chromium browsers
worker Cloudflare backend

2. Deploy Cloudflare

You need a Cloudflare account and a current Node.js installation with npm. Cloudflare Workers Free supports the SQLite-backed Durable Object used here. You can use the HTTPS workers.dev address included with Workers.

  1. Open Terminal in the extracted Bookmark-Vault directory.

  2. Run the following commands:

    cd worker
    npx wrangler login
    npx wrangler deploy
  3. Approve the Wrangler login in your browser. Copy the HTTPS Worker URL from the deploy output.

  4. Run openssl rand -hex 32 to generate a token. Save the token and Worker URL in your password manager.

  5. Run npx wrangler secret put SYNC_TOKEN from the same worker directory and paste the token at the prompt. Avoid putting the token in source files or command arguments.

  6. If you already manage a domain in Cloudflare, you can optionally add a dedicated subdomain under your Worker’s Settings → Domains & Routes. Use that HTTPS address in the extension.

Cloudflare Worker commands · Worker secrets · Custom domains

3. Install in your browser

Open the browser profile you want to back up before installing. Each profile has its own extension installation and local preferences.

Firefox

  1. In Firefox 140 or newer, open about:debugging#/runtime/this-firefox.
  2. Under Temporary Extensions, select Load Temporary Add-on.
  3. Choose Bookmark-Vault/addon/manifest.json.
  4. Open the toolbar Extensions menu and select Bookmark Vault.
  5. To reload after editing the files in place, return to This Firefox and select Reload beside the add-on. Firefox unloads temporary add-ons when it restarts.

Zen

  1. Open about:debugging#/runtime/this-firefox in your Zen profile. Use a current Zen build that supports the extension’s Firefox 140 minimum.
  2. Select Load Temporary Add-on and choose Bookmark-Vault/addon/manifest.json.
  3. Open Bookmark Vault from Zen’s Extensions menu. If your toolbar layout hides the menu, open about:addons and use the extension’s options.
  4. Use Reload beside the extension in This Firefox after changing the source. Reload the temporary add-on after restarting Zen.

For permanent installation on standard Firefox, package the contents of addon with manifest.json at the archive root, submit it to Mozilla Add-ons for self-distribution signing, then install the signed XPI from the gear menu on about:addons using Install Add-on From File. Zen supports Firefox add-ons. This download contains source builds, and a signed XPI is still pending.

Firefox temporary installation · Mozilla signing · Zen extensions

Chrome, Brave, Vivaldi, and Edge

Browser Extension manager
Chrome chrome://extensions/
Brave brave://extensions/
Vivaldi vivaldi://extensions/
Edge edge://extensions/
  1. Open the address for your browser in the desired profile.
  2. Turn on Developer mode.
  3. Select Load unpacked, then choose the Bookmark-Vault/chromium folder containing manifest.json.
  4. Open Bookmark Vault from the toolbar’s Extensions menu. If you want it on the toolbar, use your browser’s pin or show-in-toolbar control.
  5. Keep the extracted folder in place. For source updates in that folder, use the extension card’s Reload button.

For another desktop Chromium browser, use its extension manager and follow the same steps if it supports loading unpacked Manifest V3 extensions. A managed browser may restrict developer mode.

Chrome unpacked extensions · Vivaldi developer mode

4. Connect and run your first backup

  1. Open Bookmark Vault → Connect Cloudflare. If a connection is already configured, open Settings.
  2. Enter the Worker origin, such as https://bookmark-vault.example.workers.dev, and the sync token. Use the origin without an API path.
  3. Select Save settings and allow access to the Worker origin when the browser asks.
  4. Open the toolbar panel and choose Check connection. A fresh Worker should report that it has no cloud backup yet.
  5. In your primary browser profile, select Back up now and verify that Last successful backup shows a date.
  6. For scheduled backups, enable Automatic backups in Settings, choose an interval between 5 and 1,440 minutes, and save. Check Next automatic backup in the panel. The browser must be open for scheduled backups to run.

5. Restore in any supported browser

  1. Install Bookmark Vault in the destination profile and connect it to the same Worker with the same token. Keep automatic backups off there unless you are switching the backup source.
  2. In the toolbar panel, select Restore a copy and confirm. The add-on pauses automatic uploads in this profile and imports the snapshot into a new folder named Cloudflare restore YYYY-MM-DD.
  3. Find the dated folder in your bookmark manager and check its contents. Repeating a restore creates another copy. Chromium skips Firefox bookmark separators.
  4. To make the destination profile your new backup source, disable automatic backups in the old source first. Organize the restored folders, then use Settings → Replace cloud backup in the new source and confirm. This replaces the entire cloud snapshot. You can then enable automatic backups there.

Troubleshooting and current limits

What you see What to check
Extension fails to load Extract the ZIP first. Use the manifest file in Firefox or Zen, and the entire chromium folder for Chromium.
HTTP 401 Check that the saved token matches the Worker’s SYNC_TOKEN.
HTTP 503 Check that SYNC_TOKEN is configured and has at least 32 characters.
HTTP 413 The bookmark snapshot exceeds the current 1 MiB upload limit.
Cloud copy changed Another profile wrote the snapshot. Review it using Restore a copy before deciding whether to replace it.
Automatic backup has no next run Save the schedule and keep the browser open. A restore pauses automatic backups.

Use one primary backup profile per Worker. The current release keeps one latest snapshot and saves add-on settings locally in each profile. Dated cloud history, category restore, cloud settings recovery, client-side encryption, and the Dropbox mirror are pending. Bookmark titles and URLs are readable in the Worker snapshot, so keep your sync token private.

Run the Astro documentation site

From the project root, run npm ci if a lockfile is included, or npm install otherwise. Then run npm run dev and open the local URL printed in Terminal. Run npm run build to produce the static website in dist/ and npm run preview to preview that build.

Build both browser packages from one source

Edit popup, settings, icons shared by both browsers, and backup logic in extension/shared/. Firefox and Chromium manifest templates and browser-specific assets live under extension/firefox/ and extension/chromium/. Set the release version in package.json.

Run npm run build:extension to generate addon/ for Firefox and Zen, chromium/ for Chrome, Brave, Vivaldi, and Edge, and public/Bookmark-Vault.zip for installation. The build generates the ZIP in Node.js and works without a system ZIP command. The generated folders and ZIP are ignored by Git. Both npm run dev and npm run build generate the browser download before starting Astro. Reload your unpacked extension after rebuilding.

Push the source to GitHub

Extract the source ZIP and open Terminal inside the bookmark-vault folder. Create an empty private repository called bookmark-vault in GitHub. Then run the following commands with your repository URL.

git init
git add .
git commit -m "Add Bookmark Vault and Astro documentation"
git branch -M main
git remote add origin https://github.com/YOUR-USERNAME/bookmark-vault.git
git push -u origin main

Keep the Worker token, backup exports, and future Dropbox credentials out of the repository.