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.
How to embed a Vimeo video
These steps follow Vimeo's help article on how to embed a video (checked October 2026):
- Sign in to Vimeo, go to your Library, and select the video to open its settings page.
- Select Share in the upper right corner.
- Select Embed at the bottom of the window.
- Under Size, keep Responsive, or choose Fixed and enter a width and height in pixels.
- Under Playback, turn on Autoplay, Mute, or Loop if you need them.
- Select Copy embed code.
- 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:
| Part | What it does |
|---|---|
src | The 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 src | The privacy hash that unlisted videos carry. Vimeo says it must stay in the URL for embeds to work. |
width and height | The player size in pixels, in fixed-size code only. |
allow | Gives 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. |
referrerpolicy | Controls what your page tells the player about where it is embedded. Domain-level privacy depends on it (see the troubleshooting table). |
title | Names 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).
| Feature | Free | Starter | Standard | Advanced | Enterprise |
|---|---|---|---|---|---|
| Embed a video | Yes | Yes | Yes | Yes | Yes |
| Player customization | No | Yes | Yes | Yes | Yes |
| Domain-level embed privacy | No | Yes | Yes | Yes | Yes |
| Player branding with your logo | No | No | Yes | Yes | Yes |
| Third-party player support (direct file links) | No | No | Yes | Yes | Yes |
| Vimeo interactive video | No | No | No | No | Yes |
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
| Parameter | What it does | Available on |
|---|---|---|
autoplay=1 | Starts playback when the player loads. Pair it with muted=1. | All videos |
muted=1 | Starts with the sound off. Viewers can turn it up. | All videos |
loop=1 | Plays the video again when it ends. | All videos |
autopause=0 | Lets this video keep playing when another Vimeo player on the page starts. | All videos |
title=0, byline=0, portrait=0 | Hide 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=1m30s | Starts playback at 1 minute 30 seconds. Add it at the very end of the URL, after a #. | All videos |
texttrack=en | Turns on English captions or subtitles by default. | Videos with captions |
dnt=1 | Stops the player from collecting session data and analytics. Some essential cookies stay on. | All videos |
playsinline=0 | Opens the video in fullscreen on phones instead of playing in the page. | All videos |
controls=0 | Hides every player element, including play and pause. | Paid plans |
background=1 | Autoplays, loops, mutes, and hides all controls. | Paid plans |
color=ff6600 | Sets the color of the player controls. The video's embed settings can override it. | Paid plans |
vimeo_logo=0 | Hides the Vimeo logo. | Paid plans |
speed=1 | Shows playback speed controls. | Paid plans |
quality=1080p | Sets 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
| What you see | Likely cause | Fix |
|---|---|---|
| "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 video | The 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 page | The code went into a text block. | Use an HTML, code, or embed block. |
| A collapsed player, or white space above and below it | The 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 nothing | The browser blocks autoplay with sound. | Add muted=1 and keep autoplay in the allow attribute. |
| You can watch the embed but viewers cannot | The video is set to Private. | Switch it to Unlisted or Embed only. |
| The video plays but Mindstamp buttons or questions never appear | The 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.
- 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).
- 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).
- Add interactions on the timeline and preview the video.
- 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
- Thumbnail Test's Vimeo statistics, a third-party roundup of Vimeo company figures (updated January 2026).
- JekyllPad for Astro, a Git-based headless CMS that edits the Markdown and MDX content of an Astro site, including pages that hold embed codes.


