VideoObject schema

VideoObject is a Schema.org markup type for video content. It allows Google to understand video content and display it as rich results: carousels, previews, and enhanced snippets in search results.

In brief

VideoObject schema is a Schema.org markup type in JSON-LD format embedded on a page with video. It describes the video in a machine-readable way: name, description, thumbnail, duration, upload date.

What is VideoObject schema

VideoObject is a Schema.org markup type designed to describe video content on a page. It is embedded in HTML as JSON-LD and helps Google understand the video's content without having to play it.

Without VideoObject schema, Google can still discover and index videos, but with markup the chances of appearing in rich results (video carousels, enhanced snippets) are significantly higher.

For YouTube videos embedded via iframe, Google receives data directly from YouTube. VideoObject schema is still useful for enriching the page context.

Required VideoObject fields

name
The video title. Should match the heading visible on the page and in the video player.
description
Text description of the video content. Minimum 1 sentence; 2–5 is recommended.
thumbnailUrl
URL of the thumbnail image. Minimum 160×90 px. Must be accessible to Googlebot.
uploadDate
Publication date in ISO 8601 format (e.g., 2026-05-26T10:00:00+03:00).
contentUrl
Direct URL of the video file. Required for videos hosted on your server. For YouTube, use embedUrl.
embedUrl
URL of the embedded player (iframe src). For YouTube: https://www.youtube.com/embed/VIDEO_ID.
duration
Duration in ISO 8601 format: PT4M30S = 4 minutes 30 seconds. Displayed in the snippet.
expires
Date when the video content expires. After this date, Google will not show the video in rich results.
hasPart
Clips within the video with timestamps (Clip schema) — enables Key Moments in search results.
interactionStatistic
View count. Interaction type: UserInteraction: WatchAction.

VideoObject markup example

Markup is added to the page <head> or <body> in a <script type="application/ld+json"> tag. Minimal valid example: { "@context": "https://schema.org", "@type": "VideoObject", "name": "Video Title", "description": "Video description", "thumbnailUrl": "https://example.com/thumb.jpg", "uploadDate": "2026-05-26" }

Rich results available with VideoObject

  • Video carousel: a group of video results in the SERP for a topical query
  • Enhanced snippet: thumbnail + duration in a standard result
  • Key Moments: timestamps with navigation through video sections (requires Clip schema in hasPart)
  • Live Badge: LIVE label for live streams (BroadcastEvent field)

Common questions

Recommended for all videos you want to promote in search. If a video is a supporting page element with no independent search value, markup is optional.
Use the Google Rich Results Test (search.google.com/test/rich-results) — paste the page URL or code. The tool will show detected fields and errors.
Markup is necessary but not sufficient. Google decides whether to show rich results independently. Verify: thumbnail is accessible to Googlebot, the video page is indexable, and the content is current.
Yes, and it's recommended. Although Google receives YouTube video data directly, VideoObject schema on your page helps Google understand the page context and connect the video to its topic.
Direct contacts

Discuss your project?

Share your goals and website context — I will suggest a practical next step.