Use the following script of your choice (Shell/Bash or PowerShell) to download full length subscriber episodes of the Sam Harris Making Sense podcast for free. In case you couldn't tell, I am better with shell than PowerShell so please bare with me. Hopefully Sam knows about this flaw. Contact him here but in the case he doesn't care, here are the scripts:
🩹
UPDATE: This post has been updated May 21, 2026
It looks like Sam's RSS service has permanently switched from using simple integer identifiers to using UUID-based identifiers a couple days ago. If you don't use the new UUID's you will see the JSON error:
Here is a list of currently valid UUID-based identifiers you can use:
If you catch any ID on this post that doesn't work anymore, please leave me a comment below (login isn't required to post comments and there's no waiting period).
The following is slightly older info that mostly applied to a time when the simple integer identifiers still worked:
IMPORTANT: It appears as though Sam is moving to UUID-based identifiers instead of simple integers which is going to make discovering valid ID's much harder in the future. For instance, if you take a look at the XML returned in: https://rss.samharris.org/feed?uid=134679 there is a new tag called
It looks like Sam's RSS service has permanently switched from using simple integer identifiers to using UUID-based identifiers a couple days ago. If you don't use the new UUID's you will see the JSON error:
{"message":"The link to your personal RSS feed is not correct."}Here is a list of currently valid UUID-based identifiers you can use:
https://rss.samharris.org/feed/5b624f14-e923-4a75-aeb9-77d11773fb91
https://rss.samharris.org/feed/8d6611ab-fb1d-4eb5-b0f7-c78590eeee7b
https://rss.samharris.org/feed/87dcb0ef-cf27-4aa8-bc73-c1c49bf2f8fb
https://rss.samharris.org/feed/acb6f2a3-5e6d-4f23-bff6-706c1f5b09ab
https://rss.samharris.org/feed/11ac7478-aba8-4c38-96fe-8009a1a9370c
https://rss.samharris.org/feed/0d4bd6ef-4fb4-46d7-9e14-bf10ba91155f
https://rss.samharris.org/feed/e6330378-d96d-4310-a61a-b7fd24eec2f7
https://rss.samharris.org/feed/5f17c651-c9bb-4f82-b5c0-914b9db6be32
https://rss.samharris.org/feed/b98ce039-dada-4360-bfed-753ebb7d59a7
https://rss.samharris.org/feed/ee82d8ad-54e0-4a73-90c4-b8b19ddcd0b1If you catch any ID on this post that doesn't work anymore, please leave me a comment below (login isn't required to post comments and there's no waiting period).
The following is slightly older info that mostly applied to a time when the simple integer identifiers still worked:
IMPORTANT: It appears as though Sam is moving to UUID-based identifiers instead of simple integers which is going to make discovering valid ID's much harder in the future. For instance, if you take a look at the XML returned in: https://rss.samharris.org/feed?uid=134679 there is a new tag called
itunes:new-feed-url which contains a new UUID-based identifier such as: https://rss.samharris.org/feed/5b624f14-e923-4a75-aeb9-77d11773fb91. I originally assumed that the simple integer identifiers were correlated with the new UUID's on a technical level, however that was a bad assumption on my part. An anonymous commenter at the bottom of this post has pointed out:There may not be a hashing method involved at all. Obviously they are already crossreferencing the regular IDs with a database of active subscribers, that database may also contain the UUIDs for the respective subscribers. And how those UUIDs are generated is anyone's guess, they may as well be random. It's easy to generate random UUIDs. When researching the topic, I found a file of extremely random UUIDs: https://justpaste.it/n17j3
— Anonymous
Shell/Bash
curl -s 'https://rss.samharris.org/feed/5b624f14-e923-4a75-aeb9-77d11773fb91' | grep '.mp3' | \
sed -E 's/\s+<enclosure length="0" type="audio\/mpeg" url="//;s/"\/>//' > ./feed5b624f14.txt && \
while read url; do filename=${url##*/}; filename=${filename%%\?*}; wget -c -nc $url -O $filename; done < feed5b624f14.txt
PowerShell
Tested with PowerShell 5.1 on Windows and PowerShell 7.5.4 on Linux
# Fetch RSS feed and extract MP3 URLs and output to file
(Invoke-WebRequest -Uri 'https://rss.samharris.org/feed/5b624f14-e923-4a75-aeb9-77d11773fb91').Content -split "`n" |
Where-Object { $_ -like '*mp3*' } |
ForEach-Object {
$_ -replace ' <enclosure length="0" type="audio/mpeg" url="' -replace '"/>'
} | Out-File -FilePath '.\feed5b624f14.txt' -Encoding utf8
# Download files (skip if already exist)
$urls = Get-Content -Path '.\feed5b624f14.txt'
foreach ($url in $urls) {
$filename = [System.IO.Path]::GetFileName($url.Split('?')[0])
$destinationPath = Join-Path -Path $pwd.Path -ChildPath $fileName
if (-not (Test-Path $destinationPath)) {
Invoke-WebRequest -Uri $url -OutFile $filename
}
}
If you don't really know how to run these scripts, follow these steps (I am assuming you are running Windows):
- Click this link and then click the Download ZIP button at the top right to download both of the script files.
- Once you have downloaded the zip file, right click the file and Extract it.
- Note the location where you have extracted the file named
download-making-sense-powershell-script.ps1. - Press
Super+R(Windows Key and the R button), paste the following and adjust the location to the script file as necessary:
powershell.exe -ExecutionPolicy Bypass -File "%USERPROFILE%\Downloads\download-making-sense-powershell-script.ps1"
- The podcast files will be downloaded in whichever directory the script file is in. If you want them in a particular folder, just move the script file there first and adjust the path to the script file in the code prior to this step.
- If the steps above did not work for you, continue to the next step.
- Press
Super+Rand typepowershell.exeand press enter. - In the PowerShell window, navigate to the location where you extracted the scripts using commands like
cdto change directory. - Copy/paste the code below and run it:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
- Then run the script with:
.\download-making-sense-powershell-script.ps1
If you have any questions/comments regarding this article, click here or scroll down below (login isn't required to post comments and there's no waiting period).
Bash Parameter Expansion
This post is a condensed but somewhat comprehensive example of Bash Parameter Expansion (also available via paste.travisflix.com). This post assumes you know the basics of what Parameter Expansion already is. If you do not, you are better off looking elsewhere. One core functionality of Bash is to manage

Absolutely Mental: Ricky Gervais and Sam Harris Full Podcast
Listen to the full episodes of the Absolutely Mental: Ricky Gervais and Sam Harris podcast for free!


