A bookmark manager with collections, tags, full-text search inside saved pages and permanent copies of anything that later disappears.
Build me a bookmark manager that replaces Raindrop: collections, tags, full-text search inside the pages, and a copy of anything that later disappears. STACK - Node 20+ with Fastify, server-rendered HTML - SQLite through better-sqlite3, WAL mode, with FTS5 - A worker for fetching and archiving - A browser extension and a bookmarklet - Caddy in front THE DATA MODEL - bookmarks: id, url, canonical_url, url_hash, title, description, site_name, favicon_path, cover_path, collection_id, note_md, is_broken, last_checked_at, created_at, updated_at, deleted_at - collections: id, parent_id, name, icon, colour, position, is_public, public_token - tags, bookmark_tags - archives: id, bookmark_id, kind, path, sha256, bytes, captured_at — the permanent copy - contents: bookmark_id, text_content, word_count, language — extracted text, which is what makes search inside pages possible - highlights: id, bookmark_id, text, prefix, suffix, note, colour, created_at - checks: id, bookmark_id, status_code, error, checked_at — append-only, so 'when did this break' is answerable - Identity is the canonical URL after redirects are resolved and tracking parameters stripped ARCHIVING, WHICH IS THE ONLY REAL DEFENCE AGAINST LINK ROT - On save, fetch the page and keep a permanent copy. This is the feature that justifies the whole tool: a bookmark to a page that no longer exists is a memory of a link - Three levels, chosen per collection: the extracted article text, a full single-file HTML with the images and stylesheets inlined, and a PDF or a screenshot - Inline every asset into one file. A copy that still fetches images from the original site is a copy that rots at the same speed - Store the capture date and the hash. A page changed since capture is worth knowing about - Re-archive on demand, keeping the previous capture — a page that changed is sometimes exactly what you needed to prove - Fetch politely: an identifiable user agent, a timeout, a size cap, no redirects to private addresses, and rate limits per host - If a page is behind a paywall or a login, say so honestly. Do not build circumvention SAVING - A browser extension: one click saves the current page with its title, description and cover image, and lets you pick a collection and tags without leaving the page - A bookmarklet for browsers without the extension, a share target on mobile, and an email address that accepts a forwarded link - Duplicate detection on the canonical URL, offering the existing bookmark rather than creating a second - Bulk import from a browser's HTML export and from the common services, preserving folders and dates SEARCH, WHICH IS THE OTHER HALF - FTS5 over titles, descriptions, notes, tags and the extracted page text. Searching only titles is what makes most bookmark managers useless after a year - Filters that compose: collection, tag, type, domain, date range, broken, has highlight - The matching text shown in the result - Saved searches as smart collections that stay live - Search must be instant. This is the main interaction and everything else is secondary ORGANISING - Nested collections, and tags that cut across them. Both, because people use both - Drag to move, bulk edit by selection - A note per bookmark, in Markdown - Highlights on the archived copy, anchored by text with a prefix and suffix so they survive a re-archive - Types detected — article, video, image, document, audio — and shown in filters BROKEN LINKS - A scheduled check of every bookmark, spread out and polite, recording the status - Broken ones listed with a link to the archived copy and to the Internet Archive as a second option - The check never deletes anything. A page that 404s today may be back tomorrow, and the archive is why it does not matter either way SHARING - A collection published at a token URL, read-only, optionally with a password - An RSS feed of a collection, which turns a reading list into something people can follow - Nothing shared exposes anything but what was shared ESCAPE - Export everything — bookmarks, notes, highlights, collections and tags — as JSON and as a browser-importable HTML file, in one command - Export the archives as a directory of files - A bookmark library is years of accumulated judgement and must never be trapped OPERATIONS - .env: DATABASE_PATH, STORAGE_PATH, BASE_URL, SESSION_SECRET, USER_AGENT_URL, HASH_SALT - Migrations on boot, each once - Archives are the bulk of the storage: measure the average early, set a per-collection policy, and watch the disk - Nightly backup off the machine, restore script - Health endpoint reporting archive queue depth and the broken-link count WHAT MATTERS MOST Archiving and full-text search. Build single-file capture and the text index before anything is pretty, then save two hundred real pages and search for something you only half remember. Those two together are the entire difference between this and a folder of browser bookmarks. Give me the repository, the extension, the bookmarklet, the archiver, migrations, .env.example, and a README with deploy steps behind Caddy.
What you lose
- Permanent archived copies, which is the only defence against a link rotting
- Full-text search inside the pages you saved, not just their titles
- Browser extensions and apps on every platform
If you would rather not build
- A Markdown file, which many people never outgrow
What it costs
as published on their pricing page
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $3/mo | — | — |
Their pricing page is where these came from. Seeing a different price? Tell us.
The escape hatch
open source · no votes, no paid placement
Linkding
$0A fast self-hosted bookmark manager with tags and a bookmarklet.
sissbruecker/linkdingfree · open source
Wallabag
$0Saves a readable copy of every article, so a dead link still opens.
wallabag/wallabagfree · open source
Why this verdict
our own opinion · changed only by a person
87/100
Verdict yes at 87. Archiving the text at save time is what separates a bookmark manager from a list of URLs, and Readability does the hard part.
History
tracked since 10 Aug 2026 · nothing is ever overwritten
Questions about Raindrop.io
answered from the record above
Is Raindrop.io free?
No — the plan we track is $3 a month. Pro at around $3/month billed annually; a free tier covers basic bookmarking.
Can you replace Raindrop.io by building your own?
YES. Replaceable in one session with an AI coding agent. Replacement score 87 out of 100, build time one session. Read what you lose before you decide.
How much does Raindrop.io cost?
$3 a month on Pro — $36 a year. Recorded 10 Aug 2026.
What do you lose by replacing Raindrop.io?
Permanent archived copies, which is the only defence against a link rotting; Full-text search inside the pages you saved, not just their titles; Browser extensions and apps on every platform. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Raindrop.io?
Yes: Linkding, Wallabag. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

