Bookmark Manager — Free, No Account, No Login, 100% Private
What's included
Features
About this tool
A Private Bookmark Manager That Needs No Account and Stores Nothing on Our Servers
Most people eventually hit the same wall with browser bookmarks: they get messy, you can't add notes or tags, searching only matches titles, and they don't sync the way you want across browsers. The obvious alternatives — Pocket, Raindrop, Instapaper, Pinboard — all require creating an account and handing your links to someone else's servers. For a developer or freelancer who saves hundreds of links per month, that's a meaningful privacy trade-off and an ongoing dependency on a third-party service that could change its pricing or shut down.
Bookmark Keeper takes a different approach. Your bookmarks are stored in your browser's IndexedDB — a browser-native database that persists across sessions and page reloads. Nothing is uploaded to FWD Tools. Nothing goes to any external server unless you explicitly enable the optional GitHub Gist sync, which sends data directly from your browser to your own private GitHub account. No FWD Tools account. No email address. No password. Open the tool and start saving immediately.
Import Your Existing Browser Bookmarks
The first thing most people want to do is bring in their existing bookmarks. Click the globe icon in the toolbar, select your browser's exported HTML file, and Bookmark Keeper parses it instantly — no upload, no server, pure local processing.
How to export from each browser: - Chrome: Bookmarks Manager (Ctrl+Shift+O) → three-dot menu → Export bookmarks - Firefox: Bookmarks → Show All Bookmarks → Import and Backup → Export Bookmarks to HTML - Safari: File menu → Export Bookmarks - Edge: Favourites → three-dot menu → Export favourites
Bookmark Keeper reads the NETSCAPE Bookmark File format that all major browsers use. Your folder structure is automatically converted to tags — a bookmark in a "Design/Typography" folder arrives with tags "design" and "typography". A preview modal shows every found bookmark with a checkbox. Select all, deselect the ones you don't need, and import. Duplicates (by URL) are skipped automatically.
Save Any Page in One Click with the Bookmarklet
The bookmarklet eliminates the friction of switching to Bookmark Keeper to save a link. Drag the 📌 Bookmark It button to your browser's bookmarks bar. From that point on, any page you want to save: click the bookmarklet, see the URL and title pre-filled, optionally add tags, click save. Done in under 5 seconds. No browser extension, no admin rights, no install — it works on Chrome, Firefox, Safari, Edge, and any browser that supports bookmarklets.
When the bookmarklet opens Bookmark Keeper, a loading indicator shows immediately while your existing bookmarks are being loaded. The pre-filled form appears as soon as the tool is ready so there's no blank state confusion.
Tags, Notes, and Search
Every bookmark can have comma-separated tags and freeform notes. Tags are the primary way to organise: a "#react" tag, a "#to-read" tag, a "#client-acme" tag. The left sidebar shows all your tags sorted by how many bookmarks use each one. Click any tag to filter, click a second tag to narrow further — all selected tags must match. Clear the filter with one click.
As you type a tag while adding or editing a bookmark, autocomplete suggestions appear showing tags you've used before. No more inconsistent tags from memory lapses — "#react" and "#reactjs" stay consistent with a single keystroke.
The search box filters across title, URL, notes, and tags simultaneously. Searching "acme" finds bookmarks with "acme" in the URL, a note mentioning "Acme Corp", and any tag containing "acme". Combine search with tag filters for surgical precision.
GitHub Gist Sync — Cross-Device Without an FWD Tools Account
IndexedDB is local to one browser on one device. To access your bookmarks on a second machine, use GitHub Gist sync. Create a GitHub Personal Access Token with the "gist" scope only (no other permissions needed), paste it in the GitHub panel, and click Sync Now. The tool creates a private secret Gist — fwd-bookmarks.json — in your own GitHub account.
From that point, Bookmark Keeper auto-syncs 5 seconds after any change: add a bookmark, delete one, edit a title. The Gist updates automatically. On a second device, enter the same token and the tool finds your Gist by scanning your account. Your bookmarks appear instantly. Sync compares a save timestamp on each side and replaces whichever copy is older with the newer one, so you always end up with the most recently edited version rather than a field-by-field merge — the tool also silently re-checks for updates if you switch back to the tab after being away for more than a minute.
Deletions propagate. Deleting a bookmark marks it with a "deleted" timestamp rather than erasing it immediately, so it still counts toward the dataset that gets pushed — that's what makes the deletion travel to your other devices on the next sync, where it shows up under "Show deleted" until it is pruned automatically after 30 days. If you choose "Permanently delete" instead, the bookmark is removed from your local copy immediately, and the next sync pushes that smaller dataset everywhere else too, so the deletion still spreads to every synced device — it just happens through the same timestamp-based sync rather than a special deletion signal.
Want the Gist itself encrypted? In the sync settings, set an optional passphrase and the tool encrypts the entire bookmark file with AES-GCM (200,000-round PBKDF2 key derivation) before it ever leaves your browser — GitHub only ever stores ciphertext. Anyone who finds your Gist URL sees scrambled data, not your bookmarks, unless they also have your passphrase. This passphrase is never sent anywhere; you re-enter it on each device you sync from.
Bulk Actions, Broken-Link Checking, and Opening a Whole Tag at Once
Once a collection grows past a few dozen links, one-at-a-time management stops scaling. Click Select in the header to enter bulk mode — a checkbox appears on every card instead of the favicon. Check as many bookmarks as you like (or click "Select all" to grab everything currently filtered), then either Add tag to apply one or more tags to the whole batch at once, or Delete selected to move them all to the deleted tombstone list in a single action.
Check links scans your saved URLs and flags any that fail to connect. This runs entirely in your browser and, because of cross-origin restrictions, can only reliably detect a *host that is completely unreachable* — a domain that no longer resolves or refuses the connection — not a page that loads but returns a 404. Treat "unreachable" as a strong signal to investigate, not a guarantee the link is dead, and treat "reachable" as "the server responded to something," not "the exact page still exists."
When you filter by a tag (or search), an Open all button appears that opens every matching bookmark as a new tab — ideal for a research session where you saved a dozen links under "read-later" and now want them all open at once. Browsers may prompt to allow multiple pop-ups; that is the browser's own protection kicking in, not a bug.
Round-Tripping Back Into Your Browser
Import already brings a browser's bookmarks in. Export as HTML closes the loop the other direction: it writes a standard NETSCAPE-Bookmark-file-1 document — the exact format Chrome, Firefox, Safari, and Edge all use for their own export/import — grouping bookmarks into folders named after each bookmark's first tag. Use it to move your organised Bookmark Keeper collection back into a browser, hand a curated link list to someone else, or archive a snapshot in a format that will still open in any browser decades from now.
A Real Alternative to Pocket, Raindrop, and Pinboard
Pocket was acquired by Mozilla and then shut its API to third-party apps. It requires a Firefox account and stores your links on their servers. Raindrop offers a free tier but limits to 100 collections without paying, and your data lives on their servers. Pinboard charges $11/year and while beloved by developers, still requires an account and server-side storage. Instapaper was owned by Pinterest and has had repeated uncertainty about its future.
Bookmark Keeper has no server-side storage at all. The only place your bookmarks exist is your browser's IndexedDB and optionally your own GitHub Gist. No subscription, no tier limits, no data portability concerns — because your data was never on someone else's server to begin with.
If you are a freelancer, pair Bookmark Keeper with the Freelance Dashboard to track time and client tasks alongside your saved resources. If you collect JSON data from API responses you bookmark, paste them into the JSON Formatter to inspect structure without any install.
Step by step
How to Use
- 1Import existing browser bookmarks (optional)Click the globe icon in the toolbar. Export bookmarks from Chrome (Bookmarks Manager → Export), Firefox (Bookmarks → Show All → Export to HTML), Safari (File → Export Bookmarks), or Edge. Select the HTML file. A preview shows all bookmarks with folder names as tags. Select which to import and click Import — duplicates are skipped.
- 2Add your first bookmark manuallyClick "+ Add bookmark". Paste a URL — the only required field. Add an optional title (defaults to the domain), comma-separated tags, and notes. Press Enter or click Save. The bookmark appears instantly in the list, stored in IndexedDB with no server involved.
- 3Set up the bookmarkletClick the 📌 Bookmarklet button in the toolbar. Drag the "📌 Bookmark It" button to your browser's bookmarks bar. Now on any webpage, click the bookmarklet — Bookmark Keeper opens with URL and title pre-filled. Add tags if needed and save in under 5 seconds. Works on Chrome, Firefox, Safari, and Edge with no extension.
- 4Organise with tags and searchUse the tag sidebar to filter by topic — click any tag, combine multiple tags to narrow results. Type in the search box to filter across title, URL, notes, and tags at once. When adding tags, autocomplete suggests previously used tags as you type to keep naming consistent.
- 5Set up GitHub Gist sync (optional)Click the GitHub icon. Create a Personal Access Token at github.com/settings/tokens with gist scope only. Paste it in, click Save settings, then Sync Now. Bookmark Keeper creates a private Gist in your GitHub account. From then on it auto-syncs 5 seconds after any change. On another device, enter the same token to access all your bookmarks.
- 6Optionally encrypt the Gist with a passphraseIn the same sync settings panel, enter an encryption passphrase before saving. The tool encrypts your entire bookmark file with AES-GCM in your browser before uploading, so the Gist stores unreadable ciphertext instead of plain JSON. Enter the same passphrase on every device you sync from — lose it and the encrypted data cannot be recovered, so keep it somewhere safe.
- 7Keep your Gist link privateWhether or not you encrypt it, treat your Gist URL and Personal Access Token like a password — GitHub "private" Gists are unlisted links, not access-controlled, so anyone with the URL can open it (though an encrypted Gist just shows them ciphertext). For zero data ever leaving your device, skip Gist sync entirely and use the Export JSON and Import buttons to transfer bookmarks manually instead.
- 8Export a backupClick the download arrow (↓) to export all bookmarks as a dated JSON file. Keep it as an offline backup in case you clear browser data. Import it back at any time with the upload arrow (↑) — the merge is safe and skips duplicates by URL. Click the browser-page icon to export a standard HTML bookmarks file instead, ready to re-import into Chrome, Firefox, Safari, or Edge.
- 9Manage a large collection with bulk actionsClick "Select" in the header to show a checkbox on every bookmark. Check the ones you want (or "Select all" to grab everything in the current view), then click "Add tag" to tag them all at once or "Delete selected" to remove them together. Click Select again to exit bulk mode.
- 10Check for broken links and open a whole tag at onceClick the link icon to scan your saved URLs for hosts that no longer respond — flagged links show "⚠ unreachable" (this only catches dead domains, not 404 pages that still load). Filter by a tag or search term, then click "Open all N ↗" to open every matching bookmark as a new tab in one go.
Real-world uses
Common Use Cases
Got questions?
Frequently Asked Questions
Yes — completely free, no account, no login, no email address. Bookmarks are stored directly in your browser's IndexedDB. Nothing is uploaded to FWD Tools servers at any point. You can start saving links immediately without signing up for anything. The optional GitHub Gist sync also requires no FWD Tools account — just a GitHub Personal Access Token you create yourself.
Export your bookmarks from your browser as an HTML file (Chrome: Bookmarks Manager → ⋮ → Export bookmarks; Firefox: Bookmarks → Show All Bookmarks → Import and Backup → Export Bookmarks to HTML; Safari: File → Export Bookmarks). Then click the globe icon in the Bookmark Keeper toolbar and select the HTML file. A preview shows all found bookmarks with their folder names converted to tags. Select which ones to import and click Import — duplicates are skipped automatically.
Pocket and Raindrop store your bookmarks on their own servers and require you to create an account. Bookmark Keeper stores everything in your browser's IndexedDB — your links never leave your device unless you explicitly sync to your own private GitHub Gist. There is no FWD Tools account, no email verification, no subscription, and no usage limits. Your data is yours and only yours.
The bookmarklet is a small JavaScript snippet stored as a bookmark in your browser. Drag the "📌 Bookmark It" button to your bookmarks bar. When you want to save any webpage, click it — Bookmark Keeper opens in a new tab with the URL and page title pre-filled. Confirm and it saves to IndexedDB instantly. No extension, no plugin, no admin rights needed. Works in Chrome, Firefox, Safari, and Edge.
Yes, via GitHub Gist. Create a Personal Access Token at github.com/settings/tokens with the gist scope only. Enter it in Bookmark Keeper and click Sync Now — the tool creates a private secret Gist in your account. On another device, enter the same token. Your bookmarks sync automatically 5 seconds after any change: the tool compares a save timestamp on each side and replaces the older copy with the newer one. Deletions propagate the same way — delete a bookmark on one device and the next sync carries that smaller dataset to every other device.
Yes — clearing site data for fwdtools.com deletes IndexedDB. To protect against loss, use the Export JSON button regularly, or set up GitHub Gist sync for automatic cloud backup. To restore on a fresh browser, enter the same GitHub token and click Sync Now, or import a previously exported JSON file. Gist sync is the most reliable protection since it pushes a fresh copy a few seconds after every change.
The Gist contains one file — fwd-bookmarks.json — a JSON array of all your bookmarks, each with a URL, title, tags, notes, and timestamps. No images, favicons, or binary data. The Gist is created as private (unlisted), and if you set an encryption passphrase in sync settings, the file content itself is AES-GCM ciphertext rather than readable JSON. You can view, edit, or download the raw file directly from GitHub. To inspect an unencrypted export, paste it into the JSON Formatter at fwdtools.com/json-formatter/ to pretty-print and browse the structure.
Click any tag in the left sidebar to filter by it. Click additional tags to add them — all selected tags must match for a bookmark to appear. The sidebar highlights active tags in colour. Click "Clear filter" to reset. You can also click any tag on a bookmark card to jump straight to that filter. Tags support autocomplete when adding or editing — type the first letters and previously used tags appear as suggestions.
Yes. Import your existing browser bookmarks using the HTML import feature (globe icon in the toolbar). Folder names from your browser become tags in Bookmark Keeper, so your existing organisation carries over. Going forward, use the bookmarklet to save new pages in one click. You can continue using your browser bookmarks bar for the bookmarklet itself while Bookmark Keeper handles all your saved links.
No hard limit. IndexedDB storage in modern browsers is typically 1 GB or more. Bookmark Keeper stores only text — URLs, titles, tags, and notes — so even thousands of bookmarks use negligible storage. GitHub Gist similarly has no practical limit for text files of this size. Performance stays fast even with large collections because filtering and search run entirely in the browser.
Go to github.com/settings/tokens → Tokens (classic) → Generate new token. Set any description, select only the "gist" scope — no other permissions needed — and generate. Copy the token (it starts with ghp_). Paste it in Bookmark Keeper's GitHub sync panel, click Save settings, then Sync Now. The token is stored only in your browser's localStorage. You can revoke it from GitHub at any time.
Treat your Gist URL as a secret regardless of encryption. GitHub "private" (secret) Gists are unlisted links, not access-controlled — anyone who has the URL or Gist ID can open it without a GitHub login. By default the file inside is plain readable JSON, so never share your Gist URL, Gist ID, or Personal Access Token with anyone. If you want protection even in case the URL leaks, set an encryption passphrase in the sync settings before your first sync — the tool then stores AES-GCM ciphertext in the Gist instead of plain JSON, so an exposed link reveals nothing readable without the passphrase. For zero data ever leaving your device at all, skip Gist sync entirely and use the Export JSON and Import buttons to transfer bookmarks manually.
In the GitHub sync settings, enter a passphrase before saving. The tool derives an AES-256 key from that passphrase using PBKDF2 with 200,000 iterations and a random salt, then encrypts your entire bookmark file with AES-GCM before uploading — GitHub only ever receives the ciphertext, a random salt, and a random initialization vector, never your passphrase or the plaintext data. On any other device, enter the identical passphrase and the tool decrypts the file locally after downloading it. There is no password recovery: if you forget the passphrase, the encrypted Gist cannot be decrypted by anyone, including you, so store it in a password manager. Leaving the passphrase field blank keeps the Gist as plain, unencrypted JSON.
Yes. Click "Select" in the header to switch every card to a checkbox. Check the bookmarks you want — or click "Select all" to grab everything in the current filtered view — then click "Add tag" to apply one or more tags to all of them, or "Delete selected" to move them all to the deleted list together. Click Select again to leave bulk mode. Bulk delete uses the same soft-delete tombstone as deleting one bookmark, so the batch can still be recovered from "Show deleted" for 30 days.
It can flag links whose host is completely unreachable — a domain that no longer resolves or actively refuses the connection — by attempting a request to each saved URL from your browser. Because a website running in another browser tab cannot read the response of a cross-origin request, this check cannot tell whether a reachable host actually still shows the specific page you saved (a 404 "page not found" looks identical to a working page from the browser's point of view). Treat an "unreachable" flag as a strong signal that a link needs attention, and treat "reachable" as "the server answered," not as full confirmation the content is still there.
Click the tag (or type a search term) so the list is filtered to what you want to open, then click the "Open all N ↗" button that appears in the toolbar — it opens every currently filtered bookmark as a new browser tab, staggered slightly so they load smoothly. If you are opening more than a handful at once, your browser will likely ask you to allow pop-ups for the site the first time; this is a standard browser protection against unwanted pop-ups, not a Bookmark Keeper limitation.
Yes. Click the browser-page export icon to download a standard NETSCAPE-Bookmark-file-1 HTML file — the exact format every major browser uses for its own bookmark export and import. Bookmarks are grouped into folders named after each bookmark's first tag. Import that file back into any browser's native bookmark manager the same way you would import bookmarks from another browser, completing the round trip between Bookmark Keeper and your browser's built-in bookmarks.