Syndigence.by BBS Radio
Methodology

How Syndigence counts

Every number in Syndigence comes from a stated rule. This page is the rule book. It changes only when the rules change, and the change is dated here.

Where the numbers come from

BBS Radio serves its own audio. Every request for an episode file reaches bbsradio.com’s web server and is written to its access log. Syndigence reads that log, and nothing else, for downloads. There is no tracking prefix, no pixel and no player plug-in.

What counts as a download

  • Only fetches of the feed enclosure, the audio URL published in the show’s RSS feed, count. Fetches through the site’s own player, its download button, or a direct file path are separate counters and are never added to downloads.
  • Only successful GET requests count (HTTP 200 or 206). HEAD requests, errors and rate-limited responses do not.
  • Known crawlers and automated agents are removed, using the open podcast user-agent list maintained by the Open Podcast Analytics Working Group, plus Syndigence’s own indexing job. Every other agent counts as a listener.
  • A listener is one network address together with one user-agent string, within one day. Two devices on one connection with the same app can count as one; one device switching networks can count as two. This is the industry convention.
  • A download is one listener, one episode, one day, once that listener has fetched at least one minute of audio. The minute is measured per episode: the file’s own ID3 tag length plus sixty seconds at the file’s own bitrate, read from the file at index time. Until an episode is indexed, a floor of 480,000 bytes applies.
  • A day is the America/Chicago calendar day of the request.
  • Country comes from the GeoLite2 database by MaxMind; app and operating system come from the user-agent string. Where they cannot be determined they are reported as unknown, never guessed.

Provisional and final

Today and, for part of the following day, yesterday are rebuilt from the live log every fifteen minutes and shown as provisional. Once the web server’s own daily archive of a day has arrived, the day is rebuilt from that archive alone and marked final. Final days do not change, with one exception: while the media index is still measuring the catalog’s per-episode thresholds, a final day is rebuilt when noticeably more of its episodes have been measured since it was built.

Plays on bbsradio.com

bbsradio.com’s own pages record clicks on their player and download button. Syndigence shows those beside downloads as “plays on bbsradio.com”. They are a different measure of a different thing and are never added to downloads.

What is kept, and for how long

  • The raw access logs are copied into a private Google Cloud Storage bucket with restricted access and deleted after thirteen months.
  • The database holds daily aggregates only: downloads per episode, per day, per country, per app, per operating system. No network addresses are stored.
  • The listener key used to count one listener once is a salted hash of the address and user agent. The salt changes every day and the key exists only while that day is being counted. It is never written anywhere.

Changes

2026-09-29 · First published, with the rules above.