yt-dlp-rajiko

- improved radiko.jp extractor for yt-dlp (fast and areafree)

About

日本語 🇯🇵

yt-dlp-rajiko lets you download Japanese radio shows from radiko.jp without a VPN, using yt-dlp. It downloads quickly, and works for any participating station*, from anywhere in the world.
*except NHK, but they have their own site which is supported in yt-dlp proper

Intended for personal archiving, not for commercial use. Please subscribe to radiko Premium if you are able.
(It's Free Software, so this is just me asking nicely, not a hard requirement. but you should do it so that radiko can keep existing)
(also, if you get the timefree30 plan you can use it with yt-dlp :P)

Install

Download the plugin bundle or pip install yt-dlp-rajiko
Latest release: v1.10 (Sun, 09 Nov 2025 21:01:07 +0000)
Older releases

Requires yt-dlp 2025.02.19 or newer.

If you installed yt-dlp with pip, use the pip command above. If you installed yt-dlp with pipx, use pipx inject yt-dlp yt-dlp-rajiko to install the plugin in yt-dlp's environment.

If you installed with the .exe/binary or any other method, download the bundle and place it in one of these locations:

You'll have to create those folders if they don't already exist.
There is no need to extract the zip file.

You can check you've installed correctly by running yt-dlp -v and looking for the [debug] Extractor Plugins: or [debug] Plugin directories: lines. (like this)

Release Notes

yt-dlp-rajiko v1.10 has been released

This release fixes TimeFree downloading, following the removal of a stream on radiko's end.
Unfortunately, the workaround involved means that we lose the download progress indicator.
but downloads are still fast, which is the most important bit :)

It also extracts a bit more info for r_seasons programme URLs, so you can see the nice picture in GUIs and such :)

ALSO while I have your attention:
I updated the website a bit, particularly the usage section. Hopefully it's a bit clearer and easier to use now.

Read more

Subscribe by RSS: https://427738.xyz/yt-dlp-rajiko/CHANGELOG.xml
Subscribe by email: Use that link^ with Feedrabbit or any other RSS-to-Email service :P
Some other method: Shoot me a message and we can work something out

Checksums

Here are the SHA256 checksums for the latest relase:

a7bf81d880725e909225798a356899222229748411f330692c776c9153a4007f  yt_dlp_rajiko-1.10.bundle.zip
3d74112f94463a45ad1a9954343160cdcad3a8d799be934b8e30e5b622b405b2  yt_dlp_rajiko-1.10.tar.gz
ad1b3a63fc4ce4919840d92a5ca1a020cacea144f76eb07a21611dc61291fffc  yt_dlp_rajiko-1.10-py3-none-any.whl
Previous releases 106085f72608562f09bfb2319a1437922aca2d7df4f94af37ade4832b50b0ab1 yt_dlp_rajiko-1.9-py3-none-any.whl 5800258edec65a4b5230679cee55fc186f05ed6e89c89a63acc698ce245dbb16 yt_dlp_rajiko-1.9.bundle.zip 4a288b04fb8e4102b15074644330ae189f7fb53af8bfd5827eb19cff6cd695e8 yt_dlp_rajiko-1.9.tar.gz 8b7fb0d06e62cf9eebdbf17ce4e164b84a058172ebe0cdd36f7084d00123725b yt_dlp_rajiko-1.8.tar.gz 10d56b9cac6a191ef07b4931d76deb4bb048c433e4fe2f05546d5cfbfe3ae45d yt_dlp_rajiko-1.8.bundle.zip 31c4f9463b5f4039ffc36bb595dfcc3d1427837b89cc6f38a150690fef058c1a yt_dlp_rajiko-1.8-py3-none-any.whl 0e2c24f0acdc9932b215f78347795494c161adf372225c1ff3363a974b46f52c yt_dlp_rajiko-1.7.tar.gz 35a6d9371ac60ca526ebae519568b50a73c930acdb3fa6ad994b32d3c5d7c04a yt_dlp_rajiko-1.7-py3-none-any.whl ec192573235a32e3b84e990d10387cde5259db956db05e1e6304ab41c299e48b yt_dlp_rajiko-1.6.tar.gz 1664969505785b76fb6b7c85a5b8f498039576d6abcdf136f3e007edcda3fcdd yt_dlp_rajiko-1.6-py3-none-any.whl 5b3fdb642d84ad58f8925f833bf3d881c37256ab0be7f77a6305c7e32850b103 yt_dlp_rajiko-1.5.tar.gz 8d8df258a9e9404cc9dde73330183db895905c18bf202875d5da5adf2876965a yt_dlp_rajiko-1.5-py3-none-any.whl 094a5479eac3429b6880c5f7f00f78cdce8299c71a77ac248c0e709dcb770b63 yt_dlp_rajiko-1.4-py3-none-any.whl 237cf5d8612c78c50f4e9c716407753d75b3575a0f50c04db2512f85ce27f796 yt_dlp_rajiko-1.4.tar.gz 69692f1cede445ad13784c9c7fae09812ccdbc4e49d2e06d51cbc76978339f0b yt_dlp_rajiko-1.3.tar.gz 25776934bca2046e9c8e1f9cdad73dfa9801c7798d0e6748f974f315f5aad11f yt_dlp_rajiko-1.3-py3-none-any.whl f415c9bfade5f60d3e9a7343f526808589c76ab9917c7cc9911260566ded25d0 yt_dlp_rajiko-1.2.tar.gz 4ee278fd138ebc305deeedc7e2a183afe91903607f28c513731d9e3888c3df11 yt_dlp_rajiko-1.2-py3-none-any.whl 29463780d0dcc3be4448eea87f72884c1878e1ea01ccfb823293a42ca6a694b9 yt_dlp_rajiko-1.1.tar.gz d3fdefb4c5c1d5d64c58b3f805bf64ae95f3dd9f496742d214e16e33e677c600 yt_dlp_rajiko-1.1-py3-none-any.whl 70b95f25a62b465f1fb26f0e6faef45236d55a0c12665ef4f754cd39832118cf yt_dlp_rajiko-1.0-py3-none-any.whl 993e16a3423a43dbeaee59c6eb37086f4e801dcfe03042aa5c5c01b0085fdc4d yt-dlp-rajiko-1.0.tar.gz

Usage

  1. Basic downloading
  2. "Subscribing" to programmes
  3. Podcasts
  4. Tips
    1. Metadata and File names
    2. Making it faster
    3. Putting it all together

Basic downloading

For starters, we can download a previously aired programme.
yt-dlp 'https://radiko.jp/#!/ts/FMT/20251012140000'

We can download one from another region, in exactly the same way.
yt-dlp 'https://radiko.jp/#!/ts/CCL/20251012230000'
No need to specify a region or log in to an account (at least for programmes aired in the last 7 days)

It also works with those radiko.jp/share URLs you might see on station websites etc.
yt-dlp 'https://radiko.jp/share/?sid=FMT&t=20250528142747'

If you want, you can record the live station stream:
yt-dlp 'https://radiko.jp/#!/live/TBS'
yt-dlp 'https://radiko.jp/#JOAK'

This is mostly here so you can listen to the radio in e.g. mpv or other players with yt-dlp integration.
Both URL formats do the same thing. The only difference is that one is shorter.

You can download "Timefree 30" programmes (older than 7 days) if you have an account with an active subscription.
You can login in the usual ways: Username and password with -u and -p, or passing cookies from your browser.

"Subscribing" to programmes

There are a few ways to get the latest episodes of a programme.

The new way is to find the https://radiko.jp/r_seasons/ programme page that corresponds to your programme. At time of writing (Oct 2025), the only way to find these is to search "Programme Name radiko" and hope, or copy the link from the mobile app.

The old way is to come up with a search query on the site that gives the results you want. Usually just the programme name will do, but you might have to set a region filter for networked programmes (so you only get it from the station you want). You'll also want to filter for only Timefree, so you don't get results you can't download yet.

Once you've got your URL, you can copy it from the URL bar and use it with yt-dlp in the usual way:

yt-dlp 'https://radiko.jp/r_seasons/10002831'
yt-dlp 'https://radiko.jp/#!/search/timeshift?key=daisy%20holiday&filter=past&start_day=2025-09-17&end_day=&region_id=all&area_id=JP13&cur_area_id=JP13'

You'll see it trying to download every result, one after the other.

Podcasts

Podcasts work as you would expect. You can download individual episodes from their URLs:
https://radiko.jp/podcast/episodes/39b4ea93-6693-4cd6-a5bd-7ad01a98b3f4

Or every episode from the Podcast's /channels/ page:
https://radiko.jp/podcast/channels/09f27a48-ae04-4ce7-a024-572460e46eb7

You can search for podcasts on the site, but it only returns links to the whole podcast, not individual episodes.
So the search would download EVERY episode of EVERY result. Probably not what you want, which is why this behaviour is disabled by default.
If that IS what you really want, you can filter your search to return only podcasts, and it will work.

Tips

Metadata and File names

Add --embed-metadata --embed-thumbnail to your command to have metadata about the programme, such as the title, description, cover art, and tracklist embedded as tags in the file. These should show up in all good media players.

You can use an output template to add the airdate into the filename for better organisation.
I use -o "%(title)s %(timestamp+32400>%Y-%m-%d_%H%M)s [%(id)s].%(ext)s".
+32400 is the JST time offset (+9h) in seconds, because yt-dlp's timestamps are all in UTC.

If you want, you can add the airdate to the embedded track name: --parse-metadata "%(title)s %(timestamp+32400>%Y-%m-%d %H\:%M)s:%(meta_title)s"

Making it faster

You can use -N (multi-threaded download) to increase download speed. I use about 10.
Normally you should use a smaller amount, but radiko (and NHK) seem to need more.
-N 10

If you're downloading a show every week, you should use --download-archive so yt-dlp doesn't try to download episodes you've got already.

Putting it all together

Combining all that^, we get this: --embed-metadata --embed-thumbnail -o "%(title)s %(timestamp+32400>%Y-%m-%d_%H%M)s [%(id)s].%(ext)s" -N 10 --download-archive [some file]

But no one wants to type that out/paste it in every time. So, we can make a yt-dlp config file, and define an alias. For example:
--alias rdk '--embed-metadata --embed-thumbnail -o "%(title)s %(timestamp+32400>%Y-%m-%d_%H%M)s [%(id)s].%(ext)s" -N 10 --download-archive [some file]'

Then all you need to add to your command is --rdk. (or ofc you can name the alias whatever you like)
yt-dlp 'https://radiko.jp/#!/ts/FMT/20251012140000' --rdk

Links/Contact/Support

Github hosts the source code repo and bug tracker. I also have a backup repo on git.427738.xyz

You can report a problem by opening an issue on Github. For anything else, or if you'd prefer to contact privately, you can use the contact form on this site, or DM me on Discord at garret1317.
Or, if you want, you can ping me in the yt-dlp discord server.

If you are reporting a bug/problem, please include a yt-dlp verbose log that shows the problem in your message.
You can do this by adding -v to your yt-dlp command, and copying yt-dlp's entire command line output.
This helps me see what's going on, so I can diagnose the issue.

Acknowledgements

Thank you to:

🙏