How to Create a Video Sitemap

Video sitemaps help search engines discover and index video content. Here is when they actually matter and how to build one without drowning in metadata.

Victor Ijomah
By
Victor Ijomah
Victor Ijomah
Technical SEO Specialist
Victor Afamefuna Ijomah is a UK-based Technical SEO Specialist focused on how Google and AI engines like ChatGPT, Perplexity, and AI Overviews decide what gets discovered,...
- Technical SEO Specialist
Highlights
  • Video sitemaps help most when you self-host video; for YouTube embeds they add little because YouTube handles its own indexing.
  • Four elements are required: thumbnail_loc, title, description, and either content_loc or player_loc.
  • Thumbnails must be between 160 by 90 and 1920 by 1080 pixels, and duration must be between 1 and 28,800 seconds.
  • WordPress video sitemap support is thinner than image support; Rank Math's free module is the most accessible option.
  • Title and description in the sitemap should match what is visible on the page to avoid misleading-metadata signals.

Part of the SiteMap Series

In the previous lesson, you saw how image sitemaps work. Video sitemaps follow the same general pattern (an extension of the standard URL sitemap with additional metadata about each video on the page), but the scope is narrower, and the metadata burden is heavier.

Most sites that have “video” do not actually need a video sitemap. If your videos are YouTube embeds, YouTube handles their indexing through its own infrastructure, and your sitemap entry pointing to a YouTube URL does not add much. Video sitemaps really matter when you host the video files yourself: original video content served from your own domain, educational platforms, product videos hosted on your own CDN, and tutorial sites with native video.

This lesson covers when video sitemaps actually help (and when they do not), what the video sitemap XML elements look like (which is most of the work, because there are many), how to create one through the three main paths (WordPress with an SEO plugin, manually with XML, or with a static site generator), the protocol limits, common gotchas, and how to submit and validate your video sitemap.

When video sitemaps actually help

Video sitemaps help when the search engines need help finding and understanding your video content. That sounds obvious, but it has a specific implication: if the engines already know about the video through other means, the sitemap adds little.

Three scenarios where video sitemaps genuinely help.

You host the video files yourself

Your video lives on your own domain or your own CDN. The engines see the page, but they cannot easily extract video metadata from the HTML alone. A video sitemap tells them what the video is about, how long it runs, where the thumbnail is, and other details they would otherwise have to guess.

Your video is loaded by JavaScript and not in the initial HTML

Single-page apps, video players that initialise on user interaction, and lazy-loaded video. The engines crawling the rendered HTML may miss the video entirely. A sitemap declares it explicitly.

You publish video frequently and want faster indexing

A new product video, a daily news video, a recurring tutorial series. Sitemap-based discovery is faster than waiting for the engines to find the video through normal crawling.

When video sitemaps do not help much

Three scenarios where they do not help much.

Your videos are YouTube embeds

YouTube handles its own indexing through its parent company’s infrastructure. A video sitemap entry pointing to a YouTube URL adds little because YouTube already has the video indexed. The exception is when you want the engine to know which of your pages contains the embed, which is a smaller signal but real.

Your videos are decorative

Hero videos that autoplay without sound, background loops, and animated illustrations. The engines do not need to index these as searchable video content, and including them in a sitemap dilutes the signal for the videos that actually matter.

Your videos are behind authentication

Members-only content, paid courses, gated tutorials. The engines cannot access these to verify anything in the sitemap, so the entry sends a misleading signal.

For sites where video matters strategically and is self-hosted, the AI Search era adds another layer of relevance. Multimodal AI assistants pull video content into their answers when a query has a video-relevant component. The same metadata that helps Google Video Search also helps those assistants identify and surface your video at the right moment.

What video sitemap elements look like

This is where video sitemaps get heavier than image sitemaps. Video has more dimensions to describe, and the protocol reflects that. The good news is that only a few elements are required; the rest are optional, and you add them when they add value.

The minimum required entry looks like this:

<url>
  <loc>https://example.com/tutorials/css-grid/</loc>
  <video:video>
    <video:thumbnail_loc>https://example.com/thumbs/css-grid.jpg</video:thumbnail_loc>
    <video:title>CSS Grid in 10 Minutes</video:title>
    <video:description>A focused walkthrough of CSS Grid for beginners, covering the core concepts in under ten minutes.</video:description>
    <video:content_loc>https://example.com/videos/css-grid.mp4</video:content_loc>
  </video:video>
</url>

Four required elements.

  1. video:thumbnail_loc. The full URL of the video thumbnail image. The image must be at least 160 by 90 pixels and at most 1920 by 1080. JPEG, PNG, or WebP.
  2. video:title. The title of the video. Plain text, should match the title that is visible on the page where the video lives.
  3. video:description. A description of the video, up to 2,048 characters. Plain text, no HTML.
  4. Either video:content_loc OR video:player_loc. One of these two is required (you can include both). video:content_loc is the direct URL to the video file itself (the .mp4 or similar). video:player_loc is the URL of an embedded player (an iframe, for example) that plays the video. Use video:content_loc for self-hosted video files; use video:player_loc when the video is delivered through a player rather than as a direct file.

The protocol also defines a substantial set of optional elements. The ones worth knowing about:

  • video:duration. Length of the video in seconds. Must be between 1 and 28,800 (8 hours). Often the most useful optional element because it lets the engines show duration in search results.
  • video:publication_date. When the video was published, in W3C datetime format (2026-05-31T14:30:00+00:00). Helps the engines understand recency.
  • video:expiration_date. When the video should no longer be shown in search results. Useful for time-limited content like movie trailers, free trial videos, or limited-run promotional content. Same datetime format as publication_date.
  • video:family_friendly. Either yes or no. Defaults to yes if not specified. Setting this to no filters the video out of SafeSearch results.
  • video:rating, video:view_count. Aggregate rating (0.0 to 5.0) and view count. Useful for sites where these signals are real (user-rated content, view-counted videos) and meaningless to include otherwise.
  • video:tag. Topic tags for the video. You can include up to 32 of these. Useful for educational and tutorial content where topic categorisation matters.
  • video:live. Either yes or no. Marks the video as a live stream. Should be no unless you are actively streaming.
  • video:requires_subscription, video:price, video:platform, video:restriction. Subscription gating, pricing for paid video, platform targeting (web, mobile, tv), country restrictions. These are situational and only worth including if they genuinely apply.

A more substantive entry combining the most useful elements:

<url>
  <loc>https://example.com/tutorials/css-grid/</loc>
  <video:video>
    <video:thumbnail_loc>https://example.com/thumbs/css-grid.jpg</video:thumbnail_loc>
    <video:title>CSS Grid in 10 Minutes</video:title>
    <video:description>A focused walkthrough of CSS Grid for beginners, covering the core concepts in under ten minutes.</video:description>
    <video:content_loc>https://example.com/videos/css-grid.mp4</video:content_loc>
    <video:duration>612</video:duration>
    <video:publication_date>2026-05-15T09:00:00+00:00</video:publication_date>
    <video:family_friendly>yes</video:family_friendly>
    <video:tag>CSS</video:tag>
    <video:tag>CSS Grid</video:tag>
    <video:tag>Frontend</video:tag>
  </video:video>
</url>

You can list multiple <video:video> elements inside a single <url> block if the page has multiple videos. Most pages have one or zero videos, so this is less common than the multiple-images case in the previous lesson.

How to create a video sitemap

Three implementation paths, the same as image sitemaps.

1. Using a WordPress plugin

The plugin landscape for video sitemaps in WordPress is thinner than for image sitemaps. Most SEO plugins do not generate video sitemap entries automatically, because their video discovery logic cannot reliably extract metadata from typical embed code or shortcodes.

Yoast SEO does not include a video sitemap module in its core plugin. Yoast’s video sitemap functionality has historically lived in their separate Video SEO add-on, available as a paid product alongside the main Yoast plugin. Check Yoast’s current product page for the latest packaging.

Rank Math has a Video Sitemap module under SEO > Sitemap Settings > Video Sitemap. It supports self-hosted videos, YouTube and Vimeo embeds, and HTML5 video tags. Available in both the free and Pro versions.

All in One SEO includes video sitemap support in the Pro tier. The settings live under All in One SEO > Sitemaps > Video Sitemap.

If your current SEO plugin does not handle video sitemaps and you do not want to upgrade, two alternatives exist. The first is a dedicated video sitemap plugin (XML Sitemap & Google News plugin includes video sitemap support, as do a few others). The second is generating the video sitemap manually for the video URLs that matter, then submitting that separately.

2. Manually with XML

For sites with a manageable number of videos, the manual approach is straightforward and gives you full control over the metadata.

Start with the standard URL sitemap structure from Lesson 5 of Module 2: How to Build a Website Sitemap Manually with XML. Add the video namespace declaration to the opening <urlset> tag:

<?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">

Then inside each <url> block that has a video, add a <video:video> element with the required and any optional fields you want to include. Save the file, upload it, and submit through Search Console as covered in Module 2.

The manual path is workable for sites with up to a few dozen videos. Beyond that, the maintenance burden becomes serious because video metadata changes (titles get edited, descriptions get tweaked, durations get re-encoded). A generator that pulls from a live source is more sustainable for larger video libraries.

3. With a static site generator

If your site uses Next.js, Astro, Eleventy, or another static or hybrid framework, video sitemap generation is typically a configuration option in your existing sitemap plugin.

Next.js with next-sitemap. Use the custom transform function to scan your content collections for video metadata and emit the appropriate <video:video> elements. The configuration lives in next-sitemap.config.js.

Astro with @astrojs/sitemap. Extend the serialise option to include video entries from your content collections. Astro’s integration documentation has examples for adding custom namespaces.

Eleventy with @11ty/eleventy-plugin-sitemap. The plugin supports custom transforms similar to next-sitemap. Configure in your Eleventy config to scan front matter for video metadata.

For all three, store the video metadata in your content source (front matter, content collection schema, JSON file) and have the generator emit the appropriate XML from that source on every build.

Video sitemap limits and rules to know about

Specific rules apply to video sitemaps beyond the standard sitemap protocol limits.

  1. Thumbnail dimensions. Thumbnails must be at least 160 pixels wide by 90 pixels tall and at most 1920 by 1080. Thumbnails outside this range get rejected.
  2. Duration limits. The <video:duration> value must be between 1 and 28,800 seconds (8 hours). Videos shorter than 1 second or longer than 8 hours either omit the duration field or get rejected.
  3. Description length. The <video:description> element accepts up to 2,048 characters. Longer descriptions get truncated by the engines.
  4. Title and description must match the page. The video title and description in the sitemap should reasonably match what is visible on the page itself. Significant mismatches signal misleading metadata and can hurt the video’s chances of being indexed properly.
  5. Video files should be accessible to crawlers. Whether you use video:content_loc or video:player_loc, the URL must be fetchable by Googlebot and the other crawlers. Authentication walls, geo-blocking, and rate-limiting can all prevent the engines from verifying the video exists.
  6. Tag limit. A maximum of 32 <video:tag> elements per video. Use tags meaningfully; spammed tags get treated as low-quality signals.
  7. Standard sitemap limits still apply. The 50,000 URL and 50MB uncompressed file size limits still apply. Video metadata adds bulk faster than image metadata does, so video-heavy sitemaps may hit the 50MB ceiling sooner.

Common gotchas to avoid

Five issues come up regularly with video sitemaps.

1. YouTube embed URLs do not belong in your video sitemap

If your “video” is a YouTube embed, the YouTube video is indexed by Google through YouTube’s own infrastructure. Adding the embed URL to your sitemap as <video:content_loc> or <video:player_loc> does not improve YouTube’s indexing of the video, and it can confuse the engines about which property the video belongs to. The exception is when you genuinely want to signal that a specific page on your site contains the embed, in which case use <video:player_loc> pointing to the embed iframe URL and accept that the impact is small.

2. Thumbnails that fail dimension requirements get silently rejected

The 160 by 90 minimum and 1920 by 1080 maximum are strict. Thumbnails outside this range cause Search Console to flag the video entry as having an invalid thumbnail. The fix is to regenerate the thumbnail at a compliant size. Most video plugins handle this automatically, but custom implementations sometimes use the original full-resolution video frame as the thumbnail without resizing.

3. Duration mismatches cause indexing problems

If <video:duration> says the video is 300 seconds but the actual file runs 412 seconds, the engines treat this as misleading metadata. The fix is to extract duration from the actual video file rather than typing it manually. Tools like ffprobe (part of ffmpeg) read duration accurately from video files in a single command.

4. Content_loc URLs that require authentication are unreachable

If your video file sits behind a paywall, an authenticated CDN, or a geo-restricted region, the engines cannot fetch the URL to verify it. The video gets ignored. The fix is either to expose a freely-fetchable preview version for the engines, or to omit the <video:content_loc> and rely on <video:player_loc> for an embed that handles auth on its own page.

5. Family-friendly defaults trip up adult-content sites

The <video:family_friendly> element defaults to yes if not specified. For sites with adult or sensitive content, omitting this field means the video gets surfaced to SafeSearch-enabled users who probably should not see it. Setting it explicitly to no filters appropriately.

How to submit and validate your video sitemap

Submission follows the same pattern as image sitemaps.

If your video entries are inline within your standard URL sitemap, the standard submission from Lesson 7 of Module 2: How to Submit Your Website Sitemap to Google Search Console already covers them. If you have a separate video-only sitemap (common for video-heavy sites), submit it as a second sitemap through Search Console and Bing Webmaster Tools.

Validation has three video-specific checks beyond the standard sitemap validation from Module 2.

  1. First, confirm the video namespace is declared (xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"). Without it, the engines treat the video elements as invalid XML.
  2. Second, check that all <video:content_loc>, <video:player_loc>, and <video:thumbnail_loc> URLs return 200 status codes and that the thumbnail dimensions are within the protocol limits. Screaming Frog crawls these URLs alongside the page URLs when in sitemap mode.
  3. Third, monitor the Video tab in Search Console’s Search Results report once the sitemap has been processed. After a few weeks, you should see video search impressions for the videos in your sitemap. If the videos are submitted but not appearing in the Video report, that signals the engines are processing the sitemap but not finding the videos valid for indexing. Check thumbnail compliance and content accessibility first.

Where this leaves us

You can now create a video sitemap that surfaces self-hosted video content to search engines and to the multimodal AI assistants that pull video into their answers. The metadata burden is heavier than for image sitemaps, but the principle is the same: declare the video, add the metadata where it helps, keep the content accessible.

News sitemaps come next. They follow the same extension pattern but apply only to news publishers that meet Google News eligibility criteria. The metadata is different (publication name, language, and publication date are required), the cadence is much faster (news content needs near-instant indexing), and the strategic value is concentrated in the first few hours after publication.

Up next: How to Create a News Sitemap →


This is Module 3: Lesson 3 of The Sitemap Series, a Technical SEO series on sitemaps from first principles, built for the AI Search era.

Was this article helpful?
YesNo
Share This Article
Victor Ijomah
Technical SEO Specialist
Follow:
Victor Afamefuna Ijomah is a UK-based Technical SEO Specialist focused on how Google and AI engines like ChatGPT, Perplexity, and AI Overviews decide what gets discovered, understood, and cited. He holds an M.Sc in Digital Marketing from the University of Chester and is the editor of The Technical SEO Library, a publication on crawl systems, schema, entity SEO, AI crawler management, and the technical foundations of visibility in the AI Search era.
Leave a Comment