Skip to content

Vimeo embed code: how to get it, customize it, and fix it

How to copy a Vimeo embed code, what each part of the iframe does, which embed settings your plan allows, and how to fix common embed errors.

To get a Vimeo embed code, open the video in your Vimeo library, select Share, choose Embed, and select Copy embed code. Paste the code into an HTML or embed block on your web page. The code is an iframe that loads the Vimeo player from player.vimeo.com, and Vimeo gives you a responsive version by default, so the player scales with the page. You change how the embedded player looks in the video's embed settings, or by adding parameters such as autoplay=1 to the iframe's src URL. If your embed shows an error or an empty box, the troubleshooter below points you to the first thing to check.

Pick the symptom you see: a privacy error, a collapsed player, or a video that plays while its interactive controls fail. Each answer jumps to the first check for that symptom. The simulation does not inspect a Vimeo account or change embed settings. Open the demo in a new tab.

How to embed a Vimeo video

These steps follow Vimeo's help article on how to embed a video (checked October 2026):

  1. Sign in to Vimeo, go to your Library, and select the video to open its settings page.
  2. Select Share in the upper right corner.
  3. Select Embed at the bottom of the window.
  4. Under Size, keep Responsive, or choose Fixed and enter a width and height in pixels.
  5. Under Playback, turn on Autoplay, Mute, or Loop if you need them.
  6. Select Copy embed code.
  7. Paste the code into an HTML, custom code, or embed block on your page, then publish and test the page in a private browser window.

Three rules trip people up. A video set to Private cannot play for anyone outside your Vimeo team, even when embedded. Vimeo's custom video URLs cannot be embedded. Changes you make later to the video's appearance apply to every existing embed, so you do not need to paste new code.

On WordPress you can skip the code: paste the video's Vimeo URL into an Embed block or a Vimeo block, according to the WordPress embeds documentation. In other site builders, use the block made for HTML or embeds. A normal text block shows the code as text.

Vimeo embed code example

This is the fixed-size embed code Vimeo returned for a public video (Big Buck Bunny, video ID 1084537) on October 1, 2026:

<iframe src="https://player.vimeo.com/video/1084537?app_id=122963" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share" referrerpolicy="strict-origin-when-cross-origin" title="Big Buck Bunny"></iframe>

The responsive code wraps the same iframe in a div with a top padding of 56.25%, which is 9 divided by 16, and stretches the iframe to fill it. It also loads Vimeo's Player SDK script, player.vimeo.com/api/player.js. Here is what each part of the iframe does:

Parts of a Vimeo iframe embed code
PartWhat it does
srcThe player address with the video ID. Player parameters go after the ?, joined with &. Vimeo adds app_id itself; leave it in place.
h= in the srcThe privacy hash that unlisted videos carry. Vimeo says it must stay in the URL for embeds to work.
width and heightThe player size in pixels, in fixed-size code only.
allowGives the player permission to use browser features such as autoplay, fullscreen, and picture-in-picture. Chrome's autoplay policy requires allow="autoplay" before a cross-origin iframe can autoplay with sound.
referrerpolicyControls what your page tells the player about where it is embedded. Domain-level privacy depends on it (see the troubleshooting table).
titleNames the frame for screen reader users, as described in the W3C technique H64. Change it if the video title does not describe the video.

Vimeo embed settings and options

The embed settings change the player for every embed of a video at once. Open the video, select Appearance, open the Embed tab, change the options under Branding, Engagement, Details, and Settings, and select Save (Vimeo Help, updated September 2026). The Settings group holds autoplay, muted audio, looping, the right-click menu, and whether viewers can skip ahead. To reuse the same choices on many videos, save them as an appearance preset.

Your Vimeo plan decides which options you see. Free accounts can set the player size, embed privacy, and autoplay, mute, and loop. Paid plans can also show or hide the Share, Like, and Watch Later buttons, the Vimeo logo, the play bar, volume, and fullscreen buttons, choose the end screen, and embed background or chromeless video (embedding features by plan type).

Vimeo embed features by plan, from Vimeo's plan comparison and pricing page (checked October 2026)
FeatureFreeStarterStandardAdvancedEnterprise
Embed a videoYesYesYesYesYes
Player customizationNoYesYesYesYes
Domain-level embed privacyNoYesYesYesYes
Player branding with your logoNoNoYesYesYes
Third-party player support (direct file links)NoNoYesYesYes
Vimeo interactive videoNoNoNoNoYes

Vimeo's help center also describes a Core plan that it is rolling out to some accounts, with domain-level privacy and an Embed only setting (article updated August 2026). If your account shows a different plan name, check its feature list on your plan page.

Vimeo Plus embed options

Vimeo Plus is a legacy plan that Vimeo no longer sells to new customers. Existing Plus accounts keep player customization and domain-level privacy, and Vimeo's parameter reference lists Plus among the accounts that can use paid-plan parameters such as controls and color. Plus does not include direct video file links, which Vimeo limits to Standard, Advanced, Enterprise, and the legacy Pro, Business, and Premium plans.

Vimeo embed parameters

Player parameters change one embed without touching the video's settings. Add them to the end of the src URL. The first parameter follows a ? and the rest follow &. Codes copied from Vimeo already contain a ? (for app_id, or h= on unlisted videos), so start your additions with &:

https://player.vimeo.com/video/1084537?app_id=122963&autoplay=1&muted=1&loop=1
Common Vimeo player parameters, from Vimeo's player parameters reference (updated November 2025)
ParameterWhat it doesAvailable on
autoplay=1Starts playback when the player loads. Pair it with muted=1.All videos
muted=1Starts with the sound off. Viewers can turn it up.All videos
loop=1Plays the video again when it ends.All videos
autopause=0Lets this video keep playing when another Vimeo player on the page starts.All videos
title=0, byline=0, portrait=0Hide the video title, the author's name, and the author's picture. Without them, the player follows the video's embed settings.All videos
#t=1m30sStarts playback at 1 minute 30 seconds. Add it at the very end of the URL, after a #.All videos
texttrack=enTurns on English captions or subtitles by default.Videos with captions
dnt=1Stops the player from collecting session data and analytics. Some essential cookies stay on.All videos
playsinline=0Opens the video in fullscreen on phones instead of playing in the page.All videos
controls=0Hides every player element, including play and pause.Paid plans
background=1Autoplays, loops, mutes, and hides all controls.Paid plans
color=ff6600Sets the color of the player controls. The video's embed settings can override it.Paid plans
vimeo_logo=0Hides the Vimeo logo.Paid plans
speed=1Shows playback speed controls.Paid plans
quality=1080pSets the default playback quality instead of Auto.Paid plans

"Paid plans" means Starter, Standard, Advanced, and Enterprise, plus the legacy Plus, Pro, Business, and Premium plans. The full parameter reference lists more, including pip, keyboard, and preload.

Autoplay, background, and chromeless players

Browsers block autoplay with sound. Chrome always allows muted autoplay, and Vimeo's help names Chrome, Safari, and Firefox as browsers with these restrictions. Use autoplay=1&muted=1 and let the viewer turn the sound on.

For a silent looping video behind a page header, use background=1. It turns on autoplay, loop, and mute and hides every control. To hide the controls without forcing autoplay, loop, or mute, use controls=0 instead, and start playback with autoplay=1, the keyboard, or the Player SDK (Vimeo Help).

Control where your Vimeo video can be embedded

In the Embed window, the Where can this be embedded? menu has three choices:

  • Anywhere lets anyone embed the video on any site.
  • Nowhere keeps the video on vimeo.com only, including for you and your team.
  • Specific domains plays the embed only on sites you list. It is on every plan except Free and Basic, and you can list up to 50 domains.

Type each domain, such as mysite.com, and select the plus button. Vimeo says a domain covers subdomains one level below it (learn.mysite.com) but not deeper levels (a.learn.mysite.com), and it does not accept wildcards. Add the domain your LMS or course platform serves lessons from too, because that is the domain the player sees.

The video's own privacy setting matters as well. Public, Unlisted, Password, and Embed only videos can all be embedded. Embed only hides the video from vimeo.com while it plays on other sites. Private videos play only for your Vimeo team. Unlisted, Password, and Embed only need a paid plan (Vimeo privacy settings).

Vimeo embed API

Vimeo offers two developer tools for embeds.

The Player SDK controls an embedded player from your page's JavaScript. Load player.js, pass the iframe to Vimeo.Player, then listen for events or call methods. The player.js documentation lists events such as play, timeupdate, and ended, and methods such as play(), pause(), and setCurrentTime():

<script src="https://player.vimeo.com/api/player.js"></script>
<script> const player = new Vimeo.Player(document.querySelector('iframe')); player.on('ended', () => console.log('Video finished')); player.getDuration().then((seconds) => console.log('Length in seconds:', seconds));
</script>

If the SDK creates the embed for an unlisted video, give it the full player URL with the h= hash instead of the video ID.

The oEmbed endpoint returns the embed code and video details as JSON from a video URL. Vimeo recommends it over building an iframe by hand (Vimeo oEmbed overview). Add responsive=true to get the responsive code, or player parameters such as autoplay=1 to get them written into the src:

https://vimeo.com/api/oembed.json?url=https://vimeo.com/1084537&responsive=true

The response includes html (the embed code), title, thumbnail_url, and duration in seconds.

How to fix common Vimeo embed problems

Vimeo embed errors and fixes, from Vimeo's player error and referrer troubleshooting articles (checked October 2026)
What you seeLikely causeFix
"Sorry, because of its privacy settings, this video cannot be played here."Domain-level privacy is on and the page's domain is not on the list, or the page stops the browser from sending its address to the player.Add the exact domain the viewer's browser shows. Remove <meta name="referrer" content="no-referrer"> or a Referrer-Policy: same-origin header from the page.
"This video is currently only available on Vimeo.com."Where can this be embedded? is set to Nowhere.Choose Anywhere or Specific domains.
"Sorry, this video does not exist." on an unlisted videoThe h= privacy hash is missing from the src.Copy the embed code again from Share.
"Oops! The embed code for this video is not valid!"Part of the code is missing or changed.Copy the whole code again and paste it without edits.
The code shows as text on the pageThe code went into a text block.Use an HTML, code, or embed block.
A collapsed player, or white space above and below itThe site builder overrides the iframe's size, or the padding wrapper does not match the container.Use the responsive code, or the CSS below.
Autoplay does nothingThe browser blocks autoplay with sound.Add muted=1 and keep autoplay in the allow attribute.
You can watch the embed but viewers cannotThe video is set to Private.Switch it to Unlisted or Embed only.
The video plays but Mindstamp buttons or questions never appearThe page embeds the Vimeo player, which has no Mindstamp layer.Replace it with the embed code from the Mindstamp video's Share page.

If the privacy error remains after you add the domain, Vimeo's referrer troubleshooting article explains how a site builder's preview domain or a referrer setting can hide your real domain. The player error list covers the rest.

Make a Vimeo embed responsive with CSS

To size the player with your own stylesheet, wrap the fixed-size iframe in a container and give the container the video's shape with the CSS aspect-ratio property:

.video-frame { aspect-ratio: 16 / 9; width: 100%; }
.video-frame iframe { width: 100%; height: 100%; border: 0; }

Put class="video-frame" on a div around the iframe and remove the iframe's width and height. Use 9 / 16 for a vertical video. For a player lower on the page, add loading="lazy" to the iframe so the browser waits until the reader scrolls near it, as the MDN iframe reference describes.

How to add questions and branching to a Vimeo video

Vimeo's own interactive video tools come with its Enterprise plan (pricing page, checked October 2026). Mindstamp adds questions (which pause the video), hotspots, and branches to video you already host on Vimeo. Mindstamp plays the Vimeo file in its own player, so it needs the video's direct file link instead of the embed code. That means your Vimeo account needs third-party player support, which starts on the Standard plan.

  1. In Vimeo, open the video's settings page, select the three dots in the top right, select Video file links, choose Play the video, and copy the HLS link or the 1080p MP4 link (Vimeo direct links).
  2. In Mindstamp, select New video, choose Vimeo, and paste the file link. A link to the Vimeo page will not work (video sources in Mindstamp).
  3. Add interactions on the timeline and preview the video.
  4. Publish, open Share, and copy the Mindstamp link or embed code. Put that on your page in place of the Vimeo code.

Plan for three differences before you switch an embed:

  • Vimeo's privacy and embed settings, including domain-level privacy, do not apply to direct file links, and those links do not expire. Protect the Mindstamp video with its own allowed embed domains (on supported plans), a password, or an access list.
  • If the Vimeo account drops below Standard, Vimeo turns off direct links and the video stops playing until the plan is upgraded again.
  • Vimeo counts plays in other players only as third-party impressions. The viewer-level data comes from Mindstamp's reports: who watched, how far they got, what they answered, and what they clicked.

Mindstamp does not import interactions you built in Vimeo. The Vimeo integration page and our Mindstamp and Vimeo comparison cover which tool fits which job.

Common questions

Can I remove the Vimeo logo from an embedded video?

Yes, on a paid plan. Turn the logo off in the embed settings or add vimeo_logo=0 to the embed URL. Showing your own logo in the player needs Standard or above.

Can I embed a private Vimeo video?

No. A Private video plays only for members of your Vimeo team. To keep a video out of public view and still embed it, use Unlisted, Embed only, or Specific domains.

Can I embed several Vimeo videos as a playlist?

Yes. Put the videos in a showcase and embed the showcase, as Vimeo's embedded video FAQ describes.

How do I share a Vimeo video without embedding it?

Send the video's link. Our guide to sharing a video compares links, email, phones, and social posts, and how to embed a video with HTML covers embeds from other hosts.

Sources and further reading