
A video sitemap is an XML file that lists the videos on your site and hands Google the metadata it needs to find and understand each one. Skip it on a media-heavy site and Google may never notice videos that are loaded by JavaScript or buried inside a player, which means no video thumbnail in the results and no shot at video rich results.
It is a standard sitemap with one extra namespace bolted on: the <video:video> block. Inside each URL entry you declare the page the video lives on, plus the title, description, thumbnail, and a pointer to the actual video file or player. That gives the crawler a direct, structured route to media it would otherwise have to guess at.
What a real video sitemap looks like
Note the namespace declaration on the <urlset> line. Leave it out and Google treats the video tags as noise and ignores them.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://example.com/tutorials/onboarding</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumbs/onboarding.jpg</video:thumbnail_loc>
<video:title>Onboarding in Under Five Minutes</video:title>
<video:description>A quick walkthrough of first-run setup.</video:description>
<video:content_loc>https://cdn.example.com/video/onboarding.mp4</video:content_loc>
<video:player_loc>https://example.com/player?id=onboarding</video:player_loc>
<video:duration>273</video:duration>
<video:publication_date>2026-01-14T08:00:00+00:00</video:publication_date>
<video:family_friendly>yes</video:family_friendly>
</video:video>
</url>
</urlset>Content location vs player location
This is the fork that confuses most people. You must supply at least one of two pointers. video:content_loc is a direct link to the raw media file, the .mp4 or .webm itself. video:player_loc is the URL of the page or iframe that plays the video, used when you cannot or will not expose the raw file. If you self-host and can serve the file publicly, give content_loc, because Google prefers a direct route to the media. If your video sits behind a streaming service or a custom player, player_loc is your fallback. Supplying both is allowed and slightly safer, since it gives Google two ways in.
One trap worth calling out: videos hosted on a third-party platform that you merely embed are usually indexed through that platform, not your sitemap. A video sitemap earns its keep on videos you host and control, where Google would otherwise have no clean signal that the media exists.
The video-specific tags that matter
| Tag | Required? | What it does |
|---|---|---|
video:thumbnail_loc | Required | Preview image Google shows in results. Must be 160x90 to 1920x1080 px. |
video:title | Required | Should match the visible on-page title, not a keyword-stuffed variant. |
video:description | Required | Plain text up to 2,048 characters. No HTML. |
video:content_loc | One of these two | Direct URL to the raw video file (.mp4, .webm, etc.). |
video:player_loc | One of these two | URL of the embed player if you cannot expose the raw file. |
video:duration | Recommended | Length in seconds, 1 to 28800 (8 hours). |
video:publication_date | Recommended | W3C date format. Helps freshness signals. |
How to check it on your own site
- Open the sitemap URL in a browser. Confirm it returns real XML, not a 404 or a rendered HTML page.
- Check that the
xmlns:videonamespace appears on the<urlset>line. Missing namespace is the single most common reason video tags are silently dropped. - Submit it in Google Search Console under Sitemaps, then wait a day and confirm the status reads Success with a discovered-URL count that matches your video count.
- Run one video page through the URL Inspection tool and view the rendered HTML to confirm Google actually sees the video element.
- Load a
thumbnail_locURL directly. If it 403s or redirects, Google cannot fetch your thumbnail and the entry is useless.
Common mistakes and how to fix them
- Namespace missing. Add
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"to the root element. Without it every video tag is ignored. - Thumbnail behind auth or hotlink protection. Google's crawler is not logged in. Serve thumbnails from a publicly fetchable path with no referrer checks.
- Neither content_loc nor player_loc present. You need at least one. A sitemap entry with just a title and thumbnail gives Google nothing to point to.
- Sitemap title fighting the on-page title. Mismatched titles look manipulative. Keep them the same as what the visitor sees.
- Treating the sitemap as a ranking lever. It is discovery only. Pair it with on-page VideoObject schema so Google can understand each video, not just find it.
FAQ
Do I need a separate video sitemap, or can I add video tags to my main sitemap?
Either works. For a handful of videos, drop the <video:video> blocks into your existing sitemap and add the namespace. A dedicated video sitemap only earns its keep once you have enough video URLs that separating them makes the file easier to manage and debug.
Does a video sitemap guarantee my video shows up in search?
No. It improves discovery odds, nothing more. Google still decides whether to index the video and whether to show a thumbnail. Quality, page context, and matching structured data all feed that decision.
Is a video sitemap a replacement for VideoObject schema?
No, they do different jobs. The sitemap helps Google find the video; the schema helps it understand the video in the context of the page. Video rich results generally lean on the on-page markup, so run both.
Where do I submit or reference the video sitemap?
Submit it in Search Console under Sitemaps, and add a Sitemap: line to your robots.txt so other crawlers find it too. Both methods are fine; doing both costs nothing.
How is this different from an image or news sitemap?
Same base format, different namespace and tags. An image sitemap uses <image:image>, a news sitemap uses <news:news> with tight recency rules. Video uses <video:video> and carries the most metadata of the three.
Related: XML Sitemap, XML Sitemaps: The Complete Reference, Video SEO and VideoObject Schema
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







