Sync & Backup
Reading across multiple devices shouldn't mean losing your place. Readest keeps books, progress, highlights, and notes in step through several sync paths — you can use any of them on its own, or layer them.
How sync works
Every book in your library is two separate things, and they travel differently.
- The library entry is small. It holds the title, author, cover, tags, reading status, your last-read position, bookmarks, highlights, and notes. Entries sync to every device you're signed in on.
- The book file is the actual EPUB, PDF, or other document, and it is the part that takes up space. Readest leaves it in the cloud until a device actually needs it.
A book whose entry has arrived but whose file has not is a cloud-only book. It sits on the shelf with a download badge on its cover. Tap the badge to fetch just that file, or tap the book to download and open it in one step. Until you do, that book uses no space on the device.
Nothing downloads your whole library in the background. This holds for Readest Cloud and for every third-party provider: a second device stays light unless you open books on it.
Importing a book puts a copy on the device you imported it on, whether or not you sync. The exception is Read books in place, which registers a folder and reads each book from its original location. See Library → Import options.
Cloud sync
Sign in to a Readest account under Main Menu → Account. Once signed in, Sync toggles appear in the menu. Readest Cloud is enabled by default; to mirror your library to storage you control as well, or use personal storage without Readest Cloud, see Cloud storage providers.
Readest is open-source and self-hostable. If you want full control over sync storage, see the repo for setup details. The Supabase schema is documented on the wiki.
What syncs
Open Main Menu → Advanced Settings → Data Sync (or Account → Manage Sync from your profile) to control sync per category:
- Books — imported book files and library metadata.
- Reading progress — last-read position, bookmarks, and per-book preferences.
- Annotations — highlights and notes.
- App settings — theme, custom colors, integrations (KOSync, Readwise, Hardcover), and dictionary order.
- Fonts — custom font files you uploaded.
- Backgrounds — custom background textures.
- Dictionaries — imported dictionary bundles and settings (see Translate → Custom dictionaries).
- OPDS catalogs — saved catalog URLs (and, optionally, encrypted credentials).
- Audiobookshelf servers — saved server URLs, selected libraries, and (optionally) encrypted credentials.
- Credentials — tokens, usernames, and passwords for OPDS, KOReader, Readwise, Hardcover, Audiobookshelf, and WebDAV.
- Reading statistics — time spent and pages read, shared across your devices and with KOReader.
All categories are on by default except Credentials — that one is opt-in.
Turning a category off stops this device from sending or receiving that kind of data. Anything already on the server is left alone, and turning the category back on resumes from where you stopped instead of re-uploading everything. The switch itself syncs with your App settings, so it applies to your account rather than to one device.
Two rows behave differently from the rest. App settings locks on while Dictionaries is on, because dictionary preferences ride along with it. And while Readest Cloud is switched off but a third-party provider is on, the Books, Reading progress, and Annotations rows read Managed by … and have no effect, because the provider carries those channels instead.
Device storage
Book files accumulate on whichever devices you read on. Readest has no automatic cleanup, so freeing space is something you do deliberately.
Offload one book. Open the book's details (long-press the cover, or Book Menu → Book Details), then the trash icon → Remove from Device Only. The file is deleted from this device while the library entry, your reading position, and your annotations stay put, and the cover goes back to showing a download badge. The cloud copy is untouched, so you can pull the book down again any time. The option is greyed out for a book that isn't downloaded here.
The same menu offers Remove from Cloud & Device, which deletes the book everywhere, and Remove from Cloud Only, which frees cloud quota but keeps the local file. Remove from Cloud Only is hidden while a third-party provider is on, since that provider would simply re-upload the still-local book on its next pass.
There is currently no bulk version of Remove from Device Only — select mode's Delete removes books from the cloud as well.
Check what's in the cloud. Account → Manage Storage lists every file in your Readest Cloud storage with its size, alongside your quota and how much of it you've used. Sort by Largest First to find the heavy items, then select and delete what you no longer want.
Manage Cache (mobile only, under Main Menu → Advanced Settings) clears temporary files and orphaned book files that aren't in your library. It deliberately leaves your downloaded books alone, so it won't reclaim the space they use.
Sync with Koreader
If you also use Koreader (a popular reader for e-ink devices), you can sync reading progress between Readest and Koreader. There are two ways — pick the one that matches what you need:
Progress only (official KOSync server)
Uses the official KOReader Sync Server. Works for progress only.
In Readest:
- Open a book → Book Menu → KOReader Sync.
- Enter the server URL — defaults to
https://sync.koreader.rocks/. - Enter your username and password.
- Set Checksum method to File Content.
In Koreader:
- Tools → Progress sync.
- Enter the same URL, username, and password.
- Set Document matching to Binary.
Progress now syncs both ways. Bookmarks, highlights, and notes do not sync via this path — the official server supports progress only.
After connecting, Send Document Metadata optionally includes the filename, title, and authors with progress uploads. It is off by default and is mainly useful with a self-hosted server that displays document details.
Books + progress + notes (Readest Sync + plugin)
Uses a Readest account on both sides.
- Install the Readest KOReader plugin from the plugin page.
- Sign in to the same Readest account on both apps.
- In Koreader's Tools → Readest menu, do a manual Push / Pull to test connectivity.
- Turn on Auto sync once you've confirmed the pair works.
This path syncs book files, reading progress, bookmarks, highlights, and notes — your full library across Readest and Koreader.
The Koreader plugin menu (Tools → Readest) covers:
- Readest library — browse your full Readest library from inside Koreader. Cloud-only books are downloaded on tap; books already on disk are deduped by the same content hash Readest uses everywhere else.
- Push books now / Pull books now — manual book-file sync. Auto sync handles this in the background when enabled.
- Push / Pull reading progress now, Push / Pull annotations now, Full sync all annotations — per-book operations from the reader.
- Sync info — diagnostic dialog showing the book fingerprint, identifiers, and last-sync timestamp; useful when reporting sync problems.
From the Koreader FileManager, long-press a book and pick Add to Readest to upload an individual file without enabling full-library sync.
Reading statistics. Readest logs your reading time and pages read in a KOReader-compatible statistics database. With the Reading statistics sync category on (see What syncs), those totals sync across your Readest devices and stay in step with KOReader's own statistics.
The Readest Sync Server does not currently support backward syncing — if one device has a later progress mark, it won't regress even if another device tries to sync an earlier one. Override from the server if you need to.
Full setup guide: the Sync with Koreader devices wiki page.
BookOrbit
BookOrbit is a self-hosted library server that speaks KOReader's sync protocol. Readest talks to it directly, so one BookOrbit instance can hold the reading state for your Readest devices and your Koreader devices at the same time.
Set it up under Settings → Integrations → Reading Sync → BookOrbit:
- Enter the Server URL — the server's origin, like
https://books.example.com, with no API path after it. - Enter the Username and Password. These are the KOReader credentials BookOrbit mints for you in its own web UI, under Settings → Integrations → KOReader. Readest can't create the account for you.
- Tap Connect.
Once connected, four switches decide what travels, and all four start on:
- Sync Reading Progress
- Sync Highlights and Bookmarks
- Sync Reading Statistics
- Sync Reading Status — whether a book is reading, complete, or abandoned.
Sync Strategy settles disagreements between devices: Ask on conflict (the default), Always use latest, Send only, or Receive only. Device Name is what this device calls itself in BookOrbit's device list.
BookOrbit carries reading state, not book files. Your library still lives wherever you keep it, so pair this with cloud sync or cloud storage providers if you also want the files to travel.
Cloud storage providers
Prefer to keep your data on storage you control? Readest can sync your reading state — and optionally your book files — through WebDAV, Google Drive, OneDrive, iCloud Drive, or any S3-compatible bucket.
All providers appear in the Cloud Sync section under Settings → Integrations, with Readest Cloud enabled by default when you sign in. Provider checkboxes are independent: you can enable one provider or mirror the same library through several at once. Turning one on does not silently turn another off. App settings, reading statistics, and dictionaries still sync through your Readest account while you're signed in.
WebDAV
Point Readest at any WebDAV server (Nextcloud, ownCloud, a plain Apache/nginx WebDAV share, and the like).
- Open Settings → Integrations → WebDAV.
- Enter your Server URL (e.g.
https://dav.example.com), Username, and Password. Optionally set a Root Directory (defaults to/). - Tap Connect. Readest keeps everything under a
Readest/folder inside that directory.
Google Drive, OneDrive & iCloud
Sync to your own Google Drive instead — available on the desktop apps, Android, and iOS (and the official web app).
- Open Settings → Integrations → Google Drive.
- Tap Connect and sign in through your browser. Readest only ever touches the files it creates, in a private per-app folder — it can't see the rest of your Drive.
- Leave the provider's checkbox on to include it in library sync.
OneDrive
Connect a personal Microsoft OneDrive account from Settings → Integrations → OneDrive. Sign in through the browser, then leave the provider checkbox on. Like Google Drive, Readest works inside its own application folder rather than browsing the rest of your files.
iCloud
On macOS, iPhone, and iPad, Settings → Integrations → iCloud uses the signed-in device's iCloud Drive. Open the row to confirm availability, then enable its checkbox. It is not shown on unsupported platforms.
S3-compatible storage
Bring your own bucket — AWS S3, Cloudflare R2, MinIO, or anything else that speaks the S3 API.
- Open Settings → Integrations → S3 Storage.
- Enter the Endpoint (e.g.
https://<account-id>.r2.cloudflarestorage.com), Bucket, Access Key ID, and Secret Access Key. Region defaults toauto. - Tap Connect and leave the provider checkbox on.
The bucket must already exist, and the credentials need read/write access to it. In the web app, the bucket's CORS policy must also allow the site's origin.
Shared options
Every provider has the same three controls in its setup screen:
- Upload Book Files — whether this device contributes the actual EPUB and PDF files. Turning a provider on switches this on for you, on the assumption that you want your library mirrored there. Switch it off to send only reading state, tags, status, and covers. Covers are sent either way, because a device without the book bytes can't generate one.
- Full Sync — re-check every book instead of only the ones that changed, for when things drift out of step.
- Sync Strategy sets the direction: Send and receive (two-way, the default), Send only, or Receive only.
Use Sync now for an immediate pass; each panel shows when that provider last synced. In a book's Book Menu → Sync Info, Readest lists a separate timestamp or failure state for every enabled provider, which makes it clear which copy is keeping up.
Audiobookshelf
Connect a self-hosted Audiobookshelf server to stream its audiobooks and podcasts through Readest:
- Open Settings → Integrations → Audiobookshelf and choose Add Server.
- Enter the server's HTTP(S) URL, username, and password, then tap Connect. You can add more than one server.
- Open the connected server and turn on the book or podcast Libraries to Sync.
- Tap Sync Now. Titles from those shelves appear in your Readest library and stream from the server when opened.
Playback progress is sent back to Audiobookshelf. To read an ebook along with its narration, pair the synced audiobook from Book Menu → Pair Audiobook; see Listen → Pair an audiobook.
Audiobooks and podcast shows come across; entries the server holds as ebooks only stay where they are. Nothing downloads — a title streams as you listen, so it takes no space on the device, and the newer position wins when you open it somewhere else. Pairing lines the audio up against the book's table of contents, so a book with no chapter list can't be paired; Manage Audiobook on the same menu unpairs it again, leaving the ebook, its notes, and its reading progress untouched.
Removing a server stops any active stream from it and removes that server's imported shelf from Readest. It does not delete media from the Audiobookshelf server.
Readwise export
Readest can push highlights and notes to Readwise.
- Book Menu → Readwise Sync.
- Paste your Readwise access token.
- Tap Push Highlights to send all new highlights automatically to Readwise.
Exports include the book title, author, chapter, quote, note, and source link back into the Readest book.
Hardcover tracking
Hardcover tracks what you're reading, rating, and finishing. Readest can update Hardcover automatically.
- Book Menu → Hardcover Sync.
- Paste your Hardcover API key.
- Match each book in your library to a Hardcover title (done by ISBN where possible, manually otherwise).
- Toggle Enable for this book per book.
When the toggle is on, you can push progress and notes as you read to Hardcover.
Notion export
Readest can mirror your highlights and notes into a Notion database, one page per book, and keep them current as you read.
Two things have to exist on the Notion side first: an internal integration, created at notion.so/my-integrations, and a database you've shared with that integration. Readest only ever writes the page title, so any database will do.
Then, under Settings → Integrations → Reading Sync → Notion:
- Paste the Access Token — the integration secret, which starts with
secret_. - Paste the Database ID. The database's URL works too.
- Tap Connect.
Each book becomes a page named after the book. A highlight arrives as a block quote under a faint Added on date line, with the chapter title above it when Include Chapter Heading is on, and any note you attached following as a paragraph.
Readest syncs a few seconds after you stop annotating, and it's a real sync rather than an append: edit a note and its block is rewritten, delete a highlight and its block is archived. The setup screen shows when the last pass ran, and Sync Enabled pauses the whole thing without disconnecting.
Backup & restore
Even with cloud sync on, a local backup is a good idea for heavy annotators.
- Export annotations — from the Book Menu (per-book). See Reading → Export notes for export formats.
- Export library data — under Main Menu → Advanced Settings → Backup & Restore, export a zip file of your library: book files, metadata, reading status, groups, highlights, notes, and your app settings.
To restore on a new device, import the backup zip file. It restores your library and reading data, and merges the saved settings onto whatever this device already has (fields the backup doesn't carry keep their current values). Cloud sync, if you use it, re-aligns everything automatically after restore.