Rilo

Rilo Privacy Policy

Last updated: 5 September 2026

Rilo is a Chrome extension with a single purpose: it reads web pages and PDFs aloud. This policy describes exactly what data that requires, where it goes, and how long it is kept.

Short version: the sentences you ask Rilo to read are sent to Rilo's own speech server to be turned into audio, and are not kept afterwards. Your notes and your reading position never leave your browser. Nothing is sold, and nothing is used to train AI models.

1. What Rilo sends off your device

Sentence text, when you press play

When you start a read-aloud session, Rilo sends the text of the sentences being read — one sentence at a time, as playback reaches it — to Rilo's server at https://extension.rilo.dev, which turns it into audio.

Synthesis happens in one of two places:

A Google account identifier, after you sign in

Reading aloud requires signing in with Google. Rilo requests the openid scope only — the narrowest one available. That means Google gives Rilo an opaque account identifier (the sub claim) and nothing else. Rilo does not request, receive, or store your email address, name, profile picture, or contacts, and has no access to any other Google service.

That identifier is sent with each synthesis request and is used for exactly one thing: counting characters against a daily cap, so that one account cannot exhaust the shared service. It is not used to build a profile and is not shared with anyone.

Why sign-in is required. The speech service is paid for by Rilo, per character. Without a verifiable identity there is no way to tell one user from another, and the service would be usable by anyone who found its address — at Rilo's expense, and to the point of breaking it for everyone. An extension cannot hold a secret to prove itself, because every installation ships the same inspectable code. Delegating to Google is the least invasive option we found that actually works.

You can revoke Rilo's access at any time at myaccount.google.com/permissions.

A bug report, only if you choose to send one

Rilo has a Report a problem form in its popup. Nothing is sent from it unless you write a message and press Send.

Before you send, the form shows you the complete contents of the report — not a summary. What you see is exactly what is transmitted:

This is the one case where a page address leaves your browser. Everywhere else in this policy — during reading, and at all other times — the page URL is never transmitted, and that remains true. Sending a report is a deliberate act you take, having seen the contents, and only when you choose to include it.

Reports are emailed to Rilo's developer and are not stored in any database or used for any purpose other than fixing the problem you described.

Your IP address

As with any request to any website, our server receives your IP address at the network level. We do not store it in application logs or associate it with the text you read.

2. What stays on your device

DataWhere it is storedLeaves your device?
Notes you save (text, page title, date)chrome.storage.syncNever sent to Rilo
Reading position per pagechrome.storage.localNever sent to Rilo
Settings (PDF preference)chrome.storage.syncNever sent to Rilo

Notes and settings use Chrome's sync storage, so if you are signed in to Chrome they follow you to your other Chrome installs through your Google account, in the same way as bookmarks. That transfer is between you and Google; Rilo has no access to it and no copy of it.

PDF files are never uploaded. Rilo renders PDFs locally in your browser using pdf.js. The file itself never leaves your machine. Only the sentence text being read aloud is transmitted, exactly as with a web article.

Text you select is read only to offer the "Save note" button. Rilo checks your selection locally to decide whether to show that button. Selected text is stored only if you click it, and is stored only in your browser.

3. What our server keeps, and for how long

Our server holds two things, both only in memory, and both lost whenever the server restarts:

  1. A cache of synthesized audio, keyed by a hash of the sentence text, so re-reading a page does not re-synthesize it. Capped at 300 clips; the oldest is discarded as new ones arrive.
  2. A per-account daily character count, keyed to the Google account identifier and used only to enforce the usage cap. It resets at midnight UTC.

There is no database. We do not write the text you read to disk, and we keep no history of pages you have read.

4. Where your data is processed

Rilo is operated from the United Arab Emirates, and the server that synthesizes speech runs there. When the fallback is used, that sentence text is processed by Amazon Web Services in Ireland instead.

In both cases the text is transient: it is turned into audio and discarded, is never written to disk, and is not retained beyond the in-memory cache described above.

5. Who else receives your data

Rilo relies on three infrastructure providers. None of them receives more than is listed here.

Amazon Web Services hosts Rilo's server in Ireland, provides the Amazon Polly fallback voice, and delivers bug reports by email. Polly receives sentence text only when the fallback is in use, and receives nothing identifying you — not your account identifier, and not the page address.

Cloudflare carries traffic between your browser and Rilo's servers and terminates the encrypted connection. As with any site behind a network provider, it processes your IP address and the requests passing through it.

Google receives a sign-in request when you authenticate, as it would for any site you sign in to. Rilo requests only the openid scope, so Google returns an opaque account identifier and nothing more.

Beyond these, nothing. Rilo contains no analytics, no advertising, no trackers, and no crash reporting, and loads no remote code.

6. What we do not do

This reflects the Chrome Web Store's Limited Use requirements: the data Rilo handles is limited to what is strictly necessary for its single disclosed purpose of reading pages aloud.

7. Permissions, and why each is needed

PermissionWhy Rilo needs it
Access to the page you are readingTo extract the article text and paint the read-along highlight. Rilo reads a page's content only when you press play.
storageTo keep your notes, settings, and reading position.
offscreenTo play audio in a hidden document, so playback is not blocked by a site's content security policy.
tabsSolely to notice when you navigate to a .pdf and open it in Rilo's viewer instead. Chrome's built-in PDF viewer cannot be read aloud by any extension.
scripting / activeTabTo load Rilo into the current tab when you click the toolbar button.
identityTo sign you in with Google, so the speech server can tell one user's usage from another's. Requests the openid scope only.
https://extension.rilo.devTo reach Rilo's speech server.

Opening PDFs in Rilo's viewer can be turned off at any time with the "Open PDFs in Rilo" toggle in the extension popup; Chrome's own viewer then handles them as before.

8. Your control over your data

Because our server keeps nothing on disk, and the only identifier it holds is an in-memory character counter that resets daily, there is no stored account for us to export or delete on request. If you would like the in-memory cache of a specific sentence cleared, contact us and we will confirm when it has been.

9. Children

Rilo is not directed at children under 13 and we do not knowingly collect data from them.

10. Changes to this policy

If we change how Rilo handles data, we will update this page and the "last updated" date above. Material changes — for example, beginning to store anything on disk — will be announced in the extension's Chrome Web Store listing before they take effect.

11. Contact

Questions about this policy or about your data:

Email: eslam.m.awad96@gmail.com

Rilo is published by Eslam Anwar as an individual developer. Rilo is currently offered free of charge and is not operated as a business. Should that change, this page and the Chrome Web Store listing will be updated with the required trader details beforehand.