Marginalia

Free forever · no card

Track pages, not intentions.

Marginalia is a shelf you and your team actually keep. Type the page you stopped on, leave the note you argued with, and publish only the books worth sending to someone.

No card · free plan is permanent · your notes stay yours

A wall of shelved books
Free books, forever
0Free books, forever
Seats on a team shelf
0Seats on a team shelf
Colour in the interface
0Colour in the interface
Notes kept private
0%Notes kept private

Every number on this row is enforced by the backend rather than by a hidden button — the free ceiling, the seat count, and the rule that a margin note never leaves its workspace.

How it works

Four steps, and none of them is a streak.

Scroll the four and watch the number change. There is no fifth step, no onboarding checklist, and nothing to configure before the first book goes on.

01 · Open a workspace

A workspace is one shelf. Keep the work reading apart from the home reading, or start a shared one and invite the team into it.

02 · Add the book that is actually open

Title, author, page count. The page count is the only number that matters, because it is the one that turns intention into a percentage.

03 · Move the bookmark, leave a note

Type the page you stopped on. Reaching the last page finishes the book on its own — status is a consequence of reading, not a second thing to remember.

04 · Publish the ones worth arguing about

Any book can get its own public page at a link you control. Your margin notes never go with it, and retracting the link kills the page instantly.

What it does

A shelf, a bookmark, and somewhere to put the argument.

Five things, done properly. No streaks to protect, no badges to collect, and no feed of what everybody else is reading.

01

Pages, not intentions

Progress is a page number you typed, so “nearly finished” has to mean something. Finishing a book is what happens when the number reaches the last page.

02

Margin notes

Quote the sentence that stopped you, with the page beside it. Notes stay inside the workspace and are never published with a shared book.

03

One shelf, many readers

On the Team plan everyone reads from the same shelf and sees each other's marginalia. Owners and admins moderate; members keep their own books.

04

Workspace isolation

Every read and every write resolves your membership first. There is no query in the backend that can return a row from a shelf you are not seated on.

05

Public book pages

A published book gets a real page with real metadata — a title tag, a description, an OG card — so a link sent to a friend looks like something.

Team shelf

One shelf, and everyone can see the page numbers.

On the Team plan a workspace seats up to twelve readers on the same shelf. Everyone sees what everyone else is reading, where they got to, and what they wrote in the margin.

  • Members keep their own books; owners and admins can edit anyone's.
  • Margin notes are shared inside the workspace and never outside it.
  • Pending invitations count against the seat limit, so a shelf cannot oversubscribe itself.
  • Leaving a workspace takes your seat back without touching the books.

Design team · this week

Idris reached page 96

Seeing Like a State

One book

From the shelf to somebody else's inbox.

Four moments in the life of a single book. Every one of them is a rule the backend enforces on every request, not a promise this page is making on its behalf.

Day one

It lands on a shelf, and the shelf has an owner

Title, author, page count. The book belongs to one workspace from the moment it exists, and every read and write against it re-checks that membership on the server — not in the browser, and not once at login.

requireBookAccess(ctx, bookId) — resolves the book's own workspace, then your seat in it

Every session

The bookmark moves, and nothing else has to

Type the page you stopped on. That is the entire interaction. Reaching the last page finishes the book on its own, because status is a consequence of reading rather than a second thing to remember.

96 / 445 · 22% · finished at 445 without a second click

When it earns it

It gets a page of its own

Any book can be published to a link you control. The page carries the title, the author, where you got to and your one-line summary. Your margin notes are not on it, because they were never part of what publishing means here.

marginalia.app/s/qk3xr9vn2mp7ta

The moment you change your mind

The link stops working

Retracting is one click and it is immediate — the public query re-checks the plan and the share flag on every request, so a link that was revoked is a link that is dead, not a link that is cached.

unshare(bookId) — the row loses its shareId, and the URL 404s on the next load

Sharing

One book at a time, never the whole shelf.

Publishing is opt-in, per book, and reversible in one click. A published page carries the title, the author, where you got to and your one-line summary — and nothing else you wrote.

You publish your own book
On the Reader plan any book on your shelf can get a link. It shows the title, the author, where you are and your one-line summary. Nothing else.
The team publishes together
On the Team plan an owner or admin can publish on behalf of the whole workspace, and the page carries the team's name rather than one person's.
Retracting actually retracts
Unpublishing deletes the link. Dropping to a plan without public links retracts every page that plan authorised, in the same transaction.

marginalia.app/s/qk3xr9vn2mp7ta

Shared by Design team

Seeing Like a State

James C. Scott

96 / 445 pages · 22%

Margin notes are not on this page, and never are.

Pricing

Free is the plan, not the trial.

The Free plan has no expiry, no card and no countdown: twelve books, kept forever. Reader lifts the ceiling and turns on public links. Team puts up to twelve people on one shelf. Subscribe the day the shelf outgrows the plan — not before.

Free

$0/ forever

A private shelf, for one reader, with no expiry date on it.

  • 12 books
  • 1 reader
  • Public book links
  • Shared team shelf
  • Page-level progress and finish dates
  • 20 margin notes per book
  • One private workspace
Start reading

Reader

Most chosen

$6/ per month

Unlimited books, and a public link for the ones worth arguing about.

  • Unlimited books
  • 1 reader
  • Public book links
  • Shared team shelf
  • 500 margin notes per book
  • Reading stats across the whole shelf
  • Retract any link in one click
Go unlimited

Team

$18/ per month

One shelf the whole team reads from, and shares from.

  • Unlimited books
  • Up to 12 readers
  • Public book links
  • Shared team shelf
  • Everything in Reader
  • Publish on behalf of the team
  • Roles: owners, admins and members
  • Everyone's margin notes, in one place
Read together

Checkout is live: choosing a paid plan opens Stripe's hosted page, and the entitlement is flipped by the webhook rather than by the success redirect. Cancelling in Stripe's portal drops the workspace back to Free with everything it already has intact.

Compare

What actually differs.

Every row below is a rule the backend enforces, not a bullet this page invented. The unit test beside src/lib/plans.ts fails the build if the two ever disagree.

Limits are checked on the server. A workspace that ends up over a limit keeps everything it already has and stops growing — nothing is deleted.
CapabilityFree$0Reader$6Team$18
Books on the shelf12UnlimitedUnlimited
Readers in the workspace1112
Margin notes per book20500500
Page-level progressIncludedIncludedIncluded
Finish dates and reading statsIncludedIncludedIncluded
Publish a book to a public linkNot includedIncludedIncluded
Publish on behalf of the teamNot includedNot includedIncluded
One shelf, many readersNot includedNot includedIncluded
Roles: owner, admin, memberNot includedNot includedIncluded
Margin notes stay privateIncludedIncludedIncluded

Readers

What people say once the shelf is a habit.

Three of them, dealt one at a time. A wall of testimonials gets skimmed; a single card gets read — and none of these is about the software being delightful.

I have abandoned four reading apps because they wanted to be a social network. This one wanted to be a shelf, which is the thing I actually needed.

Priya Raman

Staff engineer

We run a book club across three time zones. One shared shelf and a page number each has replaced an entire spreadsheet and most of the arguing.

Tomas Berg

Engineering manager

The page-number thing is quietly brutal. You cannot tell yourself you are almost done with a book when the app knows you are on page 40.

Lena Ortiz

Researcher

Publishing a single book to a link, without publishing my whole library, is the only sharing feature I have ever actually used twice.

Marcus Hale

Writer

Black and white, one typeface for headings, no badges to collect. It reads like a notebook and gets out of the way.

Yuki Tanaka

Designer

Our admin published the team's reading list before an offsite and the page just worked — real title, real preview when it hit Slack.

Sofia Almeida

Head of design

Questions

The things people ask before they start.

Longer answers live in the notes. Read the notes

A long library wall of shelved books lit by a row of hanging bulbs

The book is already open. Write down the page.

Twelve books free, forever, with no card and no trial clock. Upgrade the day the shelf outgrows the plan, not before.

  • No card
  • Free forever
  • Notes stay private