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.