Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save devinschumacher/d28b419be2b349b9730dee1137b292da to your computer and use it in GitHub Desktop.
Save devinschumacher/d28b419be2b349b9730dee1137b292da to your computer and use it in GitHub Desktop.
How to Download Password Protected Vimeo Videos

How to Download Password Protected Vimeo Videos

Example 1

Steps

  1. visit page & enter the password
  2. find your chrome profile number
  3. construct the correct command

1. visit page & enter the password

Go to the Vimeo URL & enter the password.

2. find your chrome profile number

  1. visit chrome://profile-internals/
  2. expand your profile & grab the number
image

3. construct the correct command

You will need:

  1. https://vimeo.com/{VIDEO_ID}
  2. chrome profile number
  3. password

Your command syntax:

yt-dlp \
  'https://vimeo.com/{VIDEO_ID}' \
  --cookies-from-browser "chrome:Profile {NUMBER}" \
  --video-password '{PASSWORD}' \
  -N 20 \
  -S 'codec:avc,res,ext' \
  --merge-output-format mp4 \
  --remux-video mp4 \
  --postprocessor-args "ffmpeg:-movflags +faststart"

et voila!

image

it hath downloaded

image

Get the Vimeo Video Downloader 🪄🪄

If you want to skip all this hassle and just get a browser extension that lets you one-click download Vimeo videos from anywhere, get the Vimeo Video Downloader

👉 Click here to check it out


Example 2: Downloading Password-Protected Vimeo Videos with yt-dlp

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.

Get the Vimeo Video Downloader 🪄🪄

If you want to skip all this hassle and just get a browser extension that lets you one-click download Vimeo videos from anywhere, get the Vimeo Video Downloader

👉 Click here to check it out


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment