Save articles to read later, stripped to text and synced across devices, with highlights, full-text search and text-to-speech.
Build me a read-later service that replaces Instapaper: an article saved in one tap, stripped to text, readable offline, with my highlights. STACK - Node 20+ with Fastify, server-rendered HTML - SQLite through better-sqlite3, WAL mode, with FTS5 for search - A worker for fetching and extraction - A browser extension and a bookmarklet; a PWA for reading offline - Caddy in front THE DATA MODEL - articles: id, url, canonical_url, url_hash, title, author, site_name, published_at, lead_image_path, content_html, text_content, word_count, reading_minutes, language, extraction_status, extraction_method, fetched_at - saves: id, user_id, article_id, folder_id, saved_at, archived_at, deleted_at, is_starred, progress_percent, last_read_at, note - highlights: id, save_id, text, prefix, suffix, start_offset, end_offset, colour, note, created_at - folders, tags, save_tags - assets: id, article_id, original_url, path, sha256, width, height — images stored locally - Content stored once per canonical URL and shared between users; the save is the personal part SAVING - A bookmarklet, a browser extension, a share target on mobile, and an email address that accepts a forwarded page - Saving returns immediately and extracts in the background; the article appears within seconds with a clear state while it is working - Deduplicate on the canonical URL — resolve redirects, strip tracking parameters, and honour the page's own canonical tag - Save the page as it is if extraction fails, rather than saving nothing EXTRACTION, WHICH IS MOST OF THE PRODUCT - Fetch politely: an identifiable user agent with a URL explaining it, a timeout, a size cap, and no redirects to private addresses - Extract the article with a readability algorithm: score blocks by text density and link density, keep the winner, drop navigation, sidebars, related-article boxes and newsletter prompts - Keep what belongs to the article: headings, paragraphs, lists, blockquotes, code, tables, figures with their captions, and inline emphasis. Losing a code block or a table is what makes an extraction useless for technical writing - Sanitise everything on the server; store the cleaned HTML and a plain-text version alongside it - Per-site rules for the ones that resist, kept as data with a fixture and a test each. A general algorithm gets you eighty per cent; the last twenty is a hundred small rules and that is why this is the hardest part - Record which method succeeded, so a bad extraction is diagnosable and re-runnable - Images downloaded and stored locally, resized, so the article survives the site disappearing — which is the real reason to have saved it - Paywalled and login-required pages: detect and say so honestly. Do not build circumvention READING - Text on a comfortable measure, with the font, size, line height, margin and theme all adjustable and remembered - Dark, light and sepia; the last one is not decoration, it is what people read at night - Progress saved continuously and synced, so a phone and a laptop agree on where you are - Estimated reading time from word count, with the rate stated - Keyboard shortcuts for the whole loop: next, previous, archive, star, highlight - Offline: the current list and their content cached in the browser, so a train journey works HIGHLIGHTS AND NOTES - Select and highlight, with a note attached - Anchored by text with a prefix and a suffix as well as offsets, so a highlight survives the article being re-extracted. Offsets alone break the first time a rule changes - A page of all highlights, searchable, exportable as Markdown - Export in a shape another tool can read, because highlights are the thing people most want to keep ORGANISING AND FINDING - Folders, tags, starred, archived, and a real trash with a stated retention - FTS5 over titles, authors, full text and notes, with filters by folder, tag, site, date and read state - Sorting by saved date, published date, length, and by shortest — which is the list you read when you have ten minutes SPEECH - Text to speech using the browser's own voices, with speed control and a resume position - No third-party speech service; the article text stays here ESCAPE - Import from the common exporters, including a plain list of URLs - Export everything: articles as HTML or Markdown, highlights, and the metadata, in one command - A reading list is years of intention 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 - Fetches rate-limited per host, with backoff, because being a good citizen matters when you are fetching other people's pages - Nightly backup off the machine, restore script - Health endpoint reporting extraction queue depth and the failure rate WHAT MATTERS MOST Extraction quality and highlight anchoring. Save fifty articles from the sites you actually read and fix every extraction that came out wrong before building anything else — a read-later service that mangles half of what it saves is a read-later service you stop using in a week. Give me the repository, the extension, the bookmarklet, migrations, .env.example, and a README with deploy steps behind Caddy.
What you lose
- Article extraction tuned against thousands of awkward sites, which is most of the product
- Text-to-speech and offline reading on mobile
- Highlights synced across devices
If you would rather not build
- Omnivore-style clients over your own store
- The reader mode already in your browser
What it costs
read from their page 15 Aug 2026
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $5.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 with extraction, tags and mobile apps.
wallabag/wallabagfree · open source
Readability
$0The extraction library that most of these products are built on.
mozilla/readabilityfree · open source
Why this verdict
our own opinion · changed only by a person
86/100
Verdict yes at 86. Readability does the extraction; storing highlights as text rather than DOM ranges is the decision that keeps them working.
History
tracked since 10 Aug 2026 · nothing is ever overwritten
Questions about Instapaper
answered from the record above
Is Instapaper free?
No — the plan we track is $5.99 a month. Premium at around $5.99/month billed monthly, cheaper annually.
Can you replace Instapaper by building your own?
YES. Replaceable in one session with an AI coding agent. Replacement score 86 out of 100, build time one session. Read what you lose before you decide.
How much does Instapaper cost?
$5.99 a month on Premium — $71.88 a year. Recorded 10 Aug 2026.
What do you lose by replacing Instapaper?
Article extraction tuned against thousands of awkward sites, which is most of the product; Text-to-speech and offline reading on mobile; Highlights synced across devices. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Instapaper?
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

