Collects highlights from everywhere you read — books, articles, podcasts — deduplicates them, sends a daily review, and syncs them into your notes.
Build me a highlights service that replaces Readwise — and know what makes it ALMOST. The spaced-repetition part is straightforward. What you are paying for is **imports from everywhere, kept working**: an e-reader, a read-later service, a podcast app, a browser, a notes app, each with its own format and each changing without warning. That maintenance is the recurring cost, and it is the whole verdict. STACK - Node 20+ with Fastify, server-rendered HTML - SQLite through better-sqlite3, WAL mode, with FTS5 - A worker for imports and the daily digest - A browser extension for web highlights - Caddy in front THE DATA MODEL - sources: id, kind, title, author, cover_path, url, isbn, external_id, imported_from, created_at — a book, an article, a podcast, a paper - highlights: id, source_id, text, note, location, location_kind, colour, highlighted_at, imported_at, external_id, is_favourite, is_discarded - tags, highlight_tags - reviews: id, highlight_id, shown_at, action — the daily digest's record - imports: id, kind, status, started_at, finished_at, added, updated, skipped, error, raw_path — the raw file kept, so a parsing bug is recoverable - syncs: id, target_kind, config_encrypted, cursor, last_synced_at — pushing highlights out to a notes application - Identity is the external identifier where one exists, then a hash of the text plus the source. A re-import must never duplicate, and that rule is the one that decides whether the library stays usable IMPORTING, WHICH IS THE ONGOING WORK - One adapter per source, each with the same interface: fetch or parse, produce sources and highlights with stable identifiers, and report what could not be read - The e-reader's own clippings file is a plain text file with a fragile format — parse it defensively, keep the original, and report unparseable entries rather than dropping them - A read-later service, a browser extension, a CSV, and an email address that accepts a forwarded highlight - Every import is idempotent and incremental with a cursor - Keep the raw file for every import. When an adapter turns out to have been subtly wrong for six months, that archive is the only way back - Each adapter has a fixture and a test. They break when the source changes, and a failing test beats a mystery - Say in the README that this is the recurring cost, and build only the two or three you actually use THE DAILY REVIEW, WHICH IS THE POINT - A small number of highlights each day, by email and in the interface. Five is enough; fifteen is a chore - Selection weighted towards things not seen recently, favourites, and recent additions, with everything eventually resurfacing - Actions on each: favourite, discard, tag, add a note, or open the source - Discarding must be real and permanent for that highlight, or the digest fills with things you have already decided you do not want - The email is plain and readable, with a one-click way out. That daily mail is the entire habit, so it must be worth opening SEARCH AND EXPORT - FTS5 across highlight text, notes, titles and authors, with filters by source, tag, date and favourite - Export everything as Markdown grouped by source, as CSV, and as JSON, in one command - Push to a notes application on a schedule: one file per source, appended rather than rewritten, with a stable identifier per highlight so an edited note is not clobbered. That sync is what most people actually want and it is where a naive implementation destroys somebody's annotations THE EXTENSION - Select text on a page, highlight it, add a note. The article's title, author and URL captured with it - Talks only to your own server, per-host permissions rather than every site OPERATIONS - .env: DATABASE_PATH, STORAGE_PATH, BASE_URL, SESSION_SECRET, SMTP_URL, ENCRYPTION_KEY - Migrations on boot, each once; nightly backup off the machine — this is years of reading - Health endpoint reporting the age of each import source WHAT MATTERS MOST Stable identity across re-imports, and the daily email. The first keeps the library clean; the second is the only reason any of this is worth having.
What you lose
- Import from Kindle, Apple Books, Instapaper, podcasts and a dozen other sources, kept working
- A read-later reader that parses hostile web pages into clean text reliably
- Spaced repetition of your own highlights, delivered daily without being annoying
- Two-way sync into note apps, so highlights land where you already write
- Years of highlights already imported and deduplicated
If you would rather not build
- Omnivore — open-source read-later with highlights and export
- Instapaper — paid, cheaper, no spaced review
What it costs
read from their page 15 Aug 2026
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $9.99/mo | — | 15 Aug 2026 |
Their pricing page is where these came from. Seeing a different price? Tell us.
The escape hatch
open source · no votes, no paid placement
Wallabag
$0Self-hosted read-later that strips pages to text and keeps annotations.
wallabag/wallabagfree · open source
Readability
$0The parser Firefox uses for reader mode — the hard half of any read-later tool.
mozilla/readabilityfree · open source
Why this verdict
our own opinion · changed only by a person
58/100
Verdict kinda at 58: the store, the schedule and Markdown export are a weekend, and owning your highlights is worth something. The import surface is the recurring work — every source breaks eventually, and there are a dozen of them.
History
tracked since 9 Aug 2026 · nothing is ever overwritten
Questions about Readwise
answered from the record above
Is Readwise free?
No — the plan we track is $9.99 a month. Readwise at $9.99/month or $89.99/year; Reader is included, and there are discounts for students.
Can you replace Readwise by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 58 out of 100, build time a weekend. Read what you lose before you decide.
How much does Readwise cost?
$9.99 a month on Full — $119.88 a year. Recorded 9 Aug 2026.
What do you lose by replacing Readwise?
Import from Kindle, Apple Books, Instapaper, podcasts and a dozen other sources, kept working; A read-later reader that parses hostile web pages into clean text reliably; Spaced repetition of your own highlights, delivered daily without being annoying; Two-way sync into note apps, so highlights land where you already write; Years of highlights already imported and deduplicated. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Readwise?
Yes: Wallabag, Readability. 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

