The SereneReader bot
What our feed fetcher does, how it identifies itself, and how to turn it away.
What SereneReader is
SereneReader is a feed reader. When someone subscribes to your RSS or Atom feed, our servers fetch it on their behalf and show them new articles.
To show a preview image, we also fetch each article page once to read its og:image tag, and we fetch your site's favicon for the sidebar.
User-Agent
Every request from our servers identifies itself with this string:
SereneReader/1.0 (+https://serenereader.com/bot)What we fetch
- Feed URLs that people have subscribed to.
- Each article page, once, reading at most 1 MB of HTML to find the og:image tag.
- Your site's favicon.
We never crawl a site, never follow links from article pages, and never fetch anything nobody subscribed to.
How often
Feeds are refreshed on a schedule. When your server sends an ETag or Last-Modified header, the next refresh sends If-None-Match or If-Modified-Since, so an unchanged feed costs you a 304 and no body.
Each article page is fetched once, for its preview image. If the page cannot be fetched, we stop: a permanent failure such as a 404 is remembered for 30 days, and a temporary one such as a timeout or server error is retried up to three more times with backoff, then left alone for at least an hour.
A 429 or 503 tells us to back off. For feeds, we push the next refresh out by an escalating backoff and, on a 429, by at least your Retry-After value. For article pages, we may retry up to three times over roughly the next ten minutes, then wait at least an hour, or as long as your Retry-After asks, up to seven days.
robots.txt
Before fetching an article page or a favicon, we read your robots.txt and follow Disallow rules and crawl-delay for User-agent: SereneReader, falling back to the * group.
Feed URLs are different. A feed is fetched on behalf of a reader who subscribed to it, so we treat it the way Google’s Feedfetcher does: the * group’s Disallow rules do not apply to it. A User-agent: SereneReader group that disallows the feed path is still honored, and crawl-delay applies to feeds exactly as it does to everything else.
If your robots.txt is unreachable because of a server error, we treat it as allowing the fetch. A subscription is explicit consent from a reader, and a flaky robots file should not stop their feed.
How to block us
Block or rate-limit the User-Agent above at your server or firewall, or turn us away in robots.txt with a group that names us. A rule for every bot does not stop feed fetches; this one does:
User-agent: SereneReader
Disallow: /Blocking your feed URL stops refreshes for everyone who subscribed to it, not just one reader.
Request signatures
Requests are signed with Web Bot Auth (HTTP message signatures, RFC 9421) so you can verify they really came from us. Our public keys are published at:
https://serenereader.com/.well-known/http-message-signatures-directoryOutbound IP addresses
Scheduled feed refreshes and preview-image fetches come from these static addresses. The one-time fetch made when someone first adds a feed comes from our web servers and is not on this list, so an allowlist by IP alone will reject it.
162.220.234.241
152.55.180.242
152.55.180.243Machine-readable list/bot/ips.json
Contact
Questions about our traffic, or something you want us to fix? Get in touch.