Relevance of RSS and OPML

As a somewhat advanced and picky podcast listener, I constantly look for new and relevant podcasts, it may vary from super deep technological niche podcasts to flim-flam drama podcasts. This is a constant battle since most producers of podcasts side with only one type of distribution.

The iTunes (or Apple podcasts or whatever it may be called this minute) has a fair chunk of the producers, hiding the RSS feed in the folds and making it easy for people with apple products to subscribe and listen. Outsiders, non-apple products users have to jump through hoops the get hold of the feed link.

Google podcasts mobile app (there is another in Google Play Music as well), you get a predefined set of podcasts which may been nice and dandy, but it reflects the top 500 list, if you are into niche podcasts of any kind, you won’t find it here.

Spotify who bought ( hides the feeds and you can’t really find the feeds on the internet unless you are able to guess a huge hexadecimal number in links. Spotify by itself hides any podcast feed links and you need to be logged in and use their app to be able to listen.

Tear down the walls

I imagine a podcast producer would like to produce a podcast a have it distributed throughout the internet without locking it in into a specific platform, device or subscription. RSS is one way to do it, even though a very broken one, Podcast directories is another, but that is also very broken.

OPML is a XML declaration that focuses on outlines, outlining a set of links, in our case a set of podcast feeds, a collection of podcast feeds. OPML is often used to import sets of feeds into podcast catchers and/or create backup copies of sets of podcast feeds in podcast catchers.

RSS is at version 2.0 and have been there for a long time, RSS is a broken format as there is no real XML schema behind it and people, publishers extend it right and left with their own features with new namespaces to cover their own needs. This makes it a real hassle to parse RSS, even though XML.

RSS is also an aged format, for the most part it is able to carry/transport the information it needs to, but it is marked by artifacts from the 1990’s .. date formats that belongs on to previous century. Timestamp such as “Sat, 09 Sep 2017 08:12:19 GMT” contains “Sat” for “Saturday”, “Sep” for “September” which both are according to US English, these are US English-centric while the format is used globally to transport information, and local system locale settings leak into the timestamp elements. A universal timestamp format such as ISO8601 would be preferrable, the above timestamp expressed as ISO8601 would look like “2017-09-09 08:12:19+0000”. Shorter, compact and no local locales that would mess up the parsing. Time Zones such as “GMT”, “CET”, “PST” belongs to the past, just declare what offset you have to UTC.

Enough about the technical details of the RSS transport.

I have been working on a small project on and off for the last 2 years, where I collect and validates RSS podcast feeds, in order to build a podcast directory with focus on audio-only podcasts — the form I consume podcasts in as I listen to them while traveling, nowadays I don’t travel as much as I used to, only a day a week instead of 5 days a week. This podcast directory has been defined by a set of rules, to ensure it meets my standards.

  • MUST be audio (and supported audio-format, i.e. MP3, MP4, OGG or AAC)
  • MUST have produced episodes within last 12 months
  • MUST have a public feed

At the moment there is 508445 active podcast feeds in my directory that complies with these rules. My aim is to publish them publicly and openly, so that you can find them and subscribe to them, any number of them. Some of these are hard to find on the internet and that is why I want to expose them, for you to find.

At the moment I do not have a UI for this, but are working on it, to build free text search, tag clouds and regular category search and browse.

Meanwhile, you can enjoy the below OPMLs that are exported daily/nightly at 03:37+0000

alandsradio-pod.opml ÅlandsRadio podcast feeds collected as OPML
bbc-pod.opml BBC (United Kingdom’s Public Radio) podcast feeds collected as OPML
dr-pod.opml DR (Danish National Public Radio) podcast feeds collected as OPML
latvijasradio-pod.opml LatvijasRadio (Latvia’s National Public Radio) podcast feeds collected as OPML
librivox-pod.opml Librivox Audiobooks
npr-pod.opml NPR (United State of America’s National Public Radio) podcast feeds collected as OPML
nrk-pod.opml NRK (Norway’s National Public Radio) Podcast feeds collected as OPML
prx-pod.opml PRX (Public Radio Exchange) podcast feeds as OPML
radio24syv-pod.opml Radio 24Syv Podcast feeds collected as OPML
rteie-pod.opml RTÉ (Ireland’s National Public Radio) podcast feeds as OPML
rthk-pod.opml RTHK (Radio Television Hong Kong) podcast feeds as OPML
sr-pod.opml SR (Swedish National Public Radio) podcast feeds as OPML
yle-fi-pod.opml YLE (Finnish National Public Radio) podcast feeds as OPML