Technical SEO · Glossary · Updated Apr 2026

Video schema

Definition

Video schema is the schema.org/VideoObject structured-data type. It tells Google what a video is, when it was uploaded, how long it runs, what thumbnail to show, and where the playable file lives. Required for video rich-result eligibility, key-moments, and live-stream badges.

Find related

Long definition

VideoObject is the type Google reads to render the video preview in regular Search, in the Videos tab, in video carousels, and on Discover. Without it, a page with embedded video competes only on title and description; with it, the result carries a thumbnail, duration, and a play affordance.

Required fields, per Google's video structured-data guide: name, description, thumbnailUrl (one or more, ideally 16:9 and at least 1200px wide for Discover eligibility), and uploadDate (ISO 8601 with timezone, e.g. 2026-04-25T08:00:00+02:00).

Strongly recommended: duration (ISO 8601 like PT4M33S), contentUrl (direct link to the video file — .mp4, .webm), embedUrl (the iframe-embeddable player URL), and interactionStatistic for view count.

Rich-result enhancements layered on top:

  • Key moments. Add a hasPart array of Clip items, each with name, startOffset, and url carrying a #t= fragment. Google parses YouTube chapters automatically, so YouTube-hosted videos get key moments without explicit Clip schema.
  • Live streams. Add publication with BroadcastEvent and isLiveBroadcast: true. Use the Indexing API's video-live notification to push the live state in real time — without it, the LIVE badge appears late or not at all.
  • Family-friendly / age restrictions. contentRating flags content as for general or restricted audiences.

Common validation errors flagged in Search Console's Rich Results report:

  • uploadDate missing the time component or timezone.
  • thumbnailUrl returning a 4xx, behind a login wall, or smaller than the 60×30 px minimum.
  • duration formatted as 4:33 instead of ISO 8601 PT4M33S.
  • contentUrl pointing to a YouTube watch URL (not allowed) instead of the direct file or YouTube embedUrl.
  • Missing description on autogenerated VideoObject from CMS plugins.

The agreement principle applies here as everywhere: what's in the schema must match what users see. Mark up a duration of 10 minutes when the actual video is 30 seconds, and the page is at risk for a structured-data manual action.

Common misconceptions

  • "VideoObject guarantees a video rich result." It's an eligibility prerequisite, not a guarantee. Google decides per-query whether to render the rich result based on relevance and quality.
  • "Schema and a sitemap are interchangeable." They overlap but serve different roles. Schema provides per-page metadata; the video sitemap helps Google discover which pages contain videos in the first place. Both are recommended for serious video sites.
  • "Live-stream schema turns on by itself when you go live." No. The live state must be signaled, ideally through the Indexing API's video endpoint. Static schema with isLiveBroadcast: true left on after the stream ended creates contradictory signals.
  • "Video schema requires a self-hosted file." A YouTube embedUrl works. The schema validator accepts it; Google will render the rich result against it.