
Uploading a video means you put the file on your own web server or in your site builder's media library, and the page plays it with the HTML <video> element. Embedding a video means the file stays on a video host such as YouTube, Vimeo, Wistia, or Mindstamp, and you paste a short snippet of code, usually an iframe, that loads the host's player inside your page. For most business websites, embed. The host converts the video into several sizes, streams the right one for each viewer's connection, and pays for the bandwidth. Upload the file yourself for short, silent clips such as a background loop, or when a policy says the file must stay on your servers. If the video needs to collect leads, embed an interactive player with the form inside it, because an uploaded file can play but cannot ask for an email or record who watched.
Uploading vs embedding a video: the difference
An uploaded video is one file that your server sends to every visitor. The page code is a few lines:
<video controls preload="metadata" poster="/images/demo-poster.jpg"> <source src="/media/demo.mp4" type="video/mp4">
</video>
The browser downloads that file and plays it at the one quality you exported. MDN's video element reference notes that browsers do not all support the same formats, so you may need several <source> files. Adaptive streaming, where the player switches quality as the connection changes, needs HLS or DASH. Safari plays HLS natively, and other browsers need a JavaScript library such as hls.js, so that part is yours to build and maintain.
An embedded video loads the host's player inside your page. A typical embed code is one iframe:
<iframe src="https://embed.mindstamp.com/e/VIDEO_ID" title="Product demo" loading="lazy" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>
The host stores the original, makes the smaller versions, and serves them from its delivery network. Swarmify's guide to video embed codes explains each iframe attribute and how to change the player's size. For a plain-language definition of the term, read what it means to embed a video.
Upload video vs embed: side-by-side comparison
| Question | Upload the file to your site | Embed from a video host |
|---|---|---|
| Who pays for bandwidth | Your web host, for every view | The video host |
| Quality on slow connections | One file at one quality, unless you set up HLS yourself | The player picks a quality to match each connection |
| Formats and devices | You export and test each format | The host converts the file for you |
| Page speed | Light until play if you set preload to none or metadata | Loads a third-party player; lazy loading or a click-to-load preview keeps it light |
| Look of the player | Your page, no outside branding | The host's player and its settings |
| Search | Google can index it if it can fetch the file | Google can index it on your page and on the host's page |
| Viewing data | Only what your own analytics tracks | The host's plays and watch time, and per-viewer answers on an interactive host |
| Forms and lead capture | Only beside the video, on the page | Inside the player, if the host supports it |
| Main risk | Slow playback and server load | You depend on the host's uptime, rules, and pricing |
Bandwidth: what self-hosting costs your server
YouTube recommends uploading 1080p video at 8 Mbps (YouTube Help), which makes a useful rate for a rough estimate. At 8 Mbps, a 3-minute video is about 180 MB: 8 megabits per second for 180 seconds is 1,440 megabits. If 1,000 visitors watch it to the end, your server sends about 180 GB. WP101's 2022 list of reasons not to host your own videos explains how a few viewers at once can overwhelm a shared server, and how host upload limits block large files.
Search: what Google says about each method
Google's video SEO best practices (updated December 2025) treat both methods as indexable. Google can find videos in <video>, <embed>, <iframe>, or <object> elements. When you embed from YouTube, Vimeo, or Facebook, Google may index the video on your page and on the platform's own page. Three points matter more than the method:
- Video features in Google need a watch page, a page whose main purpose is to show one video. Google gives a blog post that reviews an embedded video as an example of a page that is not a watch page.
- Google has to fetch the actual video bytes for previews and key moments. If you embed, check that your host allows this.
- Add
VideoObjectstructured data or a video sitemap so Google knows the title, thumbnail, and length.
When to upload the video file yourself
Uploading wins in a few specific cases.
Background and hero loops
A short, silent loop behind a headline does not need a player, controls, or analytics. Chrome's autoplay policy always allows muted autoplay and allows sound only in certain cases, such as after the visitor has interacted with your site. In WordPress, the Video block has Autoplay, Loop, Muted, and Play inline settings. Set its Preload option to None or Metadata: Auto downloads the whole file when the page loads, even if nobody presses play.
Product videos in an online store
Some store platforms host product video for you, so an upload there is hosted video. Shopify accepts product video uploads up to 1 GB and 10 minutes, at up to 4K, in .mp4, .mov, or .webm, and converts them to MP4 or HLS for delivery. It also accepts a YouTube or Vimeo link, and no other outside source (checked October 2026). Upload for short product clips. Use the embed for a longer demo that you also want on YouTube.
Files that must stay on your servers
Some organizations require that video files stay in company storage. You can still use a hosted-style player in that case. With Mindstamp's self-hosting option, the MP4 or HLS file stays on storage you control, such as Amazon S3 or your own server, and Mindstamp plays it from that address and adds the interactions and reports. The link must be public over HTTPS with no login or expiring token, and an HLS link needs your server to allow cross-origin requests from the player. Our guide to what self-hosting means covers the trade-offs.
When to embed the video
Embed in every other case, and especially in these:
- The video has sound and people watch it on purpose: a demo, a testimonial, a course lesson.
- Many visitors use phones or slow connections, so adaptive streaming matters.
- You need to know who watched and what they did.
- You want the same video on several pages, in email, and on social channels without managing copies.
Mobile layout matters for search as well as for viewers. Google uses the mobile version of a page for indexing and ranking, and its mobile-first indexing guide warns that a video can lose ranking if people have to scroll too far on a phone to find it. Pyxl's overview of mobile-friendly search ranking (2022) covers responsive layout basics. Give the embed a responsive width and keep it near the top of the content it supports.
How to embed a video on your website
- Upload the video to your host and check its privacy settings. A private video or an embed blocked by the host will not play on your page.
- Copy the embed code. On YouTube and Vimeo, select Share, then Embed (YouTube Help, Vimeo Help). In Mindstamp, open the video, select Share, choose an embed type under Embed (Responsive, Popout, or Basic iframe), and select Copy embed code.
- Paste the code into an HTML, code, or embed block. If you paste it into a normal text paragraph, the page shows the code as text.
- Make the player responsive, so it fills the column on any screen and keeps its 16:9 shape.
- Keep the page fast. Add
loading="lazy"to iframes below the fold, and on pages with several videos, use a click-to-load preview, which Lighthouse calls a facade: a static image that loads the real player only when someone clicks. - Publish, then open the page in a private window and on a phone, and play the video to the end.
Our guides on how to embed a video with HTML and the Vimeo embed code cover the code options in detail. For Mindstamp players, this help article on embed load time compares the Popout embed, which loads only a thumbnail and a small script, with the lazy-loaded Responsive embed.
How to embed a video on your website for lead capture
You have three places to ask for contact details:
- A form on the page next to the video. It works with any player, but the form does not know what the visitor watched.
- A gate in front of the page. Everyone who reaches the video is a lead, and fewer people reach it.
- A form inside the player. The viewer stays in the video, and the contact record carries what they watched, answered, and clicked.
An uploaded MP4 only supports the first two. The third needs an interactive player, and the player has to be embedded. If you download a Mindstamp video and upload the file to your site, you get the footage without the interactions or the reports, because both run in the hosted player.
To set up an in-video form with Mindstamp:
- Open the video and add lead capture. The form can appear before playback, at a chosen time, or after a specific interaction, and it can be required. Place a required form after the video has shown its value, for example before the second half of a webinar recording, so fewer viewers leave.
- Choose where leads go. Contacts, answers, and interaction events can pass to HubSpot, Zapier, or a webhook on supported plans. Mindstamp sends webhooks during background processing, so allow for a delay before a lead reaches your system.
- Publish the video and copy the embed code as described above. The embed help article lists each embed type.
- If your page URL already identifies the visitor, for example from an email link, pass URL parameters into the embed. The player reads name, email, phone, and custom_id as the viewer's identity and turns other parameters, such as utm_source, into variables. Keep private data out of URLs that people can see or share.
- Limit playback to your own site with allowed embed domains, available on Core and above. On any other domain the player shows an error.
- Test the form in a private window. If it does not appear, work through why lead capture is not showing.
The lead capture example shows the viewer's side, and our page on video lead capture for marketing covers campaign setups.
Common questions
What does embedding a video do?
It shows a video from another site inside your page. The visitor stays on your page, and the host delivers the video. Our post on what embed video means explains the term in more detail.
Is it better to upload or embed a video for SEO?
Neither method wins by itself. Google indexes both, and an embedded video can appear in results for your page and for the host's page. Results for the video depend more on a dedicated watch page, a video that is easy to find on a phone, structured data, and a file Google can fetch.
What is the difference between a direct link and an embed?
A direct link sends the viewer to the host's page, such as a YouTube watch page or a share page. An embed plays the video on your page. Use links in email, chat, and social posts, and embeds on your site. Our guide on how to share a video covers each channel.
Can I embed a video in a blog article?
Yes. Paste the embed code into an HTML or embed block in the article. The video supports the article, but Google does not treat the article as a watch page, so that page is not eligible for some of Google's video features. If the video itself should rank, give it its own page as well.
Does an embedded video slow down my page?
It can, because the browser loads the host's player. Lazy loading, a click-to-load preview, and one video per page keep the cost low.
Start with your highest-traffic page that has a video on it. Check where the file lives, how fast the page loads on a phone, and whether you know who watched. If the answer to the last question is no, embed an interactive version with a question or a form at the point where viewers decide what to do next.


