Privacy
Short version: reading needs no account, ever. An account is optional and exists for two things — alert emails on keywords you track, and syncing your feeds, sections and read marks across devices. There is no password, no analytics and no advertising, on an account or off one. This page lists everything we store and every service that handles it.
Where your data lives
Without an account, your subscriptions, sections, keyword rules, preferences, and which articles you have read, starred or saved are stored by your own browser — the feed list and reading state inlocalStorage, the cached article text inIndexedDB. To fetch articles for you, your browser sends us the addresses of the feeds it follows, and nothing else about you. Those addresses join a shared list that carries no account, no identifier and no IP address — see "What the server does" below.
The practical consequence is honest to state: without an account, your feeds do not sync between devices, and clearing your browser's site data erases them. Export a backup if that matters to you.
With an account, we store, in our database:
- Your email address, your name, a username, an account id, and when you created the account, accepted the terms and last synced.
- What we sync between your devices: the feeds you follow (address, title, site and icon links, language and order), your sections (their names and any keyword filter or saved search), and which articles you have marked read or starred.
- When you remove a feed or section, we keep its address (for a section, an internal id) and when you removed it, for 90 days, so a device that hasn't synced since can't add it back. Re-adding the feed deletes that record, and deleting your account deletes them all.
- Your sign-in sessions. Each is a one-way hash of a random token with a 30-day expiry — no IP address and no browser details. Sign-in codes are stored hashed and expire quickly.
- For keywords you turn email on for, the alert details listed under "Email alerts" below.
Your keyword rules, mute and boost rules and preferences stay in your browser either way; only a keyword you ask us to email you about is copied to our database.
Email alerts and reader tiers
Free accounts provide a complete, private RSS reader with hourly feed polling, full-text search, and in-app keyword rules. Priority accounts unlock 15-minute feed polling and an hourly email digest of newly matched tracked keywords.
- Turning email on for a tracked keyword on a Priority account stores its words, the section or search it watches, how often you want email (at most once per hour), and when one was last sent. Newly arrived articles are checked in the background and combined into at most one email digest per hour.
- Alert emails and sign-in codes are sent through Resend, our email provider, which receives your address and the message.
- We keep a copy of each alert email we send — recipient, subject and body — for 90 days, so a delivery can be retried without being sent twice, and then delete it.
- Every alert email carries a one-click unsubscribe link, which stops all alert email to you until you turn an alert back on.
What the server does
Browsers cannot fetch feeds from other domains directly, so Feedporter's server fetches them. Your browser reads articles from our database; it never asks a publisher's server for a feed itself.
- A background job fetches feeds — the curated catalog every five minutes, and the feeds readers add on their own cycle — and stores their articles for six months. Articles are stored once and shared by everyone who follows the feed, so they say nothing about who reads them. The reader loads the latest 30 days.
- The shared list of feed addresses that signed-out readers follow holds each address, the feed's title, its fetch status and when a browser last named it — nothing about who asked. An address is removed 30 days after the last signed-out reader's browser names it.
- When you open a summary-only article, the server fetches that one article page from its publisher and returns a cleaned-up copy. The publisher sees our server, not you.
Your IP address
Feedporter uses your IP address in exactly two ways, both to stop abuse:
- Request limits. Sign-in, profile, article-fetching, refresh and vulnerability-score requests are counted per IP address, in the server's memory only. The count is never written to our database and is lost whenever that server instance restarts.
- The daily limit on new feeds.Signed-out readers can add up to 50 new feeds a day to the shared list. That count is stored under a one-way keyed hash of your IP address and the date, which cannot be turned back into the address without our server's secret, and is deleted once that day (UTC) is over.
Beyond those two, your IP address is not stored — not with your account, your sessions, or anything you sync.
Error reporting
When something breaks on our servers, an error report goes to Sentry. Reports are stripped before they leave: no feed or page addresses, hostnames, query strings, IP addresses, cookies, headers or request bodies — only the error, where in our code it happened, and the kind of request it happened in, such asGET /api/feed. No Sentry code runs in your browser.
Third parties
There is no analytics script, no advertising and no tracking script. The services that handle data for Feedporter are:
- Cloudflare runs the site and its database. Requests are handled in Cloudflare's data centres — normally the one nearest you — and everything stored above lives in Cloudflare's D1 database service. Like any host, Cloudflare sees your IP address when you connect.
- Resend sends alert emails and sign-in codes.
- Sentry receives the stripped server error reports described above.
Publishers' images. To keep articles readable, article images — and a feed's own icon, when it publishes one — are allowed to load natively from the publisher's servers. This may expose your IP address to that publisher. Feedporter sendsreferrerpolicy="no-referrer" so they are not told which page you were reading.
Notably absent: a favicon service. Most readers fetch feed icons from Google or DuckDuckGo, which hands that company a list of every site you subscribe to. Feedporter draws its own letter badges instead, and only shows a real icon when the feed itself publishes one.
Article content is untrusted
Feed HTML is sanitized on the server before it ever reaches the page: scripts, styles, iframes and event handlers are stripped, links are givenrel="noopener noreferrer", and 1×1 tracking pixels are removed outright.
Deleting your data
Without an account, open the reader's settings and choose "Delete everything". It clears the browser storage immediately. The feed addresses your browser named to the shared list carry nothing that identifies you, and leave it 30 days after the last reader names them.
With an account, signing out deletes the session on that device, but your account data stays stored. To delete the account, open your profile and choose "Delete my account". Once you have typed your email address and entered the code we send to it, everything listed under "With an account" and "Email alerts" above is deleted from our database at once. That can't reach emails already in your inbox, or the delivery records our email provider keeps. Your browser's own copy stays until you choose "Delete everything" in the reader.
Open the reader