How to Download Circle.so Videos for Free (HLS m3u8 Streams) - using yt-dlp
Step-by-step guide to download Circle.so HLS m3u8 videos with yt-dlp, auto-naming, ffmpeg optimization, and troubleshooting tips.

How to Download Circle.so Videos for Free (HLS m3u8 Streams) - using yt-dlp
Circle.so hosts course videos using HLS streaming, where video data is split into .ts segments and controlled by a .m3u8 playlist file.
This guide shows you how to download, optimize, and auto-name Circle Academy videos with a single command on macOS.
💡 Tip: Don’t want to do this manually?
Try the Circle Video Downloader — it automatically detects and saves circle.so videos in one click. Or check out the code repository
🔍 Step 1 — Identify the Stream Type
- Open Developer Tools → Network in your browser.
- Filter by
m3u8. - You’ll see URLs like:
https://cdn-media.circle.so/.../playlist.m3u8
or
https://cdn-media.circle.so/.../playlist_1.m3u8
✅ Use the playlist.m3u8 file (the master manifest).
⚙️ Step 2 — Copy the Universal Command Template
This is your reusable one-liner template.
It handles download, metadata optimization, and QuickLook thumbnail compatibility.
yt-dlp -o "%(title)s.%(ext)s" "<PASTE_M3U8_URL_HERE>" --exec 'ffmpeg -y -i "{}" -movflags +faststart -pix_fmt yuv420p -c copy "{}_fixed.mp4" && mv "{}_fixed.mp4" "{}"'
💡 Keep this saved somewhere — you’ll just swap out the placeholder each time.
🚀 Step 3 — Replace the Placeholder URL and Run It
- Go back to DevTools and copy your actual
.m3u8link. - Replace
<PASTE_M3U8_URL_HERE>in the command with your real link. - Paste it into Terminal and hit Enter.
✅ It will automatically:
- Download all
.tssegments and merge them. - Dynamically name the file based on video metadata.
- Add
faststartand pixel formatting for Finder previews. - Replace the original file with the optimized one.
🧠 Step 4 — What Each Flag Does
| Flag | Purpose |
|---|---|
-o "%(title)s.%(ext)s" | Dynamically name the file based on metadata. |
--exec 'ffmpeg ...' | Run ffmpeg automatically after download. |
-movflags +faststart | Moves metadata to the start of file for instant playback. |
-pix_fmt yuv420p | Ensures Finder and QuickLook compatibility. |
-c copy | No re-encoding (lossless). |
🧩 Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| Token expired | Circle’s CDN tokens expire quickly. | Refresh the page and grab a fresh .m3u8 link. |
| No title metadata | Some Circle embeds omit titles. | yt-dlp will fallback to a timestamp-based filename. |
| No thumbnail still | macOS caching delay. | Run qlmanage -r cache to refresh Finder previews. |
✅ Summary
- Find the
.m3u8link under Network → Media. - Use the master
playlist.m3u8, not the_1.m3u8variant. - Copy the template command from Step 2.
- Replace the placeholder URL in Step 3.
- You’ll get a Finder-previewable
.mp4auto-named and ready to use.
💡 Tip: Prefer a one-click solution?
Use the Circle Video Downloader to automatically detect, download, and merge Circle.so course videos without touching the command line.
Related Posts
How to Download Onlyfans Profile's Videos & Images for FREE (yt-dlp tutorial)
Download OnlyFans profile videos and images using yt-dlp by capturing the MP4 media URL from DevTools; simple step-by-step workflow and examples.
How to Download Coursera Videos for FREE (yt-dlp tutorial)
Download Coursera lectures with yt-dlp by capturing MP4 or HLS/DASH URLs from DevTools. Step-by-step workflow and examples.
How to Download Skool Videos with yt-dlp
Quick instructions for saving Skool HLS streams using yt-dlp with custom output, referer headers, and format tuning.