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: updating yt-dlp, --impersonate, --referer, cookies, or a proxy. We tested all of them.
- 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.
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 is tracked publicly as yt-dlp issue #17271, opened on 20 July 2026.
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, 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 residential proxy | 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 a clean residential address as it does from a datacenter.
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, and the issue is open.
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 in seconds.
Browse all converters