Success
Wirelessly import your Calibre library into justRead on iPhone and iPad, then push your reading progress, ratings, and stats back into Calibre's own custom columns. Here's everything it does and how to set it up.
If you keep your ebooks in Calibre, you already have a librarian, a place where every book, its metadata, series, and tags live in order. What Calibre has never had is a good way to read those books on an iPhone and have the reading itself flow back into the library.
That's the gap justRead fills. Its Calibre integration is genuinely two-way:
- Books flow in. Browse your Calibre Content Server over Wi-Fi and pull EPUBs and PDFs straight into justRead: covers, authors, and metadata included.
- Reading data flows back. When you finish a book, rate it, or build a streak, justRead can write that progress into custom columns in your Calibre library. Your rating, percent-read, finished date, reading time, and more end up as real, sortable Calibre columns.
No cables, no "send to device" email dance, no manual re-importing. This guide walks through the whole thing, in order.
What you'll need first
The integration talks to Calibre's Content Server over your local network. Before touching the app:
- Turn on the Content Server in Calibre. In the desktop app: Connect/share → Start Content Server (or set it to start automatically in Preferences → Sharing over the net). The default port is 8080.
- Be on the same Wi-Fi. justRead's Calibre connection is LAN-only by design - it won't reach a server over cellular or a remote/VPN address. Your iPhone and the computer running Calibre need to be on the same network.
- (For writing data back) log in as a real Calibre user. Reading a library can be anonymous, but Calibre refuses to accept changes from anonymous users. If you want the reading-data write-back, set a username/password in Preferences → Sharing over the net → Require username/password.
- (For writing data back) create a few custom columns. More on exactly which ones in Step 3, you can skip this if you only want to read.
That's the Calibre side. Everything else happens in the app.
Where everything lives in the app
Open the Library tab and tap the ••• (overflow) menu. Three Calibre entries live here:
- Calibre: connect to and manage your server.
- Calibre Books: browse and import (appears once you're connected).
- Send to Calibre: push your reading data back (appears once you have books eligible to send).
A small server icon next to the menu shows connection status at a glance: blue when your server is reachable, orange when it's saved but currently unreachable, gray when none is set up.
Step 1 - Connect to your server
Tap ••• → Calibre to open the connection screen. You have two ways in.
The easy way: automatic discovery
If your Content Server is running on the same Wi-Fi, justRead finds it for you. Under AUTOMATIC CONNECTION, your library shows up by name, tap Connect and you're done. No IP addresses, no ports.
The manual way
If discovery can't find it (some networks block the broadcast), enter the address yourself under MANUAL CONNECTION:
http://192.168.1.10:8080
Use your computer's local IP and the Content Server's port. You can drop the http:// - the app adds it. Running the server over HTTPS works too; just type the full https://… address.
If your server requires a login, justRead asks for it only when the server says so: an AUTHENTICATION REQUIRED section appears with Username and Password fields. It supports both Digest and Basic auth.
Once connected, you'll see your Server, Library, Account, and total Books count. If your Calibre install hosts several libraries, a picker lets you switch between them. (justRead keeps one server connected at a time, connecting to a new one replaces the old.)
Set your format preferences
While you're here, open SYNC PREFERENCES:
- Show: import All, EPUB only, or PDF only.
- When both formats exist: for a book Calibre holds as both EPUB and PDF, choose Prefer EPUB, Prefer PDF, or Both (which imports it as two separate entries in your library).
One honest limit: justRead reads EPUB and PDF only. MOBI, AZW3, CBZ, and other formats in your Calibre library are simply skipped. If you want one of those on your phone, convert it to EPUB in Calibre first.
Step 2 - Import your books
Tap ••• → Calibre Books to open the browser. This is where the library comes across.
Each book shows its cover, title, author, a format pill (EPUB / PDF), and file size. You also get a per-book status badge:
- New (blue): not yet imported.
- Changed (orange): you imported it before, but the file on the server has since been updated. Tap to expand an inline diff showing the old vs. new modified date and size.
- Synced (green): up to date on your device.
Search by title or author with the field up top. Books are sorted so anything needing attention, Changed, then New, floats to the top.
Selecting and syncing
Importing is a batch operation, not one-tap-per-book. Tap books to select them, or use the selection menu for shortcuts: Select All, Select New, Select Changed, or Select New & Changed.
A bar at the bottom shows how many you've picked and a Sync button. Tap it and justRead downloads them in parallel, with a live "Syncing X of Y" count. It checks you have enough free space first, keeps the screen awake during the transfer, and pauses iCloud sync so the two don't fight.
The nice part is what happens on a re-sync. When you pull a Changed book again, justRead replaces the file but keeps your place, your reading position and highlights survive the update. So if you fix a typo or swap a cover in Calibre and re-export, you don't lose progress on your phone.
When it's done, a log summarizes the run: how many were Selected, Already up to date, Downloaded, and Failed, with failures grouped by reason (network, storage, auth, and so on).
At this point you can stop. You've got a wireless, incremental Calibre → iPhone pipeline. But the more interesting half is going the other way.
Step 3 - Set up the write-back (custom columns)
Here's the part no other Calibre reader does: justRead can push your reading data back into Calibre. Rating, percent-read, whether you finished and when, how many minutes you've read, your streaks, all of it can land in Calibre as proper columns you can sort and filter on.
Calibre stores this in custom columns, so you create the ones you want, then tell justRead which stat maps to which column.
Create the columns in Calibre
In Calibre desktop: Preferences → Add your own columns → +. For each column, set a Lookup name and a Column type. Create as many or as few as you care about:
- Rating: built-in, don't create one. Lookup name: rating
- Finished: type Yes/No. Lookup name: read
- Up Next: type Yes/No. Lookup name: to_read
- Progress: type Floating point numbers. Lookup name: progress
- Start Date: type Date. Lookup name: start_date
- Finished Date: type Date. Lookup name: date_read
- Finish Count: type Integers. Lookup name: read_count
- Days Read: type Integers. Lookup name: days_read
- Max Streak: type Integers. Lookup name: max_streak
- Read Time (Minutes): type Integers. Lookup name: read_minutes
- Average Minutes Per Day: type Integers. Lookup name: avg_minutes
- Consistency:type Integers. Lookup name: consistency
A few notes:
Rating is built in:Calibre already has a 5-star rating column, so you don't create one. (justRead's 0–5 stars map to Calibre's internal 0–10 automatically.)
readandto_readare columns many Calibre users already have; reuse them if so.- The type must match what justRead sends, or Calibre rejects the write. Percentages that need decimals (
progress) are Floating point numbers; counts and minutes are Integers; the two flags are Yes/No; dates are Date. - Calibre stores custom columns internally with a
#prefix (#progress,#read…). You don't have to type the#in justRead - it adds it for you.
Map them in justRead
Back in the app: ••• → Calibre → Calibre Mapping. You'll see all twelve stats, each with a short description and the Calibre column type it expects. Type the lookup name next to each stat you want to sync, and leave the rest blank to skip them. Entries save as you type.
Step 4 - Send your reading data to Calibre
Once at least one mapping is set and you've read a bit, ••• → Send to Calibre appears. Open it and justRead lists the books whose reading data has changed since your last send (it only bothers with books that actually moved, and only books that originally came from Calibre, so it knows which library row to update).
Everything is pre-selected; deselect any you want to hold back, then tap Send. Each book shows a live status (sending, sent, or failed) and you get a report at the end.
That report is deliberately blunt about failures. If Calibre rejects something, justRead shows Calibre's own message, for example, ”Anonymous users are not allowed to make changes” (you need to be logged in), and on a column-type mismatch it tells you exactly which columns to check. No guessing, no digging through logs.
Flip back to Calibre on your computer and your columns are populated: progress percentages, star ratings, finished dates, reading minutes, sortable and searchable like any other metadata. Build a saved search for ”books I'm 80% through” or sort your whole library by total reading time. Your phone did the reading; Calibre keeps the record.
Worth knowing: the write-back is metadata only. justRead never uploads book files to your server and never deletes anything, it only updates the columns you mapped. And because it writes plain metadata, sending a book's stats doesn't re-flag it as "Changed" for download.
Good to know (and current limits)
To set expectations:
- Local network only. No remote or cellular access to the server, by design. Same Wi-Fi, every time.
- One server at a time. Connecting to a new Content Server replaces the previous one.
- EPUB and PDF only on import. Other formats are skipped, convert in Calibre if needed.
- Calibre is the source of truth for imported books. Books pulled from Calibre are tagged as such, and their metadata isn't locally editable in justRead, edit it in Calibre and re-sync.
- Write-back covers books imported from Calibre. justRead needs the Calibre book ID (established at import) to know which row to update, so books added to the app another way can't be pushed.
- Highlights and notes don't sync to Calibre. (justRead exports highlights to Readwise instead. Highlight sync with Calibre is being explored, but isn't shipping today, so this guide doesn't promise it.)
In short
- ••• → Calibre to connect (auto-discovered, or by IP).
- ••• → Calibre Books to browse and batch-import EPUBs/PDFs, with per-book New/Changed/Synced status and progress-preserving re-syncs.
- Calibre Mapping to line your reading stats up with custom columns.
- ••• → Send to Calibre to write progress, ratings, finished dates, and reading stats back into your library.
Two directions, over Wi-Fi, no cables. Your Calibre library becomes something you read and something that quietly keeps score.
justRead is available on the App Store for iPhone and iPad.
← Back to Blog