Video sitemaps and alternatives
A video sitemap is a sitemap with additional information about videos hosted on your pages. Creating a video sitemap is a good way to help Google find and understand the video content on your site, especially content that was recently added or that we might not otherwise discover with our usual crawling mechanisms.
Google recommends using video sitemaps, however we also support mRSS feeds.
Video sitemap best practices
Video sitemaps are based on generic sitemaps, so the general sitemap best practices also apply to video sitemaps. You can create a separate sitemap or mRSS feed just for video, or you can add video sitemap tags within an existing sitemap, whichever is more convenient for you.
Additionally, the following requirements apply to video sitemaps specifically:
- Don't list videos that are unrelated to the content of the host page. For example, a video that is a small addendum to the page, or unrelated to the main text content.
-
All files referenced in the video sitemap must be accessible to Googlebot. This means that
all URLs in the video sitemap:
- must not be disallowed for crawling by robots.txt rules,
- must be accessible without metafiles and without logging in,
- must not be blocked by firewalls or similar mechanism,
- and must be accessible on a supported protocol: HTTP and FTP (streaming protocols are not supported).
If you want to prevent spammers from accessing your video content at the
<player_loc>
or<content_loc>
URLs, verify that any bots accessing your server are really Googlebot.
For more tips about videos in Google Search, see our video best practices.
Example video sitemap
The following example shows a regular sitemap with video extension. It includes two video
entries nested in the single <url>
tag. The first
<video>
entry includes all the tags that Google can use while the second
only the required tags.
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://google.com/schemas/sitemap-video/1.1"> <url> <loc>https://example.com/videos/some_video_landing_page.html</loc> <video:video> <video:thumbnail_loc>https://example.com/thumbs/123.jpg</video:thumbnail_loc> <video:title>Grilling steaks for summer</video:title> <video:description> Alkis shows you how to get perfectly done steaks every time </video:description> <video:content_loc> http://streamserver.example.com/video123.mp4 </video:content_loc> <video:player_loc> https://example.com/videoplayer.php?video=123 </video:player_loc> <video:duration>600</video:duration> <video:expiration_date>2021-11-05T19:20:30+08:00</video:expiration_date> <video:rating>4.2</video:rating> <video:view_count>12345</video:view_count> <video:publication_date>2007-11-05T19:20:30+08:00</video:publication_date> <video:family_friendly>yes</video:family_friendly> <video:restriction relationship="allow">IE GB US CA</video:restriction> <video:price currency="EUR">1.99</video:price> <video:requires_subscription>yes</video:requires_subscription> <video:uploader info="https://example.com/users/grillymcgrillerson">GrillyMcGrillerson </video:uploader> <video:live>no</video:live> </video:video> <video:video> <video:thumbnail_loc>https://example.com/thumbs/345.jpg</video:thumbnail_loc> <video:title>Grilling steaks for winter</video:title> <video:description> In the freezing cold, Roman shows you how to get perfectly done steaks every time. </video:description> <video:content_loc> http://streamserver.example.com/video345.mp4 </video:content_loc> <video:player_loc> https://example.com/videoplayer.php?video=345 </video:player_loc> </video:video> </url> </urlset>
More examples
The following example demonstrates how to add a Vimeo video embed to a video sitemap:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://google.com/schemas/sitemap-video/1.1"> <url> <loc>https://example.com/videos/some_video_landing_page.html</loc> <video:video> <video:thumbnail_loc>https://example.com/thumbs/123.jpg</video:thumbnail_loc> <video:title>Lizzi is painting the wall</video:title> <video:description> Gary is watching the paint dry on the wall Lizzi painted. </video:description> <video:player_loc> https://player.vimeo.com/video/987654321 </video:player_loc> </video:video> </url> </urlset>
The following example demonstrates how to add a YouTube video embed to a video sitemap:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://google.com/schemas/sitemap-video/1.1"> <url> <loc>https://example.com/videos/some_video_landing_page.html</loc> <video:video> <video:thumbnail_loc>https://example.com/thumbs/345.jpg</video:thumbnail_loc> <video:title>John teaches cheese</video:title> <video:description> John explains the differences between a banana and cheese. </video:description> <video:player_loc> https://youtube.com/embed/1a2b3c4d </video:player_loc> </video:video> </url> </urlset>
Video sitemap reference
The video
tags are defined in the video sitemaps namespace:
http://google.com/schemas/sitemap-video/1.1
.
Each tag can only be added one time per video, unless otherwise specified.
To make sure Google can use your video sitemap, you must use the following required tags:
Required tags | |
---|---|
<video:video> |
The parent element for all information about a single video on the page specified by
the |
<video:thumbnail_loc> |
A URL pointing to the video thumbnail image file. Follow the video thumbnail requirements. |
<video:title> |
The title of the video. All HTML entities must be escaped or wrapped in a
|
<video:description> |
A description of the video. Maximum 2048 characters. All HTML entities must be escaped
or wrapped in a
|
<video:content_loc> |
A URL pointing to the actual video media file. The file must be one of the supported formats. Additional guidelines
|
<video:player_loc> |
A URL pointing to a player for a specific video. Usually this is the information
in the Additional guidelines
|
Additionally, the following optional tags may help Google better understand your videos and its properties:
Optional tags | |
---|---|
<video:duration> |
The duration of the video, in seconds. Value must be from |
<video:expiration_date> |
The date after which the video is no longer be available, in W3C format. Omit this tag if your video doesn't expire. If present, Google Search won't show your video after this date. For recurring videos at the same URL, update the expiration date to the new expiration date.
Supported values are complete date ( Example: |
<video:rating> |
The rating of the video. Supported values are float numbers in the range |
<video:view_count> |
The number of times the video has been viewed. |
<video:publication_date> |
The date the video was first published, in
W3C format.
Supported values are complete date ( Example: |
<video:family_friendly> |
Whether the video is available with SafeSearch. If you omit this tag, the video is available when SafeSearch is turned on. Supported values:
|
<video:restriction>
|
Whether to show or hide your video in search results from specific countries.
Specify a space-delimited list of country codes in
ISO 3166 format.
If there's no Attributes:
If the parent tag
Example: This example allows the video search result to be shown only in Canada and Mexico:
|
<video:platform> |
Whether to show or hide your video in search results on specified platform types. This is a list of space-delimited platform types. Note that this only affects search results on the specified device types; it doesn't prevent a user from playing your video on a restricted platform.
If there's no Supported values:
Attributes:
If the parent tag
Example: The following example allows users on web or TV, but not mobile
devices: |
<video:requires_subscription> |
Indicates whether a subscription is required to view the video. Supported values are:
|
<video:uploader> |
The video uploader's name. The string value can be a maximum of 255 characters. Attributes:
|
<video:live> |
Indicates whether the video is a livestream. Supported values are:
|
<video:tag> |
An arbitrary string tag describing the video. Tags are generally very short
descriptions of key concepts associated with a video or piece of content. A single
video could have several tags, although it might belong to only one category. For
example, a video about grilling food may belong in the "grilling" category, but could
be tagged "steak", "meat", "summer", and "outdoor". Create a new
|
Deprecated tags and attributes
We removed the following tags and attributes from our documentation:
<video:category>
, <video:gallery_loc>
, the
autoplay
and allow_embed
attributes of the
<video:player_loc>
tag, the <video:price>
tag and its
attributes, and the <video:tvshow>
tag and its attributes. See the
deprecation announcement
for more information.
Sitemap alternative: mRSS
While Google recommends using video sitemaps, we also support mRSS feeds.
Google supports mRSS, an RSS module that supplements the element capabilities of RSS 2.0. mRSS feeds are very similar to video sitemaps and can be tested, submitted, and updated just like sitemaps.
For more information about media feeds, see the official media RSS documentation.
mRSS Example
Here's an example of an mRSS entry that provides all the tags that Google uses.
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dcterms="http://purl.org/dc/terms/"> <channel> <title>Example MRSS</title> <link>https://example.com/examples/mrss/</link> <description>MRSS Example</description> <item xmlns:media="http://search.yahoo.com/mrss/" xmlns:dcterms="http://purl.org/dc/terms/"> <link>https://example.com/examples/mrss/example.html</link> <media:content url="https://example.com/examples/mrss/example.flv" fileSize="405321" type="video/x-flv" height="240" width="320" duration="120" medium="video" isDefault="true"> <media:player url="https://example.com/shows/example/video.swf?flash_params" /> <media:title>Grilling Steaks for Summer</media:title> <media:description>Get perfectly done steaks every time</media:description> <media:thumbnail url="https://example.com/examples/mrss/example.png" height="120" width="160"/> <media:price price="19.99" currency="EUR" /> <media:price type="subscription" /> </media:content> <media:restriction relationship="allow" type="country">us ca</media:restriction> <dcterms:valid xmlns:dcterms="http://purl.org/dc/terms/">end=2020-10-15T00:00+01:00; scheme=W3C-DTF</dcterms:valid> <dcterms:type>live-video</dcterms:type> </item> </channel> </rss>
mRSS reference
The full mRSS specification contains more optional tags, best practices, and examples.
To make sure Google can use your mRSS feed, you must use the following required tags:
Required tags | |
---|---|
<media:content> |
Encloses information about the video. Attributes:
For all of the other optional attributes and child fields of the
|
<media:player> |
You must specify at least one of
A URL pointing to a player for a specific video. Usually this is the information
in the |
<media:title> |
The title of the video. Maximum 100 characters. All HTML entities must be escaped or wrapped in a CDATA bock. |
<media:description> |
The description of the video. Maximum 2048 characters. All HTML entities must be escaped or wrapped in a CDATA block. |
<media:thumbnail> |
A URL pointing to a preview thumbnail. Follow the Video thumbnail requirements. |
Additionally, the following optional tags may help Google better understand your videos and its properties:
Optional tags | |
---|---|
<dcterms:valid> |
The publication and expiration date of the video. Here's the
Full specification of the Example: <dcterms:valid> start=2002-10-13T09:00+01:00; end=2002-10-17T17:00+01:00; scheme=W3C-DTF <dcterms:valid> |
<media:restriction> |
A space-delimited list of countries where the video may or may not be played, in
ISO 3166 format.
If there's no Attributes:
If the parent tag
Learn more about using country restrictions. Example: <media:restriction relationship="allow" type="country">us ca</media:restriction> |
<media:price> |
The price to download or view the video. Don't use this tag for videos that are
available without payment. More than one Attributes:
If the parent tag
|
Additional resources
Want to learn more? Check out the following resources: