Video schema
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
hasPartarray ofClipitems, each withname,startOffset, andurlcarrying a#t=fragment. Google parses YouTube chapters automatically, so YouTube-hosted videos get key moments without explicit Clip schema. - Live streams. Add
publicationwithBroadcastEventandisLiveBroadcast: 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.
contentRatingflags content as for general or restricted audiences.
Common validation errors flagged in Search Console's Rich Results report:
uploadDatemissing the time component or timezone.thumbnailUrlreturning a 4xx, behind a login wall, or smaller than the 60×30 px minimum.durationformatted as4:33instead of ISO 8601PT4M33S.contentUrlpointing to a YouTube watch URL (not allowed) instead of the direct file or YouTubeembedUrl.- Missing
descriptionon 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: trueleft on after the stream ended creates contradictory signals. - "Video schema requires a self-hosted file." A YouTube
embedUrlworks. The schema validator accepts it; Google will render the rich result against it.
Continue exploring