How to Download

How to Download Password-Protected Vimeo Videos with yt-dlp

Vimeo can serve video in a few different ways:

Devin Schumacher
4 min read

How to Download Password-Protected Vimeo Videos with yt-dlp

Want the easy way? Try the Vimeo Video Downloader.

Vimeo can serve video in a few different ways:

  • HLS (.m3u8 playlists + .ts/fragmented MP4 segments)
  • DASH (playlist.json + .m4s segments)
  • Inline config (window.playerConfig JSON in the DOM)

1. Player Page vs. Manifests

Normally, you’d find the video ID by filtering for /config, .m3u8, or playlist.json in DevTools → Network. But:

⚠️ Sometimes Vimeo embeds don’t request /config, .m3u8, or playlist.json over the network. Instead, the player bootstraps with inline JSON in the DOM (often under window.playerConfig). In that case, you won’t see a manifest in the Network tab — but yt-dlp can still parse it cleanly if you point it at the /video/<ID> page.

Example player page:

https://player.vimeo.com/video/1097353467

This URL is stable and is what you should use with yt-dlp.


2. Password-Protected Videos

If the video is protected, yt-dlp will error with:

ERROR: This video is protected by a password, use the --video-password option

You must provide the password that unlocks the video on the embed page.


3. Correct yt-dlp Command

In zsh, watch out for special characters in passwords (like !). Wrap them in single quotes so the shell doesn’t interpret them.

yt-dlp \
  --video-password 'XXXXXXXXXXXX' \
  --referer 'https://shiatsuapos.com/55-convegno-nazionale-apos' \
  -N 20 -S 'codec:avc,res,ext' \
  --merge-output-format mp4 --remux-video mp4 \
  --postprocessor-args "ffmpeg:-movflags +faststart" \
  'https://player.vimeo.com/video/1097353467'

4. What Each Flag Does

  • --video-password → unlocks password-protected videos.
  • --referer → required when the video is embedded on another site.
  • -N 20 → downloads 20 fragments in parallel for speed.
  • -S "codec:avc,res,ext" → prefers AVC/MP4 over WebM/VP9.
  • --merge-output-format mp4 --remux-video mp4 → ensures clean MP4 output.
  • --postprocessor-args "ffmpeg:-movflags +faststart" → optimizes MP4 for instant playback.

5. Troubleshooting

  • Password wrong → Vimeo won’t serve the manifest, and yt-dlp will stall or error.

  • No manifests in Network → that’s expected for inline JSON embeds. Use the /video/<ID> URL with yt-dlp.

  • Private or login-only videos → add cookies:

    yt-dlp --cookies-from-browser chrome 'https://player.vimeo.com/video/<ID>'
    
  • Slow downloads → increase -N or install aria2c for external downloading:

    brew install aria2
    yt-dlp --downloader aria2c --downloader-args "aria2c:-x 16 -s 16 -k 1M" ...
    

Summary:

  • Sometimes Vimeo videos hide manifests (config, .m3u8, .json) and instead use inline playerConfig JSON in the DOM.
  • You won’t see streams in Network — but yt-dlp handles this automatically if you give it the player page URL.
  • For password-protected videos, add --video-password 'PASSWORD'.
  • Use concurrency (-N or aria2c) for faster downloads.

Here’s a write-up focused on your last question — how to add speed to your yt-dlp command when downloading a password-protected Vimeo video:


⚡ Speeding Up Password-Protected Vimeo Downloads with yt-dlp

By default, yt-dlp downloads HLS/DASH video one fragment at a time. For long Vimeo videos this can feel very slow. You can dramatically accelerate downloads using concurrency or an external downloader.


1. Baseline Command (Password + Referer)

yt-dlp \
  --video-password 'CNVG_55_APOS2025!' \
  --referer 'https://shiatsuapos.com/55-convegno-nazionale-apos' \
  'https://player.vimeo.com/video/1097413677'

That works, but it’s single-threaded.


2. Add Parallel Fragment Downloads

Use the -N flag (number of parallel fragment fetches):

yt-dlp \
  --video-password 'CNVG_55_APOS2025!' \
  --referer 'https://shiatsuapos.com/55-convegno-nazionale-apos' \
  -N 20 \
  'https://player.vimeo.com/video/1097413677'
  • -N 20 → up to 20 fragments at once (safe sweet spot: 8–32).
  • More concurrency = faster downloads, but too high can cause throttling or errors.

3. Use an External Downloader (aria2c)

For even better performance, let yt-dlp hand fragments to aria2c, a high-speed segmented downloader.

Install aria2 (macOS/Homebrew):

brew install aria2

Run with yt-dlp:

yt-dlp \
  --video-password 'CNVG_55_APOS2025!' \
  --referer 'https://shiatsuapos.com/55-convegno-nazionale-apos' \
  --downloader aria2c \
  --downloader-args "aria2c:-x 16 -s 16 -k 1M" \
  'https://player.vimeo.com/video/1097413677'
  • -x 16 → max 16 connections per file.
  • -s 16 → split into 16 segments.
  • -k 1M → piece size (1 MB chunks).

This usually maxes out your available bandwidth.


4. Keep MP4 Optimized

If you want to ensure smooth playback (seekable file):

yt-dlp \
  --video-password 'CNVG_55_APOS2025!' \
  --referer 'https://shiatsuapos.com/55-convegno-nazionale-apos' \
  -N 20 \
  --merge-output-format mp4 --remux-video mp4 \
  --postprocessor-args "ffmpeg:-movflags +faststart" \
  'https://player.vimeo.com/video/1097413677'
  • --merge-output-format mp4 --remux-video mp4 → ensures final MP4.
  • --postprocessor-args "ffmpeg:-movflags +faststart" → moves metadata to front for instant playback.