Google Search is an entry point for people to discover and watch videos. While Google
tries to automatically understand details about your video, you can explicitly provide
information, such as the description, thumbnail URL, upload date, and duration, by marking up
your video with VideoObject
. Videos can appear in
Google Search results, video search results, Google Images, and
Google Discover.

Based on how you mark up your content, your videos may also be eligible for the following video enhancements:
Video enhancements | |
---|---|
LIVE badge: Get a LIVE badge added to your video by marking your video with
Make sure you follow the LIVE badge guidelines and use the Indexing API to make sure Google crawls your page at the right time. |
![]() |
Clips (limited access): Help users quickly navigate to specific points in a
video.
|
![]() |
Video host carousel (limited access): Enable users to explore your video gallery
pages by adding ItemList structured data.
|
Examples
Standard video rich result

Here's an example of a single VideoObject
.
LIVE badge

Here's an example of VideoObject
and BroadcastEvent
in JSON-LD code.
Video host carousel (limited access)
Here's an example of VideoObject
and ItemList
structured data. This feature is currently
limited to a small set of providers.
Clips (limited access)

Here's an example of VideoObject
and Clip
in JSON-LD code. This feature is currently limited
to a small set of providers. If you would like to participate,
register your interest in our form.
AMP page with a video
Here's an example of a VideoObject
on an AMP page.
Enhance your videos on Google
Here's an overview of how to enhance your videos on Google:
- Ensure that Googlebot can crawl your video pages (meaning, your pages aren't protected by a robots.txt file or robots meta tag).
- Make sure you follow our guidelines.
- If you have several copies of the same video on your site hosted under different URLs, use canonical URLs on each copy of the page.
- Add structured data to your video pages.
- Test and preview your structured data.
- Check the index status of your URLs and request for your URL to be crawled with the URL inspection tool in Search Console. To confirm if crawlers are able to access structured data on your page, use the Live Test feature.
- Keep Google informed of new video pages or
changes to existing video pages. If you're implementing
BroadcastEvent
, use the Indexing API to make sure Google crawls your livestream video at the right time.
Monitor performance in Search
To understand how users interact with your videos, use the following Google tools:
- Use the Performance Report in Search Console to see how your videos appear in either general Search results or Discover. You can automatically pull these results with the Search Console API.
- Use the Rich result status report in Search Console to understand what Google could or could not read from your site, and troubleshoot rich result errors.
If you're experiencing unexpected fluctuations or inconsistencies in your traffic, use the troubleshooter to identify and resolve the issues.
Guidelines
To help Google better understand your video, make sure you follow the guidelines:
- Webmaster guidelines
- General structured data guidelines
- Video best practices
- Livestream guidelines (if applicable)
- Carousel guidelines (if applicable)
- Clip guidelines (if applicable)
- Best practices for marking timestamps on YouTube (if applicable)
LIVE badge guidelines
If you're adding BroadcastEvent
to livestream
videos, follow these guidelines:
- Don't use vulgar or potentially offensive language in the structured data.
- To make sure Google crawls your livestream video at the right time, use the
Indexing API. Call the API for the
following events:
- When the video goes live
- When the video has stopped streaming, and the page's markup has been updated
to indicate the
endDate
- Whenever a change has happened in the markup and Google needs to be notified
Best practices for marking timestamps on YouTube
If your video is hosted on YouTube, Google Search may automatically enable clips for your video based on the video description on YouTube, and you may not have to mark specific timestamps in your YouTube description. However, you can tell us more explicitly about the important points in your video and we will prefer that information. The following diagram shows how timestamps and labels in a YouTube video description can appear in Search results:

2. Label: The name of the clip.
Keep in mind the following guidelines when formatting timestamps and labels for YouTube descriptions:
- Format the timestamp in the following format:
[hour]:[minute]:[second]
. If there's no hour, you don't need to include it. - Specify the label of the timestamp on the same line as the timestamp.
- Place each timestamp on a new line in the video description.
- Link the timestamp to the specified point in the video.
- Make sure the label contains at least one word.
- List the timestamps in chronological order.
Clip guidelines (limited access)
If you're adding Clip
to mark video segments, follow these guidelines:
- The video must be publicly available to watch without a subscription.
- The video must have the ability to deep link into some point other than the start
point in the video URL. For example,
http://www.example.com/example?t=30
starts 30 seconds into a video. Clip
structured data must be added to a page where users can watch the video. It's a bad user experience to point users to a page where they can't watch the video.- The total video duration must be a minimum of 30 seconds.
- Make sure that no two clips on the same video defined on the same page share a start time.
- The video must have
VideoObject
structured data.
Structured data type definitions
This section describes the structured data types related to video features in Google Search. You must include the required VideoObject properties for your content to be eligible for display as a video rich result. You can also include the recommended properties to add more information about your content, which could provide a better user experience. In addition to VideoObject, you can add the following data types to enable video enhancements in Google Search:
BroadcastEvent
: Mark up livestream videos to enable a LIVE badge on your video.ItemList
: Mark up pages with a list of videos to enable a video host carousel.Clip
: Mark important segments in your video to help users quickly navigate to specific points in a video.
VideoObject
The full definition of VideoObject
is available at
schema.org/VideoObject.
If you don't include the required properties, Google may not be able to extract
any information about the video. You can also include the recommended properties to
add more information about your content, which could provide a better user experience.
Required properties | |
---|---|
description |
The description of the video. HTML tags are ignored. |
name |
The title of the video |
thumbnailUrl |
Repeated A URL pointing to the video thumbnail image file.
|
uploadDate |
The date the video was first published, in ISO 8601 format. |
Recommended properties | |
---|---|
contentUrl
|
A URL pointing to the actual video media file. Make sure to follow our Video best practices. |
duration |
The duration of the video in
ISO 8601 format.
For example, |
embedUrl
|
A URL pointing to a player for the specific video. Usually this is the information in
the Make sure to follow our Video best practices. |
expires |
If applicable, the date after which the video will no longer be available, in ISO 8601 format. Don't supply this information if your video does not expire. |
hasPart
|
If your video has important segments, nest the required <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "VideoObject", "name": "Cat video", "hasPart": { "@type": "Clip", "name": "Cat jumps", "startOffset": 30, "url": "http://www.example.com/example?t=30" } } </script> |
interactionStatistic |
The number of times the video has been watched. For example: "interactionStatistic": { "@type": "InteractionCounter", "interactionType": { "@type": "http://schema.org/WatchAction" }, "userInteractionCount": 12345 } |
publication
|
If your video is happening live and you want to be eligible for the LIVE badge, nest
the <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "VideoObject", "name": "Cat video", "publication": { "@type": "BroadcastEvent", "name": "First scheduled broadcast", "isLiveBroadcast": true, "startDate": "2018-10-27T14:00:00+00:00", "endDate": "2018-10-27T14:37:14+00:00" } } </script> |
BroadcastEvent
To be eligible for display with a LIVE badge, nest the following
properties in your VideoObject. While
BroadcastEvent
properties aren't required, you must add the following properties if you
want your video to display with a LIVE badge.
The full definition of BroadcastEvent
is available at
schema.org/BroadcastEvent.
Required properties | |
---|---|
publication
|
Describes when the video is to be streamed live. Can be a list or a single instance. |
publication.endDate
|
Time and date of when the livestream ends or is expected to end, in ISO 8601 format. It is required to provide the If |
publication.isLiveBroadcast |
Boolean Set to true if the video is, has been, or will be streamed live. |
publication.startDate
|
Time and date of when the livestream starts or is expected to start, in
ISO 8601 format. If
|
ItemList (limited access)
To help Google better understand your video gallery pages, add the following ItemList
properties in addition to VideoObject properties. For more
information about carousels, see Carousel.
The full definition of ItemList
is
available at schema.org/ItemList.
Required properties | |
---|---|
itemListElement |
Annotation for a single item page. Each |
ListItem.position |
Ordinal position of the item page in the list. For example: "itemListElement": [ { "@type": "VideoObject", "position": 1, ... other VideoObject properties ... }, { "@type": "VideoObject", "position": 2, ... other VideoObject properties ... } ] |
ListItem.url |
The canonical URL of the item page. Every item should have a unique URL. |
Clip (limited access)
To be eligible for clips, nest the following properties in your
VideoObject
. While
Clip
properties aren't required, you must add the following properties if you
want your video to display with video segments.
The full definition of Clip
is
available at schema.org/Clip.
Required properties | |
---|---|
name |
A descriptive title for the content of the clip. |
startOffset |
The start time of the clip expressed as the number of seconds from the beginning of the work. |
url |
A URL that points to the start time of the clip. The clip URL must point to the same URL path as the video with additional query parameters that specify the time. For example, the following URL means the video starts at 2:00 minutes: "url": "https://www.example.com/example?t=120" |
Recommended properties | |
---|---|
endOffset |
The end time of the clip expressed as the number of seconds from the beginning of the work. |