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.

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.