vimeotroubleshootingyt-dlp

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.

Vimeo Downloads Broke in July 2026 — The Fix That Actually Works
M
5 min read

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:

⚠️ web — "The web client only works when logged-in."
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:

AttemptResult
Updating yt-dlpAlready on the newest release — no change
--impersonate chromeIdentical 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 fileIdentical 401
Routing through a residential proxyIdentical 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:

0 / 5worked via vimeo.com/<id>
5 / 5worked via player.vimeo.com
0flags or tricks needed

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 haveWhat to use
vimeo.com/123456789player.vimeo.com/video/123456789
vimeo.com/123456789?share=copyplayer.vimeo.com/video/123456789
vimeo.com/channels/staffpicks/123456789player.vimeo.com/video/123456789
vimeo.com/groups/name/videos/123456789player.vimeo.com/video/123456789
vimeo.com/123456789/abcdef0123 (unlisted)player.vimeo.com/video/123456789?h=abcdef0123
💡 The long code after the video number on an unlisted link is a privacy hash, and it is what grants access. Keep it — move it to the end as ?h= and the unlisted video still resolves. Drop it and you get a 404.

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.

🎬 Vimeo to MP4 — paste any public Vimeo link, get the file. Also available as Vimeo to MP3 if you only want the audio from a talk or interview.

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?
No. We tested on 2026.07.04, the current stable release, and the error still occurs. This is a change on Vimeo's side, not a bug that a newer build patches.
Will --impersonate or --referer get around it?
No. We tried --impersonate chrome and a Vimeo referer header, and both returned the identical 401. The failure happens during OAuth token fetching, before any page request.
Can I just pick a different Vimeo client?
The only valid values are android, ios, macos and web. The web client replies that it only works when logged-in, and android and ios both say they are unable to fetch new OAuth tokens and work only with previously cached ones. That leaves no anonymous client, which is exactly why the embed URL is the workaround.
Do cookies help?
Not for anonymous extraction. We tested with a cookie file and got the same 401. Logging in with real Vimeo credentials is a separate path with its own account risk, and it is not needed if the video is public.
Why does the player URL still work?
player.vimeo.com serves the embed configuration that powers Vimeo videos embedded on other websites. That endpoint is designed to answer anonymous requests, so it never needed the OAuth token that was revoked.
Some videos still fail even with the player URL. Why?
Those are domain-restricted or embed-only videos — the uploader limited playback to specific websites. They return a 401 on the player URL too, or say Cannot download embed-only video without embedding URL. No tool can retrieve those, because access genuinely depends on the page that embeds them.
Try it yourself

Free file converters & video downloaders

No sign-up, no watermark, no email. Convert and download files online in seconds.

Browse all converters

Keep reading