Vimeo Downloads Broke in July 2026 — The Fix That Actually Works
Every vimeo.com link now fails with 'Unable to download macos API JSON: HTTP Error 401'. Here is what broke, what does not fix it, and the one-line URL change that does — tested on real videos.
If you have tried to download anything from Vimeo since late July 2026, you have probably seen this:
ERROR: [vimeo] 1214942029: Unable to download macos API JSON:
HTTP Error 401: Unauthorized (caused by <HTTPError 401: Unauthorized>)
It looks like the video is private or gone. It is neither. The video is fine — the way tools ask Vimeo for it stopped working.
⚡ The 30-second answer
- What broke: Vimeo revoked the OAuth tokens behind yt-dlp's default macos API client.
- What does not fix it: --impersonate, --referer, cookies, or a proxy. We tested all of them. Since about 22 September the player URL also needs yt-dlp 2026.08.19 or newer with curl_cffi 0.16.1 or newer.
- What does fix it: use the embed player URL — player.vimeo.com/video/<id> instead of vimeo.com/<id>.
- Or skip it: paste the normal link into our Vimeo downloader — it rewrites the URL for you.
Update, 28 September 2026: from about 22 September the player URL started failing too, with
Unable to download webpage: HTTP Error 401: Unauthorized. This time it is a Cloudflare browser check on player.vimeo.com, and it looks at the TLS fingerprint of the request, not at your IP address. What fixed it for us was yt-dlp 2026.08.19 or newer together with curl_cffi 0.16.1 or newer, which gives yt-dlp a Chrome 150 fingerprint to present. Neither one works alone: yt-dlp 2026.07.04 switches curl_cffi 0.16 off, and curl_cffi 0.15 stops at Chrome 146, which the check refuses. On our worker the pair turned 0 of 7 failing videos into 14 of 14. Some videos still refuse, because they are private, embed-only or limited to logged-in viewers, and plain vimeo.com/<id> pages still need a login. Our Vimeo downloader runs the updated pair.
What actually broke #
yt-dlp talks to Vimeo through one of four API clients: android, ios, macos and web. For anonymous downloads it defaults to macos, because that was the one client that could fetch a fresh OAuth token without an account.
Vimeo stopped issuing those tokens. The request for one now returns 401 Unauthorized, and because the token comes first, extraction dies before the video is ever requested. This was reported publicly as yt-dlp issue #17271 on 20 July 2026 and closed the same day as a duplicate.
The other three clients cannot cover for it:
android and ios — "unable to fetch new OAuth tokens and is only intended for use with previously cached tokens."
So on a clean machine, with no account, there is no working client left. That is why this hit every downloader at once rather than one tool.
What we tested that did not work #
We ran each of these against real public Vimeo videos on yt-dlp 2026.07.04, then the current stable release:
| Attempt | Result |
|---|---|
| Updating yt-dlp | Already on the newest release — no change |
--impersonate chrome | Identical 401 |
--referer https://vimeo.com/ | Identical 401 |
--extractor-args "vimeo:client=web" | "only works when logged-in" |
--extractor-args "vimeo:client=android" | "unable to fetch new OAuth tokens" |
--extractor-args "vimeo:client=ios" | "unable to fetch new OAuth tokens" |
| Passing a cookie file | Identical 401 |
| Routing through a different IP address | Identical 401 |
That last one matters: it rules out the usual suspect. This is not your IP being blocked or rate-limited. It fails the same way from every address we tried.
The fix: use the embed player URL #
Every Vimeo video that can be embedded on another website is also reachable at a second address:
https://vimeo.com/1214942029 → fails with 401
https://player.vimeo.com/video/1214942029 → works
That endpoint serves the embed configuration — the data a Vimeo player needs when it loads inside somebody else's page. It is built to answer anonymous requests, so it never depended on the token that was revoked.
We measured it #
We pulled five videos straight from Vimeo Staff Picks and ran both URL forms against each:
Not a partial improvement, and not luck on a couple of files — a clean flip on every video we tried, repeated on a second batch a day later with the same result.
Converting the URL yourself #
Vimeo links come in more than one shape. All of these map onto the same player address:
| What you have | What to use |
|---|---|
vimeo.com/123456789 | player.vimeo.com/video/123456789 |
vimeo.com/123456789?share=copy | player.vimeo.com/video/123456789 |
vimeo.com/channels/staffpicks/123456789 | player.vimeo.com/video/123456789 |
vimeo.com/groups/name/videos/123456789 | player.vimeo.com/video/123456789 |
vimeo.com/123456789/abcdef0123 (unlisted) | player.vimeo.com/video/123456789?h=abcdef0123 |
What this does not fix #
Be clear about the limit, because it saves you an hour of trying.
Some Vimeo videos are domain-restricted: the uploader allowed playback only on their own website. Those return a 401 on the player URL too, or say Cannot download embed-only video without embedding URL. Access genuinely depends on the page that embeds them, so no tool retrieves those — not this workaround, not a paid service, not a browser extension.
Password-protected videos are the same story. Vimeo checks the password before serving anything.
If a video fails on the player URL, that is the real answer rather than another thing to work around.
If you just want the file #
We patched this into our own downloader the day we found it, so you do not have to think about URL forms at all — paste the normal vimeo.com link and it rewrites internally before fetching.
Will this keep working? #
Honestly: unknown. This is a workaround for a change Vimeo made deliberately, and the embed endpoint could tighten too. The proper fix belongs upstream in yt-dlp; issue #17271 was closed as a duplicate.
Until then the player URL is the difference between every Vimeo download failing and every public one working — which, when you are staring at a 401 on a video you can watch in another tab, is the difference that matters.
Frequently asked questions
Does updating yt-dlp fix the Vimeo 401 error?
Will --impersonate or --referer get around it?
Can I just pick a different Vimeo client?
Do cookies help?
Why does the player URL still work?
Some videos still fail even with the player URL. Why?
Free file converters & video downloaders
No sign-up, no watermark, no email. Convert and download files online, often within a minute.
Browse all converters