ytdl-org/youtube-dl · error · ExtractorError
Wrong password
Error message
Wrong password
What it means
Raised by VimeoAlbumIE after the showcase auth endpoint (vimeo.com/showcase/<id>/auth) returns HTTP 401 during password verification. The extractor POSTs the supplied password plus the xsrft token and interprets any 401 as a rejected credential. It is expected=True so it surfaces as a clean user error.
Source
Thrown at youtube_dl/extractor/vimeo.py:1012
if try_get(album, lambda x: x['privacy']['view']) == 'password':
password = self._downloader.params.get('videopassword')
if not password:
raise ExtractorError(
'This album is protected by a password, use the --video-password option',
expected=True)
self._set_vimeo_cookie('vuid', viewer['vuid'])
try:
hashed_pass = self._download_json(
'https://vimeo.com/showcase/%s/auth' % album_id,
album_id, 'Verifying the password', data=urlencode_postdata({
'password': password,
'token': viewer['xsrft'],
}), headers={
'X-Requested-With': 'XMLHttpRequest',
})['hashed_pass']
except ExtractorError as e:
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 401:
raise ExtractorError('Wrong password', expected=True)
raise
entries = OnDemandPagedList(functools.partial(
self._fetch_page, album_id, jwt, hashed_pass), self._PAGE_SIZE)
return self.playlist_result(
entries, album_id, album.get('name'), album.get('description'))
class VimeoGroupsIE(VimeoChannelIE):
IE_NAME = 'vimeo:group'
_VALID_URL = r'https://vimeo\.com/groups/(?P<id>[^/]+)(?:/(?!videos?/\d+)|$)'
_TESTS = [{
'url': 'https://vimeo.com/groups/kattykay',
'info_dict': {
'id': 'kattykay',
'title': 'Katty Kay',
},
'playlist_mincount': 27,
}]View on GitHub (pinned to 956b8c5855)
Solutions
- Double-check and re-enter the correct --video-password value
- Confirm the password in a browser by logging into the showcase page manually, then retry
- Update to a recent youtube-dl/yt-dlp in case Vimeo changed the auth handshake
Example fix
# before youtube-dl --video-password hunter2 https://vimeo.com/album/12345 # after (use the real showcase password) youtube-dl --video-password 'C0rr3ct-P4ss' https://vimeo.com/album/12345
Defensive patterns
Strategy: try-catch
Try / catch
from youtube_dl.utils import ExtractorError
try:
ydl.extract_info(album_url)
except ExtractorError as e:
if 'Wrong password' in str(e):
# re-prompt, do not loop blindly
opts['videopassword'] = prompt_new_password()
raise # or retry once with new YoutubeDL(opts) Prevention
- Strip whitespace from passwords pasted from documents
- Verify the password in a browser before scripting the download
- Retry at most once per corrected password to avoid account lockouts
When it happens
Trigger: POSTing a wrong --video-password to https://vimeo.com/showcase/<id>/auth with X-Requested-With: XMLHttpRequest, causing the wrapped compat_HTTPError with code 401 to be converted to 'Wrong password'.
Common situations: Typo in the password; the password was rotated by the album owner; copying a password with trailing whitespace/newline from a shared document.
Related errors
- This album is protected by a password, use the --video-passw
- resp.get('userMessage') or resp['id']
- %s said: %s
- message
- self._parse_json(e.cause.read(), None)['errorMessage']
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/0b19eae3c5d7f0a8.
Report an issue: GitHub.