Pagetime
Language: English

Privacy

Updated November 4, 2026

Pagetime counts your reading time and keeps what you think about books. This page says what of that stays on the phone, what goes to the server, who else sees it and how to wipe all of it at once.

The short version

Who is responsible

Pagetime is made by Eduard Abdullin, an independent developer enrolled in the Apple Developer Program as an individual. He decides why and how the data is processed, which makes him the controller under the GDPR.

About your data, write to privacy@pagetime.net. About anything else, hello@pagetime.net.

This document covers the Pagetime apps for iPhone and Android, the pagetime.net site and the api.pagetime.net server. There is nothing else.

What stays on the phone

Everything you do in the app is written to the phone first, and with no account that is where it ends, apart from the anonymous counts from the subscription screen described below. The tracker, the notes, the statistics and the widgets all work on a plane.

Signing in

There is nothing to register and no password of ours: the iPhone app signs in with your Apple Account, the Android app with your Google account. We never see or store a password.

Apple gives us a permanent identifier issued to this app alone, and an address — either your real one or a hidden “name@privaterelay.appleid.com” if you chose to hide it. Google gives us your account’s permanent identifier, its email address and the name on the account.

The server then keeps: that identifier, the address, your name, the device name, a fingerprint of the session token, the dates the session was created and last used — and, for Apple, a token Apple issues at sign-in, kept for one purpose only: to revoke Pagetime’s access at Apple when you delete your account.

An Apple account and a Google account are two separate Pagetime accounts, even with the same email address: one syncs your library between iPhones, the other between Android phones.

The session token itself is not on the server, only its hash. A leaked database does not let anyone sign in as you.

Sync

Sync starts once you are signed in and puts a copy of your library on the server, so that it survives a lost phone and reaches a second device. It is free and needs no subscription.

What travels: books (title, author, genre, cover, page count, shelf, rating, tags, dates), reading sessions (start, end, length, pages, the note you left on the session) and notes (kind, text, page, chapter, tags, favorite, text recognized from a photo). Deletion marks travel too — otherwise a deleted book would come back from the other device. A deletion mark keeps no text: once you delete a book, session or note, the server keeps only its ID and dates, not the title, author, note text or anything else you wrote.

The phone also sends your daily goal, the days you changed it on and whether the streak freeze is on. Without them a second device — or the app reinstalled — would judge every past day by today’s goal, and a calendar you had already earned would change behind you.

It also sends its time zone, the first day of its week and the selected reading-reminder hour. The server uses the time zone to reset the daily AI limit at local midnight and the monthly one on the first of the month, and the time zone and first day of the week for reading-day and streak calculations. The reminder itself is still scheduled on the phone, and its exact minute stays there.

Photographed pages do not travel. If a note was made from a photo, only the text reaches the server.

AI in earlier versions

AI is disabled for everyone, including subscribers. The following describes earlier versions: a conversation about a book, a book summary, a month in review and a thought about a quote did not run on the phone: the request goes to our server and from there to an outside model. This is the only place where someone other than us sees your words.

What goes into the model: your message, the book’s details (title, author, genre, shelf, page count, current page, how long you have been reading it) and your notes on that book — up to forty quotes and up to forty thoughts. For a month in review and a conversation about it: the month’s statistics, the titles you finished and that month’s notes. For a general question that is not about one book: your books — title, author, shelf and current page. Individual reading sessions, your email address, your name and your IP address never go.

We route the requests through OpenRouter with training refused: the router only picks providers that do not keep requests and do not train on them. The conversations themselves are stored by us — otherwise you could not open one tomorrow — and are wiped along with the account.

Earlier AI-enabled versions asked your permission before the first request and showed what would be sent and where. Without permission nothing reached a model. Current versions do not offer AI requests or show an AI permission control.

The answer is written by a model, not by a person. We do not read your conversations to improve them and we build no recommendations on them. The one exception is a conversation you send us yourself with a complaint about an answer: that one we read.

Telling us an answer went wrong

Under every AI answer there is a way to say it went wrong: it gave away what happens later in the book, it made something up, it answered about the wrong thing. A complaint is a reason you pick from a list and anything you care to write. The same form, with no conversation attached, is in Settings for everything else you want to tell us.

Sent either way: the app version and build, the phone model and the language of the app. If the complaint is about an answer, also which model wrote it, the book and the page you were on at the time, and whether that conversation had spoilers switched off. That is what says whether the answer was wrong at all.

The conversation itself and what the model saw with it — the book and your notes on it, or the month, or your books — go only if you tick the box that says so, and the complaint sends without them. A complaint about a wrong answer is usually impossible to check without them. What is attached is what the app sees at the moment you complain, not a recording of the moment the answer came.

A copy attached this way stays with us even if you later delete that conversation, because otherwise the complaint would point at nothing. All of it goes when you delete your account, complaints included.

The form in Settings works before you sign in: the first week in the app is meant to work without an account. A letter sent that way has no account to hang on. We cannot find it again on request and you cannot withdraw it — there is nothing in it to go by. It is deleted ninety days after it arrives, answered or not. Sign in first if you want to be able to take it back.

We read every one and answer some of them. If you want an answer, write to hello@pagetime.net.

Purchases

Apple takes the money in the iPhone app, Google Play in the Android app. We never see the card, the address or anything else about the payment.

What reaches us from Apple is a signed purchase, and from it we keep: the purchase identifier, the plan (monthly or yearly), the expiry date, whether the current period is Apple’s free trial, and a record of the event — bought, renewed, refunded. The same record is how we notice a purchase being claimed a second time from another account. When Apple refunds or revokes a purchase, we also keep a fingerprint of that transaction — not its number, and nothing that points to you or your account — so that the refunded purchase cannot switch the subscription back on, not even after the account is deleted.

In the Android app, the phone sends our server the purchase token that Google Play issued. The server sends that token to Google to check and confirm the purchase, and Google then tells the server about renewals, cancellations and refunds. From this we keep: the purchase token, the order number, the plan, the expiry date, whether the current period is the free first month, whether it was a tester’s purchase, and the type of each notice from Google Play.

Payments in the Android app go through Google’s Play Billing library, which runs inside the app. The library talks to Google Play directly and may send Google diagnostic logs of its own, even if you never buy anything. Those logs go from the phone straight to Google, not through our server, and we do not receive them.

A subscription bought in either store works in both apps on the same account. It is managed and refunded in the store where it was bought.

Tips never reach our server: Apple and Google Play handle them like any other purchase, and the app does not tell us about them.

Counting the subscription screen

The app tells the server when the subscription screen is shown, when a purchase is started on it and how that purchase ends: bought, free trial started, cancelled, waiting for a parent’s approval or failed. Each count says where the screen appeared — after your first reading session, say, or opened from Settings — which plan it was about and the app version. That is how we see whether the screen comes up at sensible moments and whether buying works.

Nothing in these counts identifies you or your device: the app sends them without your account details, even when you are signed in. The server adds each one to a total for its day and keeps only those daily totals, for a year. Since nothing in them points to a person, nobody, us included, can pick out your counts, and deleting your account leaves the totals as they are.

The request that carries the counts is logged like any other, with its IP address, as described under Server logs below.

Historical AI usage and subscription counts

Earlier AI-enabled versions offered free answers after sign-in. AI is now disabled for everyone; signing in or subscribing does not enable it. Using historical records, we count on the server how many of the people who signed up in a given week started Apple’s free trial, how many went on to pay for a subscription, and what happened after their last free answer: whether they paid within a week, within a month, or not at all.

Nothing new is collected for this, and nothing is read from your phone. The count is made from records the server already keeps for other reasons: the date of your first sign-in, the record of AI requests that the daily and monthly limits need, and the purchase record from Apple. It uses dates and totals only, never the text of your notes or conversations, and what comes out is a table of numbers by week, not a profile of anyone. The table is not stored: it is worked out again each time we open it.

From the same record of AI requests we also count how many people got AI answers in two or more different weeks: one number that tells a habit from a one-off try. It uses the dates of the requests only and is not stored either.

The grounds are our legitimate interest, described below. If you would rather not be counted, write to privacy@pagetime.net and we will leave your account out of both counts. Nothing else about the app changes.

Looking a book up

When you search for a book or paste a link from Apple Books, the search string goes from our server to Apple to retrieve book details. Apple does not see your IP address: the request comes from our machine, not from your phone.

What comes back — title, author, genre, cover, page count — is written into your library. The cover itself is later fetched by the phone straight from Apple’s servers.

The email form on the site

The form on pagetime.net collects an email address, the language of the page it was left on, and the tag from the link if you came through one: for “pagetime.net/de/?from=tt-de-03” that is “tt-de-03”. The tag is the same for everyone who opened that link — it says which video worked, not who you are. No name, no IP address, no browser fingerprint.

The promise under the form is one letter on the day the app ships, and it holds: there is no newsletter and the address goes to nobody else. Write to privacy@pagetime.net and it is struck off the list straight away.

Server logs

The web server records requests: the IP address, the time, the address requested, the app or browser version. That is what a broken thing is diagnosed with and what keeps bots and password guessers out. These logs are separate from the optional site analytics.

Logs live on the server for no longer than fourteen days and are then rotated away.

A separate operator log records when the admin signs in or out, failed sign-in attempts, every change made in the admin panel, and every time complaints, lists with email addresses or someone’s purchase history are opened, together with whether the request succeeded. When an entry concerns particular accounts, it keeps their account IDs, but never complaint text, email addresses or search terms. Deleting your account removes your ID from the log. The log is deleted after one year.

Crashes go nowhere: Pagetime has no crash reporter and sends no error reports.

Optional site analytics

Only after you choose Allow analytics on the site, we record the landing page sections that came into view, views of reading guides, clicks from a guide to the product page or email form, when the email form was started and submitted, whether it succeeded, and clicks to the App Store. Guide events include a fixed article key and its language, not the full page URL or its query parameters. We also record the page language, short campaign labels from the link (from and UTM fields) if present, and the referring site’s domain if your browser supplies it. We do not record the email typed into the form, full referring URLs, IP addresses or device details in these events.

A random ID connects steps during one visit in one browser tab so we can see where a visit stopped. A new visit starts after 30 minutes without events or after 24 hours. It is not linked to your app account or the launch email list. Individual events are deleted within 30 days. We keep daily counts for up to 365 days to compare periods. These include counts by guide and language. When the individual events expire, all source and campaign labels are also removed from those daily counts; older totals contain no visit IDs or link labels. The dashboard therefore describes only visitors who agreed. We do not follow a visitor from this site into an installed app.

Choose Site analytics settings in the footer to withdraw or give consent. Withdrawal stops new events and removes the ID from this tab. Existing events expire within 30 days; because the ID is not linked to a name or email, we cannot find one person’s earlier events.

What we do not collect

Who else gets data

This list is complete. Each of them gets exactly what their job needs. Hetzner and OpenRouter process data on our behalf under data processing agreements; Apple, Google and Cloudflare act under their own terms.

The legal grounds

How long it is kept

Your rights

You can ask for a copy of your data, for a correction, for deletion, for processing to be restricted, you can object to it, and you can take your data with you in a portable form. Consent can be withdrawn at any time, and withdrawing it does not undo what was done before.

Two of these need no letter. To delete your account: Settings, the Account section, Delete Account; the server is wiped immediately, apart from the marks described above. This works for a blocked account too. Without the app, follow pagetime.net/delete-account/. To take your notes: Settings, Export Notes — the app builds a file with every thought, quote and idea, arranged by book.

For anything else write to privacy@pagetime.net. We answer within a month, usually sooner. If the answer does not satisfy you, you may complain to the data protection authority where you live.

Children

Pagetime is meant for people aged sixteen and over. We do not knowingly collect children’s data; if it turns out an account belongs to someone younger, we will delete it on the first letter.

Where the data goes

The server and the database stand in Germany, that is, inside the European Union. Everything that leaves the phone lands there.

Three things leave the EU. AI requests from earlier versions went to OpenRouter in the USA, which handles them for us under a data processing agreement that includes the European Commission’s standard contractual clauses. Signing in on iPhone, App Store purchases and book look-ups go to Apple, and signing in, Google Play purchases and the Play Billing library’s own logs in the Android app go to Google; each handles them as its own controller, under its own terms and policy.

How it is protected

Connections are HTTPS only. The sign-in token lives in the phone’s Keychain and the server holds only its hash. Someone else’s record answers “not found” rather than “not allowed”: otherwise guessing identifiers would tell a stranger about your library. Ports are closed by a firewall, the database and the app listen to the machine itself only, and the service runs with cut-down privileges.

One thing is worth saying plainly: notes on the server are not encrypted with a key only you hold. With such a key the AI could not read your notes, and the very reason the server exists would be gone. The developer has access to the database, and nobody else does.

Cookies and browser storage

The site sets a language cookie, pagetime_lang, only when you switch language by hand. It lives for a year so your choice survives a return visit. This cookie is necessary for the language choice you requested.

The site remembers whether you allow or decline analytics in your browser’s localStorage, under pagetime_site_analytics. This preference has no automatic expiry: it stays until you change it or clear the site’s browser data. It is used to remember your decision, including a refusal.

Only if you allow analytics, the site uses sessionStorage for a random visit ID, an event counter and visit timestamps in this tab. Their names start with pagetime_site_. These entries last for the tab’s session. A new visit ID is created after 30 minutes without events or after 24 hours. The ID is not linked to your email or app account.

Choose Site analytics settings in the footer to change your decision. Choosing Without analytics stops new events and removes the analytics entries from this tab’s sessionStorage. Your refusal remains saved so the site does not ask on every page. Clearing the site’s browser data also removes the saved choice. The retention periods for events and daily totals are described under Optional site analytics above.

Cloudflare may add a technical cookie of its own that tells a person from a bot. The app sets no cookies at all.

If this policy changes

The date at the top is the date of the last edit. Substantial changes will be announced in the app before they take effect, not after.

Also:Terms of UseSupportDelete accountHome