ReadHalo

PRIVACY POLICY

Privacy policy

What ReadHalo collects, why, who helps us run it, how long we keep it, and how to delete it.

In effect from

Who we are

ReadHalo is run by Gaurav Thakur, an individual based in India (“we”, “us”). Address: Bengaluru, Karnataka, India.

This policy covers the readhalo.com website, the ReadHalo extensions for Chrome and Safari, the iPhone, iPad and Mac apps, and ReadHalo accounts and Premium voices, served from account.readhalo.com.

For privacy questions, requests or complaints, email support@readhalo.com.

In short

  • Device voices need no account. ReadHalo doesn’t send their text to us.
  • Finding the article happens in your browser. With a Premium voice, the text you play goes to our voice service and DeepInfra (Natural voices) or Inworld (Studio voices) to make the audio.
  • We don’t collect the addresses of pages you read or your browsing history.
  • We collect product usage analytics to understand setup, listening, reliability and subscriptions. This includes that the player appeared, even before you press Play. Page titles, reading text, your email and your IP address never go to PostHog, our analytics service.
  • We have no ads, and we don’t sell data.
  • You can delete your account and its linked analytics at any time from Manage account.

In your browser

To find the article and show the player or Listen buttons, the extension reads pages on the sites Chrome’s Site access allows it on. That happens inside your browser. The extension doesn’t send page addresses, titles or your history to us.

Your settings stay in the extension’s storage in your browser: voice, speed, where the player sits, and each site’s setting. We measure changes to voice and speed, but don’t send your saved site settings to our analytics service.

Premium audio you’ve played is kept in your browser as saved audio, up to 50 MB, so replays start quickly and don’t use characters. Saved audio expires after 30 days. Help › Clear saved audio in the player removes it. In Incognito windows, audio is kept in memory only.

When you sign in, the extension keeps a sign-in token in its storage. Signing out in the extension ends that token on our side and removes it.

Help › Report a problem shows a diagnostic report you can copy and email to us. It doesn’t include the page address or any article text. This report is sent only if you send it to us. Product analytics is separate and is sent automatically.

We collect setup steps, that the player appeared, playback lengths and outcomes, voice and speed choices, upgrade steps, and errors by category. We also collect the app or extension version, browser type and platform. Our service adds your country from your connection. It doesn’t pass your IP address to PostHog.

Only when you start playback, we record a broad site category, such as X, Reddit or an article. We don’t collect page addresses, titles, reading text or browsing history for analytics. Showing the player doesn’t tell us which site you’re on.

The extension and apps use random IDs saved on your device. Signing in links earlier usage to your account’s random ID. Signing out replaces the device’s analytics ID. The extension doesn’t send analytics from private or Incognito windows.

When you remove the Chrome extension, its uninstall link includes its current random ID, browser type and version. This connects removal to earlier usage. You can choose a reason on that page, or leave without choosing. The link has no email, sign-in token or other credential.

The website has no ads or analytics cookies. It uses a random ID in session storage, which lasts for that tab’s session, not a persistent visitor ID. We count visits to a fixed list of our own pages and clicks on store links. On the landing page, we keep only campaign tags from a short list we recognise. We don’t collect referring page addresses. This also applies in private windows. The sample player plays recordings bundled with the site. The account website uses a separate cookie to keep you signed in, and a session-only random ID before sign-in.

Device voices

With a device voice, ReadHalo hands the text to your browser or device’s speech engine, not to us. Voices from your computer’s operating system speak on your computer.

Chrome also lists some voices that its maker provides over the internet, such as “Google US English” and “Google UK English Female”. If you choose one of these, Chrome sends the text to Google to speak it, under Google’s privacy policy. Choose another device voice to avoid that.

Analytics records playback lengths, timing and outcomes, not the words you hear or the audio.

Premium voices

When you press Play with a Premium voice, the extension sends the text being read, the voice and the speed to our voice service at account.readhalo.com, with your sign-in token. ReadHalo prepares the next few sentences ahead, so text just after what you hear may be sent too. The page address and title aren’t sent.

With a Natural voice, our service passes the text, voice and speed to DeepInfra, which makes the audio and word timings. DeepInfra doesn’t get your email or account. Its data privacy page says it doesn’t store this text on disk, deletes it from memory once the audio is made, and doesn’t use it to train models.

With a Studio voice, our service passes the text, voice and speed to Inworld instead, which makes the audio and word timings. Inworld gets only those, not the page address, your email, your account or your browsing history. Its terms let it use this text to operate, maintain and improve its services. They say it won’t train its generally available models on text that isn’t publicly available, except feedback and text flagged for a trust and safety review, so text from a public page isn’t covered by that. It doesn’t promise to delete the text once the audio is made. See also its privacy notice.

We don’t store the text in our account records. We keep the audio and word timings in Cloudflare’s cache for up to 24 hours, labelled with a hash of the text, voice and speed. If another signed-in Premium listener plays exactly the same text with the same voice and speed in that time, they get the cached audio.

When we make audio for a Premium request, we add its characters to your usage, 15 times over with a Studio voice. To stop duplicates and limit request rates, we also keep the request’s ID, its time, and the hashed sign-in token of the browser that sent it. Each Premium request we accept deletes the ones more than 24 hours old. If you stop using Premium voices or delete your account, those from the 24 hours before your last request stay.

Analytics records when Premium audio is delivered and when an allowance runs out. It doesn’t include reading text, audio, word timings, page details or saved-audio keys.

Your account

You need an account only for Premium voices. Signing in creates one. We keep:

Your email address
To identify your account and send sign-in codes. Codes are stored hashed and expire after 5 minutes.
Sign-in sessions
When you sign in on the account website, we record the session’s IP address and browser (its user agent), and when it started and was last used. A cookie keeps you signed in there. A session stops working 30 days after you last used it.
Connected browsers
A hashed sign-in token for each browser you connect, with when it was created and when it expires.
Your plan and usage
Your plan, when your free listening resets or your paid month ends, and how much of your allowance you’ve used this month.
Abuse limits
The account website counts requests from each IP address to each sign-in step, to stop people guessing codes or flooding email. These counts aren’t linked to your account.
Sign in with Google or Apple
If the sign-in page offers these and you use one, that provider shares your name and email address with us.

We link product usage to your account’s random ID when you sign in. We measure sign-in and upgrade steps, and whether an account is used internally. PostHog doesn’t get your email or name. It gets the random ID, your plan and how Premium access was granted.

Payments

Razorpay takes payment for Premium on its own checkout page. We never see or store your card, UPI or bank details. Razorpay keeps its own records under its privacy policy.

We keep the Razorpay subscription ID, the payment IDs, the period each payment covers, whether a payment was refunded or disputed, and the IDs of Razorpay’s notifications to us.

For each refunded or disputed payment, we keep a case with when it happened and whether we’ve reviewed it. When a dispute cancels a renewal, we record our requests to Razorpay to cancel it, with any error Razorpay returned. We also keep a log of billing actions on your account: refunds, disputes, cancelled renewals, and what we check or change to fix a billing problem, each with its time and any note we add. The log keeps the latest 1,000 entries.

If App Store purchases or restores are offered in your build, Apple handles them. We keep verified purchase and subscription records to grant access. Analytics includes payment and subscription outcomes, amounts, currency and random reference IDs. It never includes card, bank or UPI details, checkout addresses or the payment provider’s raw responses.

Services we use

Cloudflare
Hosts readhalo.com and account.readhalo.com, stores account records, and caches Premium audio. It handles your IP address and request details to deliver and protect both sites.
PostHog
Measures product usage and subscriptions for us on its US Cloud service in the United States. It gets limited usage events and random IDs, not your email, IP address or reading content. See its privacy policy.
DeepInfra
Makes audio for Natural voices from the text you play.
Inworld
Makes audio for Studio voices from the text you play.
Razorpay
Takes payments for Premium.
ZeptoMail, by Zoho
Sends sign-in codes. It gets your email address and the code, with open and click tracking turned off.

They process data for us to provide these services; Inworld may also use what it gets to improve its own, as above. Your data may be processed outside your country: DeepInfra is in the United States, as is PostHog US Cloud, and Inworld is based there and may process data in other countries too. Cloudflare serves you from data centres around the world.

How we use data

ReadHalo’s use of information received from your browser complies with the Chrome Web Store User Data Policy, including the Limited Use requirements.

We use data only to read pages aloud, run your account and Premium, keep the service secure, and measure and improve setup, listening and reliability. We don’t sell it. We don’t use or share it for advertising, to train AI models, to decide creditworthiness or lending, or for anything unrelated to reading aloud.

We routinely review combined usage counts to improve ReadHalo. People read your individual data only when you ask us to, for example in a support email, when security requires it, or when the law requires it.

How long we keep it

Product analytics
PostHog keeps events available for up to seven years under our plan. Reaching that limit doesn’t guarantee that every stored copy is physically erased. When you delete your account, we request deletion of its linked analytics, including earlier usage linked at sign-in. This runs in the background; we retry failures. Activity never linked to an account can’t be found by email. A late uninstall signal may arrive after deletion.
Unsent extension analytics
Kept on your device for no more than 24 hours. Older events are discarded rather than sent later.
Email, plan and usage
Until you delete your account.
Sign-in sessions, with IP address and browser
Until you sign out on the account website or delete your account.
Connected browsers
A browser’s token stops working 30 days after it was last used, and 90 days after it was created at most. We delete it when you sign out in that browser, choose Sign out on all devices, or delete your account.
Premium request IDs, times and browser token hashes
Deleted once they’re more than 24 hours old, the next time we accept a Premium request from you. Those from the 24 hours before your last request stay after you stop using Premium voices or delete your account, linked to the random account ID.
Premium audio in Cloudflare’s cache
Up to 24 hours.
Saved audio in your browser
Expires after 30 days. Clear it sooner with Help › Clear saved audio, or remove the extension.
Sign-in codes
Expire after 5 minutes.
Abuse limit counts
The latest count for each IP address and sign-in step, which later requests overwrite. We don’t delete them on a schedule yet.
Payment records, billing cases and the billing log
Kept after you delete your account, to handle refunds, disputes and tax records. They’re linked to a random account ID, not your email.
Deleted accounts
We keep the random account ID and when its sign-ins were ended, so old sign-ins and late payment notices can’t bring the account back.
Support email
Kept in our mailbox. Ask and we’ll delete it, unless it’s about a payment we need to keep a record of.
Request logs
Our service doesn’t write request logs. Cloudflare’s database recovery history can hold deleted records for up to 30 days.

Your choices and requests

  • Use device voices only, with no account.
  • Choose which sites ReadHalo can read in Chrome’s Site access.
  • Clear saved audio with Help › Clear saved audio.
  • Sign out in the extension, or choose Sign out on all devices on Manage account to disconnect every browser.
  • Delete your account: open Manage account and choose Delete account. This also requests deletion of linked analytics. See deleting your account.

To get a copy of your data, correct it, or have us delete it, email support@readhalo.com from the address on your account. We may ask you to confirm the request from that address. If you’re unhappy with our answer, you can complain to the data protection authority where you live.

Children

ReadHalo accounts are for people 18 and over. We don’t knowingly collect data from anyone younger. If you think a child has made an account, email support@readhalo.com and we’ll delete it.

Changes

When we change this policy, we’ll post the new version here with a new date at the top.