Tutorial · Vimeo · HLS · MP4

Vimeo HLS Downloader: Save Vimeo Streams to MP4 (2026 Methods)

Vimeo serves most videos as adaptive HLS in 2026, not a plain MP4 link. This guide covers three methods to capture those streams as a single MP4 file - for videos you own or have explicit permission to download.

By the Vidora team 10 min read

Quick answer

To download a Vimeo HLS stream as MP4 in 2026, you have three working methods for videos you own or have permission to save: install the Vidora Chrome extension which extracts the highest-quality progressive MP4 from any Vimeo player iframe, run ffmpeg with the Referer header captured from your browser, or use yt-dlp with the --referer flag. Direct vimeo.com URLs require slightly different handling than embedded player.vimeo.com iframes. None of these methods bypass Vimeo's DRM-protected content.

1. How Vimeo serves video in 2026 (HLS + DASH + progressive MP4)

Open any Vimeo video in 2026 and the player does not load a simple MP4 file. It first fetches a config JSON from Vimeo's API, which includes a list of available delivery formats for that video. Depending on the account tier, encoding settings, and player context, you can receive any of three delivery types.

Adaptive HLS (the default)

Most Vimeo videos are served as HLS. The player fetches a master playlist (a .m3u8 file) that lists several quality variants - typically 360p, 540p, 720p, 1080p, and sometimes 4K. Each variant has its own sub-playlist pointing to short .ts segments, usually 6 to 10 seconds each. The player picks the highest quality your connection can sustain. You can read more about this format in our M3U8 and HLS explainer.

DASH (for higher resolutions)

For 4K content and some enterprise accounts, Vimeo also offers a DASH manifest (.mpd file). DASH works similarly to HLS but uses a different playlist format. If you see only a DASH manifest in your DevTools capture, our DASH MPD downloader guide covers that path separately.

Progressive MP4 (legacy, still available on some tiers)

Vimeo Pro, Business, and Premium accounts historically offered progressive MP4 download links directly in the video config. These are still present for many videos: a fixed-quality MP4 at a specific resolution with no playlist required. When Vidora detects a progressive link, it downloads that directly rather than assembling segments - which is faster and simpler. The browser extension checks for progressive links first, then falls back to HLS.

What this means for downloading

Because Vimeo uses token-signed URLs that expire (typically within 6 hours), you cannot bookmark an M3U8 URL and come back tomorrow. You need to capture the URL and download it in the same session. Any tool that requires you to paste a URL into a remote server will often fail precisely because that token has already expired by the time the server tries to fetch it.

Before any technical step, a plain statement on legality.

Downloading is allowed for your own content

If you uploaded the video to Vimeo, it is your content. Vimeo's own interface lets Plus, Pro, Business, and Premium account holders export a copy via the video settings panel. That built-in export is always the cleanest option because it downloads the original file, not a re-encoded HLS rendition. The methods below are useful when you need to automate that process, when you want a specific quality, or when you are on a Basic account without the export button.

See the comprehensive how to download Vimeo videos guide for a full comparison of all available approaches including the official export.

Downloading with permission is allowed

If the video owner has explicitly given you permission to download their content - in writing, via email, or in a contract - you are generally within your rights to save a local copy. Many freelance videographers and corporate video teams work this way: the client hosts on Vimeo and the creator needs a local archive.

What is not covered here

Downloading third-party Vimeo videos without the creator's permission violates Vimeo's Terms of Service and may constitute copyright infringement depending on your jurisdiction. This guide does not cover and does not endorse that use case. We also do not cover bypassing Vimeo's token signing or any DRM mechanism. The methods below work on standard HLS streams within an authenticated session.

3. Method 1 - Browser extension (one click, handles auth)

A browser extension running inside your Chrome tab inherits your entire session context: cookies, signed URLs, the correct Referer header, and any auth tokens the Vimeo player generated via JavaScript. It is the most reliable approach for Vimeo specifically because Vimeo's HLS URLs are session-specific and expire quickly.

This is also the best HLS downloader Chrome extension workflow for non-technical users: no DevTools, no terminal, no URL copying.

Step-by-step with Vidora

  1. Install Vidora from the Chrome Web Store. It works on Chrome, Edge, Brave, Opera, and any Chromium browser.
  2. Navigate to the Vimeo page - either the canonical vimeo.com/VIDEO_ID URL or a third-party page that embeds the Vimeo player via an iframe.
  3. Press play. The Vimeo player fetches the config JSON and the HLS manifest. Vidora intercepts both and identifies the available qualities.
  4. Click the Vidora icon in the toolbar. The popup shows each available format: progressive MP4 links if present, or HLS quality options with estimated file sizes.
  5. Select the quality you want (1080p for most use cases) and click Download. Vidora downloads all segments in parallel, muxes audio and video, and writes a single MP4 to your Downloads folder.

Why the extension handles Vimeo better than most tools

Vimeo signs every segment URL with a short-lived token tied to your session IP. A remote server or an old captured URL gets 403 Forbidden. The extension runs locally, shares your IP, and uses the same token-embedded URLs the player already fetched. This is why online Vimeo grabbers fail more than 80 percent of the time: they cannot replicate your session context.

Trade-offs

4. Method 2 - ffmpeg with Referer header captured

ffmpeg can download and mux an HLS stream from Vimeo, but it needs two pieces of information that the player computed dynamically: the signed M3U8 URL, and the Referer header. Without the Referer, Vimeo's CDN returns 403 Forbidden on every segment request.

Step 1: Capture the M3U8 URL and Referer from DevTools

Open DevTools (F12 or Cmd+Opt+I), go to the Network tab, and filter for m3u8. Press play on the Vimeo video. You will see a request to a URL ending in master.json or playlist.m3u8. Click it, go to the Headers tab, and note:

For the full DevTools walkthrough, see how to find the m3u8 URL via DevTools.

Step 2: Run ffmpeg with the captured headers

ffmpeg \
  -headers $'Referer: https://vimeo.com/\r\n' \
  -i "https://vod-progressive.akamaized.net/exp=.../playlist.m3u8" \
  -c copy \
  vimeo-video.mp4

Replace the Referer value with the exact one you captured (it is usually https://vimeo.com/ for canonical pages, or the embedding page URL for iframes). The -c copy flag is essential: it muxes the streams without re-encoding, preserving the original quality and completing in download-speed time.

Handling the separate audio rendition

Vimeo's master HLS playlist often lists the audio as a separate EXT-X-MEDIA group. If your output has no sound, run ffmpeg with two -i inputs: the video sub-playlist and the audio sub-playlist, then mux them together:

ffmpeg \
  -headers $'Referer: https://vimeo.com/\r\n' \
  -i "https://vod-progressive.akamaized.net/.../video-1080p.m3u8" \
  -headers $'Referer: https://vimeo.com/\r\n' \
  -i "https://vod-progressive.akamaized.net/.../audio-128k.m3u8" \
  -c copy \
  vimeo-video.mp4

If the stream uses AES-128 segment encryption (less common on Vimeo but possible), ffmpeg handles decryption automatically as long as the key URL is reachable from your machine. For deeper context on encrypted streams, see our AES-128 encrypted m3u8 guide.

When ffmpeg is the right choice

5. Method 3 - yt-dlp with --referer flag

yt-dlp is an actively maintained fork of youtube-dl with native Vimeo support. It parses the Vimeo config API, selects the best quality, downloads all segments, and muxes them - all in a single command. For canonical vimeo.com URLs it often works without any extra flags. For embedded iframes the --referer flag is usually required.

Basic command (canonical Vimeo page)

yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]" \
  --merge-output-format mp4 \
  "https://vimeo.com/VIDEO_ID"

With Referer for embedded iframe

yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]" \
  --merge-output-format mp4 \
  --referer "https://www.embedding-site.com/page-with-video/" \
  "https://player.vimeo.com/video/VIDEO_ID"

The --merge-output-format mp4 flag is important: without it yt-dlp defaults to MKV when merging separate audio and video streams, and many users expect a plain MP4. The -f format selector picks the highest available MP4 video with the best M4A audio track, then merges them.

Selecting a specific quality

yt-dlp -F "https://vimeo.com/VIDEO_ID"          # list available formats
yt-dlp -f FORMAT_CODE --merge-output-format mp4 \
  "https://vimeo.com/VIDEO_ID"                   # download specific format

Run yt-dlp -F first to see the format codes, then pick the one you want. This is especially useful if you want 720p to save disk space rather than the default 1080p or 4K.

When yt-dlp is the right choice

6. Vimeo embed iframe vs canonical vimeo.com page

This distinction trips up most people when a Vimeo download attempt returns 403 errors or empty results.

Canonical vimeo.com pages

A URL like https://vimeo.com/123456789 is a full Vimeo page. The video config is embedded in the page source as a JSON object. yt-dlp's built-in Vimeo extractor parses this directly. ffmpeg needs the signed M3U8 URL from the config, which you can find in DevTools. Browser extensions parse the page DOM and intercept network requests to get both.

Embedded player.vimeo.com iframes

Many websites embed Vimeo via an iframe like:

<iframe src="https://player.vimeo.com/video/123456789?h=abc&autoplay=0"></iframe>

The embedded player loads its config from a different endpoint, and crucially, the Vimeo CDN checks that the Referer matches the embedding domain. If you try to pass the player.vimeo.com URL directly to ffmpeg without the correct Referer, the CDN sees an unexpected origin and returns 403. The fix is straightforward: capture the Referer from DevTools (it is the URL of the page hosting the iframe, not the iframe src itself) and pass it to your download command.

Private embeds and unlisted videos

Unlisted videos have a hash in their URL (vimeo.com/VIDEO_ID/HASH). You need that hash in your yt-dlp command or when constructing the player URL. Password-protected videos require you to authenticate in the browser first; then the extension or ffmpeg with your session cookies can access the signed URLs. yt-dlp supports --video-password for password-protected content.

For a broader comparison of all Vimeo download scenarios, the how to download Vimeo videos guide is the most complete reference.

7. Frequently asked questions

Is it legal to download Vimeo videos?

It depends on who owns the content. Downloading your own Vimeo-hosted videos is legal - Vimeo provides a built-in export for paid account tiers and the API exposes progressive download links for your own content. Downloading videos you have explicit written permission from the creator to save is also generally permitted. Downloading third-party content without the creator's permission violates Vimeo's Terms of Service and may violate copyright law in your jurisdiction. None of the methods in this guide bypass DRM-protected content.

Why does Vimeo serve videos in HLS instead of a direct MP4?

HLS lets Vimeo dynamically adapt quality to your connection speed, reducing buffering on slow connections and delivering 4K on fast ones. Token-signed segment URLs also make the stream harder to capture with a simple right-click. Progressive MP4 links do exist for some tiers and are still preferred by Vidora when available, but the default player in 2026 uses adaptive HLS for most deliveries.

Can I download Vimeo Showcase or password-protected videos?

Only if you have legitimate access. If you set the password yourself (your own Showcase), or the creator shared the password with you, a browser extension running in your authenticated session can capture and download the stream. yt-dlp supports --video-password for password-protected content. Online tools running on remote servers cannot replicate your browser session and will return 403 errors for any protected content.

Why does my Vimeo download lose audio?

Vimeo's adaptive HLS master playlist often separates audio into its own EXT-X-MEDIA rendition group rather than baking it into the video stream. Tools that fetch only the video sub-playlist produce a silent MP4. ffmpeg with -c copy and two -i inputs (video playlist + audio playlist) merges them correctly. yt-dlp with --merge-output-format mp4 handles this automatically. Vidora detects and merges both renditions by default.

Does Vimeo have DRM protection?

Standard Vimeo accounts use token-signed URLs and optionally AES-128 segment encryption, but not Widevine or PlayReady DRM. The methods in this guide work on standard HLS streams. Vimeo OTT / Vimeo On Demand for businesses may apply stronger protections for paid content. If you see a Widevine error in your browser console, the content uses DRM and is outside the scope of this guide.

What is the difference between vimeo.com and player.vimeo.com for downloading?

Canonical vimeo.com pages embed the full video config in their HTML, which yt-dlp and browser extensions parse directly. Embedded player.vimeo.com iframes require the Referer header to match the hosting page when fetching segments from the CDN. If ffmpeg or yt-dlp returns 403, capture the Referer from DevTools (the URL of the page embedding the iframe, not the iframe src) and pass it with -headers or --referer respectively.

About the author

RGC Digital LLC builds Vidora, a Pro video downloader Chrome extension for Vimeo, Bunny.net, HLS streams, and MP4. Based in Albuquerque, NM. We write about video tooling, streaming protocols, and Chrome extension engineering.

Related guides

V

Vidora Engineering

Vidora is built and maintained by RGC Digital LLC, a team of engineers who have been working on browser-based HLS, DASH, and MP4 video extraction since 2024. We test every method we publish on real streams from Vimeo, Bunny.net, Wistia, Apple HLS samples, and AES-128 encrypted CDNs.