Readwise

readwise.iocontributed by Samuele Ongaro

ALMOST

A weekend of work, and real gaps remain.

Collects highlights from everywhere you read — books, articles, podcasts — deduplicates them, sends a daily review, and syncs them into your notes.

Promptfree, for everyone, and the only version there is
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

PlanBilled monthlyBilled yearlyLast 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

$0

Self-hosted read-later that strips pages to text and keeps annotations.

wallabag/wallabagfree · open source

Readability

$0

The 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

Interest · last 30 dayspeak 3/day
views012330 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

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

All 40 in Notes, docs & writing

Not sending yet

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

Esc