Tutorial · Bunny.net

Bunny.net Video Downloader: How to Save Bunny Stream Videos

A complete guide to downloading Bunny.net Stream videos in 2026. Why generic downloaders fail, how to extract HLS streams correctly, and how to handle the Referer authentication trap.

By the Vidora team 10 min read

If you have ever tried to save a video from a course platform that uses Bunny.net under the hood, you have probably hit a wall. Right-click does nothing. Generic Chrome downloaders show "no video found." Even tools that work on Vimeo and YouTube fail silently. The good news: Bunny videos are absolutely downloadable, you just need a tool that understands their delivery model.

1. What is Bunny.net?

Bunny.net is a fast, affordable CDN founded in 2017 that has become the silent backbone of thousands of online businesses. Their video product, Bunny Stream, is the streaming infrastructure of choice for many independent course creators, SaaS demos, indie product showcases, and small media companies. If you have ever taken a course on a platform like Podia, Teachable, Kajabi, or a custom LMS, there is a 30 to 50 percent chance the video was served by Bunny.

What makes Bunny attractive to creators is the same thing that makes it tricky to download:

2. Why Bunny.net videos are hard to download with generic tools

Three architectural choices make Bunny videos fail with most downloaders:

The Referer trap

Bunny CDN edges (the iframe.mediadelivery.net domain and b-cdn.net servers) check the Referer request header on every segment download. If it does not match an allowed source domain, the CDN returns 403 Forbidden. Most generic downloaders do not forge the Referer correctly, so the first segment fetches but every subsequent one fails.

HLS without progressive fallback

Unlike YouTube or smaller platforms that ship a fallback MP4 file, Bunny Stream is HLS-only. There is no single MP4 you can right-click and save. The only way to recover the video is to download the playlist, fetch every segment, and mux them together. Generic "right-click save" extensions that hunt for <source> tags get nothing.

Iframe embedding

Bunny videos are usually embedded in an <iframe> from iframe.mediadelivery.net. The HLS request happens inside that iframe, not the parent page. Downloaders that scan only the parent DOM miss the video entirely.

The combination of "iframe-isolated request, Referer authentication, HLS-only" is exactly the recipe that breaks 95 percent of free downloaders. The few tools that handle Bunny correctly are the ones that ship Bunny-specific logic.

3. Method 1: Vidora (one-click, recommended)

Vidora ships with explicit Bunny.net support. The detection scans iframes, the Referer is forged automatically using declarativeNetRequest, and HLS muxing reconstructs the original MP4 without re-encoding. Steps:

  1. Install Vidora from the Chrome Web Store
  2. Open the page that contains the Bunny video
  3. Press play once. This forces Bunny to deliver the playlist URL, which Vidora needs to detect
  4. Click the Vidora icon in your toolbar. The video appears with a quality selector
  5. Pick your quality and click Download. Vidora fetches all segments in parallel (six at a time), muxes the audio + video tracks, and saves a clean MP4 to your Downloads folder

For a 1-hour 1080p course video, this typically takes 3 to 6 minutes on a normal connection.

4. Method 2: Manual extraction via DevTools (advanced)

If you cannot install an extension, the manual route works on any device with Chromium DevTools. The trick is finding the M3U8 inside the iframe.

Step-by-step

  1. Open the page that embeds the Bunny video
  2. Open DevTools (F12) and go to the Network tab
  3. In the filter box, type m3u8
  4. Press play on the video. Within a second, you see one or more requests for playlist.m3u8 from vz-XXXXXXXX-XXX.b-cdn.net or similar
  5. Right-click the master playlist (the one without segment numbers in the URL), and copy the URL
  6. Open a terminal and run:
    ffmpeg -referer "https://iframe.mediadelivery.net/" -i "PASTED_M3U8_URL" -c copy output.mp4

The -referer flag is the critical part. Without it, the CDN rejects every segment with 403. -c copy preserves quality (no re-encoding).

5. How to find the M3U8 URL for a specific Bunny video

Bunny Stream URLs follow a predictable pattern:

https://vz-{LIBRARY-HASH}-{LOCATION}.b-cdn.net/{VIDEO-GUID}/playlist.m3u8

If you know the library hash (visible in any Bunny iframe URL like iframe.mediadelivery.net/embed/12345/abc), you can construct the M3U8 URL once you have the video GUID. The video GUID is shown in the iframe path or in the underlying API response.

For most users, just opening DevTools while the video plays is faster than reverse-engineering the URL.

6. Tips for course creators using Bunny.net

If you are a course creator hosting your own videos on Bunny, downloads can serve two legitimate purposes: backups and offline access for paying students.

Backups

Bunny Stream stores your master uploads, but you should keep your own offline copies. Download every published video into a structured folder (one folder per course, files named with their position number). Vidora makes this fast: open each lesson, click download, repeat.

Student offline access

Some students legitimately need offline access (travel, intermittent connectivity). Rather than ban downloaders, consider explicitly allowing them. The Vidora license model (one-time payment) means students who care can buy it themselves without you incurring costs.

What you cannot do

You cannot enforce strict no-download protection without using paid DRM (Bunny MediaCage, Widevine). Even then, a determined user can capture screen output. Trust + good content > technical lock-in.

7. Troubleshooting common Bunny.net download errors

Error: 403 Forbidden on every segment

Cause: Referer header is missing or wrong. Fix: ensure your downloader is sending Referer: https://iframe.mediadelivery.net/ or the source page domain. Vidora handles this automatically; for manual ffmpeg, add the -referer flag.

Error: download stops at exactly 50 percent

Cause: token-signed URLs expired mid-download. Bunny short-lives signed URLs (typically 1 hour). Fix: replay the video first to refresh tokens, then immediately start the download.

Error: video downloads but no audio

Cause: muxer ignored the audio track. Bunny ships audio in a separate variant of the playlist. Fix: use a downloader that explicitly fetches audio + video and muxes them. ffmpeg with -map 0:v -map 0:a works; Vidora handles this transparently.

Error: extension does not detect the video

Cause: the iframe loaded but you did not press play. Bunny only fetches the playlist on play. Fix: click play in the video, wait 2 seconds, then open the extension popup.

8. Frequently asked questions

Is downloading Bunny.net videos legal?

It depends on the content and your access rights. Downloading your own uploads, public-domain content, or videos in courses you have purchased is generally legal. Downloading copyrighted content without permission is not. The downloader is a tool; legal responsibility is yours.

Can I download from Bunny CDN without playing the video first?

No. Bunny Stream lazy-loads the playlist on play. Without playback, there is no playlist URL to fetch.

Does the download include subtitles?

Bunny Stream subtitles ship as separate WebVTT files referenced in the master playlist. Most downloaders save only video + audio. For subtitles, download the .vtt file separately from the playlist.

Will Bunny block me if I download too many videos?

Bunny does not aggressively rate-limit individual viewers. Course platforms hosting on Bunny might monitor unusual access patterns from their own application layer, but the CDN itself is permissive.

What is the file size of a typical Bunny.net 1080p video?

Roughly 5 to 8 MB per minute at 1080p H.264, depending on bitrate. A 60-minute course video is usually 300 to 500 MB. Higher bitrates and 4K content are larger.

About the author

RGC Digital LLC builds Vidora. We have spent significant time reverse-engineering CDN delivery patterns to make sure Vidora handles Bunny correctly.

Related reading