# Method

## Source
The Podcast Index feed dump, table `podcasts`, 4,711,475 rows, dated 2026-08-16.
Reference timestamp 1786838400. One pass over the full table, never a sample
(`tools/report_spreaker_facts.py`).

## Host normalisation
`host` in the dump is the registrable domain of the feed URL. It is lowercased
and a small alias map merges domains belonging to one company
(`tools/count.py`, `HOST_ALIASES`): spotify.com, spotify.link,
podcasters.spotify.com and creators.spotify.com fold into anchor.fm;
feeds.buzzsprout.com into buzzsprout.com; libsynpro.com and libsyn.org into
libsyn.com; podbean.eu into podbean.com; omnycontent.com into omny.fm;
megaphone.link and feeds.megaphone.fm into megaphone.fm; simplecast.fm into
simplecast.com; and the feeds.* forms of soundcloud, captivate, redcircle,
acast, transistor and fireside into their bare domains. Anchor prints as
"Anchor (Spotify for Creators)". 26 rows carry an empty host and
print as `(none)`.

## Start year
The start year is the year of `oldestItemPubdate`, the oldest episode still in
the feed. It is not the year the show launched. A feed that drops its old
episodes reads as younger than it is, which moves feeds into later cohorts and
flatters the recent years. 4,486 rows carry an oldest-episode date
before 2004, earlier than podcasting itself; they are placeholder dates and are
excluded. 256,764 rows carry no oldest-episode date at all and are also
excluded. The 2026 cohort stops at the dump date, 2026-08-16, so it covers seven
and a half months, not a year, and its active share is an artefact of recency.

## Episode counts
`le1` is `episodeCount <= 1` and `le3` is `episodeCount <= 3`. Both include
feeds reporting zero episodes. `episodeCount` is capped at 1,000 for recently
refreshed feeds, which does not touch a cut at one or three episodes.

`episodeCount` is unreliable for Buzzsprout in this dump: 133,259 of the
270,067 Buzzsprout rows report zero episodes, 49.3%. Buzzsprout rows
therefore carry no `le1` or `le3` figure anywhere in this dataset, and every
cohort and category episode cut is published twice, once over all feeds and
once with the Buzzsprout rows removed from both numerator and denominator.

## Active
`active_90d` is a `newestItemPubdate` inside the 90 days before 2026-08-16,
`active_365d` inside the 365 days before it. Feeds with no newest-episode date
are never active and stay in every denominator.

## Language
The language tag is normalised to its ISO base tag (en-us, en-GB and EN all
become en). It is self-declared in the feed and is not checked against the
audio. The deprecated tag `in` is not merged into `id`.

## Category
`category1` is the feed's first self-declared Apple category. Shows pick where
they compete, so the category split is a split of declarations.

## Masking
Cells under 5 print `<5`. A share whose numerator is masked or whose base is
under 100 is left empty in these CSV files and prints n/a in the report tables.

## Limitations
- The dump is one snapshot, 2026-08-16. Nothing here is a time series of
  measurements; it is one measurement cut by the start year recorded in each
  feed.
- A feed is not a show people heard of. A feed with three episodes may be a
  live show that trimmed its archive, a test feed, or a duplicate.
- Counting feeds on a platform is not counting that platform's customers.
  Feeds on a white-label or self-hosted domain count under that domain.
- The index carries feeds it has discovered. A platform whose feeds are less
  discoverable is undercounted, and the level of undercount is unknown.
- The 2026 cohort is partial and the 2025 cohort is the most recent full year,
  so both are the years most exposed to the archive-trimming effect above.

Data: CC BY 4.0, Podcastquery, September 2026
