Documentation
Open source · Self-hosted · Your data

A library of your own.

Bookplate is a reading tracker you run on your own server. Log every book you read, write notes with images, keep the words you learn, and see your reading years add up. Export it all as plain files whenever you like.

Your own personal, digital library
Bookplate
124 volumes · 112 read · ★ 3.9 average
CoversLedger
AllReadReadingTBRShow notes
Cover of Sapiens
★★★★★
Cover of Atomic Habits
★★★★★
Cover of There Are Rivers in the Sky
Reading
Cover of 1984
★★★★★
Cover of The Silent Patient
★★★★★
Cover of Dark Matter
TBR
Cover of The Psychology of Money
★★★★★
Cover of The Hitchhiker’s Guide to the Galaxy
★★★★★
Cover of Lessons in Chemistry
★★★★★
Cover of Where the Crawdads Sing
★★★★★
Cover of Catch-22
TBR
01 What’s in it

Everything on one shelf.

02 Adding books

Search it. Crop it. Shelve it.

Search the Open Library catalogue and pick a result. The title, author and page count fill in, and the cover is fetched and opened in a cropper set to book proportions.

  • Upload a cover, or paste one from the clipboard with ⌘V
  • Covers are compressed in the browser to about 40–80 KB
  • Books without a photo get a generated cloth cover in one of twelve colours
  • Track the source, status, rating, finish date, and whether you own a copy
Add a book
CancelAdd to shelf
03 Notes

A page for every book.

Every book has its own notes page with a Notion-style editor. Markdown renders as you type: ## becomes a heading, **bold** becomes bold, and > starts a quote. Paste an image and it appears inline.

  • Notes are stored as Markdown and export as plain .md files
  • Large pasted images are downscaled before they are stored
  • Images you remove from a note are cleaned up automatically
  • Turn on “Show notes” to put a ribbon on every book that has notes
Cover of Atomic Habits
← Library
Atomic Habits
James Clear · Notes
BIH1H2“ ”•▣

Write anything. Markdown shortcuts work, and you can paste images.

Unsaved changesCancelSave
04 Statistics

See your reading add up.

Totals for books, pages and ratings, plus charts for books per year, genres, ratings and sources. Click any chart to see the books behind it, with the highest rated first. Any book in the list opens its details.

Books read
0
Read this year
0
Pages turned
0
Average rating
0.0
Books per year
Click a year to drill in
9 books19
14 books20
11 books21
18 books22
16 books23
21 books24
23 books25
Genres
By books read
Fiction34
Self-help18
Science16
History13
Thriller11
Biography10
05 Vocabulary

Keep the words you read.

Type a word you came across. Bookplate looks it up on Wiktionary and shows every sense with its part of speech and an example. Keep the one you meant, or write your own definition if the dictionary has nothing.

  • Tag each word with the book it came from
  • Each book’s notes page lists its words
  • Search, sort and filter the list by book
Look up a word
A word you met while reading
From: Sapiens ▾
Dystopian
adjective
Relating to an imagined society where there is great suffering or injustice.
From 1984
Sanguine
adjective
Cheerfully optimistic, especially in a difficult situation.
From The Psychology of Money
06 Your data

Your server. Your files.

Your library lives on your own server, behind your own login. One click exports all of it as a zip of ordinary files you can read, back up and version, and imports it into any other Bookplate. Nothing is sent anywhere unless you send it.

library.json
Every book, as readable JSON
covers/*.jpg
Cropped, compressed covers
notes/<id>.md
One Markdown file per book
notes/images/
Images pasted into your notes
vocabulary.json
Your words and definitions

Bookplate sends no analytics or telemetry. Catalogue, cover and dictionary lookups go through your own server, so your browser never contacts those sites directly, and none of them need an API key.

bookplate-export.zip › library.json{
  "books": [
    {
      "title": "Sapiens",
      "author": "Yuval Noah Harari",
      "genre": "History",
      "pages": 498,
      "status": "read",
      "rating": 5,
      "dateRead": "2025-03-14",
      "format": "bookstore",
      "copy": true,
      "colorIndex": 2
    }
  ]
}
07 Get started

On your shelf in a minute.

Terminal
$ curl -fsSLO https://raw.githubusercontent.com/LeoPhh/bookplate/main/docker-compose.yml
$ curl -fsSL https://raw.githubusercontent.com/LeoPhh/bookplate/main/.env.example -o .env
$ docker compose up -d

You need Docker. Add two random secrets to .env (the file shows the command that makes them), start it, and open localhost:3000 to create your account. It runs on anything from a Raspberry Pi to a cloud server.

It’s built with Next.js, Postgres and hand-written CSS, with no UI framework, and licensed under Apache 2.0. Updating is one command: docker compose pull && docker compose up -d.

New to Docker, or want HTTPS, backups and access from your phone? The documentation walks through every step.

Star it on GitHub ↗