ytdl-org/youtube-dl · error · ExtractorError
This video is protected by a password, use the --video-passw
Error message
This video is protected by a password, use the --video-password option
What it means
Raised by VimeoBaseInfoExtractor._get_video_password when the target video presents a password form but the caller supplied no --video-password / videopassword param. It is a configuration precondition: the video is private-but-link-accessible and Vimeo requires the per-video password before serving data. expected=True.
Source
Thrown at youtube_dl/extractor/vimeo.py:79
self._set_vimeo_cookie('vuid', vuid)
try:
self._download_webpage(
self._LOGIN_URL, None, 'Logging in',
data=urlencode_postdata(data), headers={
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': self._LOGIN_URL,
})
except ExtractorError as e:
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 418:
raise ExtractorError(
'Unable to log in: bad username or password',
expected=True)
raise ExtractorError('Unable to log in')
def _get_video_password(self):
password = self._downloader.params.get('videopassword')
if password is None:
raise ExtractorError(
'This video is protected by a password, use the --video-password option',
expected=True)
return password
def _verify_video_password(self, url, video_id, password, token, vuid):
if url.startswith('http://'):
# vimeo only supports https now, but the user can give an http url
url = url.replace('http://', 'https://')
self._set_vimeo_cookie('vuid', vuid)
return self._download_webpage(
url + '/password', video_id, 'Verifying the password',
'Wrong password', data=urlencode_postdata({
'password': password,
'token': token,
}), headers={
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': url,
})View on GitHub (pinned to 956b8c5855)
Solutions
- Supply the password: --video-password SECRET on the CLI, or {'videopassword': '...'} in params for API use.
- If the password is correct but you still fail later, see the 'Wrong video password' error (check-password returning false).
- Store passwords out of shell history (prompt or netrc-style secret files) when scripting.
- For embed URLs, the password check goes through _verify_player_video_password — same param name applies.
Example fix
# before youtube_dl 'https://vimeo.com/12345678' # after youtube_dl --video-password 'hunter2' 'https://vimeo.com/12345678'
Defensive patterns
Strategy: validation
Validate before calling
params = ydl.params
if needs_password_check(url) and not params.get('videopassword'):
fail_fast('this video is password-protected: pass --video-password before extracting') Try / catch
try:
ydl.extract_info(url)
except ExtractorError as e:
if e.expected and '--video-password' in str(e):
prompt_and_set_video_password_then_retry_once()
else:
raise Prevention
- Collect per-video passwords alongside URL lists in job configuration.
- Prompt for the video password up front when you know the target is protected.
- Distinguish the video password from the account password in tooling.
When it happens
Trigger: Extracting a Vimeo URL whose page contains the pw_form / password check while self._downloader.params.get('videopassword') is None — i.e. forgot the option in CLI or API params.
Common situations: Event recordings, client-review uploads, and paid-course videos shared with a password; batch scripts not passing --video-password; API users omitting 'videopassword' in params.
Related errors
- Wrong video password
- No login info available, needed for using %s.
- This album is protected by a password, use the --video-passw
- Wrong password
- err.msg
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/e8d7732c610e20cb.
Report an issue: GitHub.