Skip to content
SEO Madmanby Adam Hafez

VideoObject schema: the required properties Google actually documents

Google documents three required VideoObject properties, not the four often claimed, plus exact date and duration formats and a rich-result caveat.

Published: · Read time: 3 minutes

Written byAdam Hafez
Share
Plain Markdown
Person filming with a camera mounted on a tripod under blue and red light

Key takeaways

  • Google's VideoObject documentation lists only three required properties: name, thumbnailUrl and uploadDate.
  • contentUrl and embedUrl are recommended properties, not required ones, and Google treats them as alternatives to each other rather than a mandatory pair.
  • uploadDate must be full ISO 8601 with a time and timezone offset, matching Google's own example of 2024-03-31T08:00:00+08:00.
  • duration uses ISO 8601 duration format, with Google's own example PT00H30M5S standing for thirty minutes and five seconds.
  • Google states plainly that valid structured data does not guarantee a rich result will appear in Search.

VideoObject is one of the schema.org types where a specific, wrong-sounding claim travels further than the source it is supposedly quoting. A four-property required list circulates in SEO advice: name, thumbnailUrl, uploadDate, and either contentUrl or embedUrl. Checked directly against Google’s own current VideoObject documentation, that fourth requirement does not exist. Getting this distinction wrong matters in practice, since a validator or a checklist that treats a recommended property as required will flag pages that are, by Google’s own definition, already compliant.

Google’s structured data page for Video draws a firm line between two tables, and only three properties sit in the required one: name, the video’s title; thumbnailUrl, a URL to the video’s unique thumbnail image; and uploadDate, the date and time the video was first published. Nothing else appears in that table.

contentUrl and embedUrl both live in the recommended table instead, and Google frames them as alternatives rather than a pair to satisfy together: it recommends providing contentUrl if possible, since that is the most effective way for Google to fetch the video content directly, and recommends falling back to embedUrl only if contentUrl isn’t available. The rest of the recommended table covers description, duration, expires, hasPart, ineligibleRegion, interactionStatistic, publication and regionsAllowed, none of which is required either. A page missing all of these still satisfies Google’s required set as long as name, thumbnailUrl and uploadDate are present and correctly formatted.

The two formats that fail silently

Both dated properties use ISO 8601, but in different notations, and a mismatch will not throw a JSON syntax error, it will simply be wrong data that Google either discards or misreads. uploadDate needs a full timestamp with a timezone offset; Google’s own documented example is 2024-03-31T08:00:00+08:00. A bare calendar date like 2024-03-31 is not the documented format, even though it happens to parse as valid JSON.

duration uses ISO 8601 duration notation instead of timestamp notation, and Google’s own example is PT00H30M5S, which its documentation glosses directly as “thirty minutes and five seconds.” The leading PT marks a time duration, H/M/S mark hours, minutes and seconds, and the value has no colons or slashes anywhere in it, a format this site’s own video schema uses the same way (see duration in the research collection’s video entries, expressed as PT12M30S for twelve minutes thirty seconds).

Google’s thumbnail guidance is worth treating as a required check even though thumbnailUrl itself is the only formally required property touching it: the file “must be accessible by Googlebot and Googlebot Images,” with Google specifically warning not to block it “with robots.txt or a login requirement,” and to keep it “consistently available at a stable URL.” A thumbnail that returns a login wall, a 404 after a redesign, or a redirect chain fails this requirement even when the thumbnailUrl string itself is well-formed.

Markup passing does not mean the video ranks

Google states its general caveat for structured data directly: it “does not guarantee that features that consume structured data will show up in search results,” even for markup that satisfies every documented required and recommended property. A VideoObject block that validates cleanly still depends on the underlying video file being reachable, the thumbnail staying accessible over time, and the page’s actual content matching what the markup asserts. None of that is something a schema check can confirm from the JSON-LD alone; it can only confirm the markup is internally correct.

Why we care

The gap between what circulates as VideoObject’s required properties and what Google’s own page actually requires is exactly the kind of error this site’s editorial rule exists to catch: name, thumbnailUrl and uploadDate are required, contentUrl and embedUrl are recommended alternatives to each other, and the date and duration formats have exact documented examples that are easy to get subtly wrong without a syntax error ever surfacing. This site’s JSON-LD validator already checks required and recommended properties for Article, Product, FAQPage, HowTo, Organization, BreadcrumbList and Recipe against Google’s own documentation the same way this piece did for Video; VideoObject is not one of its seven supported types yet, and adding it is a natural extension rather than a new category of check, since the underlying method, reading Google’s documented tables directly, is identical.

The evidence

Sample
N/A, this is a documentation review, not a data study

Hypothesis: VideoObject has real, specific, machine-checkable required properties that Google documents precisely, and getting the date or duration format wrong is a common, avoidable failure mode that a documentation review can catch before it ships.

Method: Reading Google's own current, official VideoObject structured data documentation directly, verified by fetching the live page rather than recalling it from memory or a third party's summary, and cross-checking the required-property claim against the page's own required and recommended property tables.

Findings

  • Google's required properties table for VideoObject lists exactly three entries: name (the video's title), thumbnailUrl (a URL to the video's unique thumbnail image) and uploadDate (the first-publish date and time).
  • contentUrl and embedUrl both sit in the recommended table, not the required one. Google's own guidance treats them as alternatives: provide contentUrl if possible since it is the most effective way for Google to fetch the video file, and provide embedUrl only if contentUrl isn't available.
  • A commonly repeated claim states the required set is name, thumbnailUrl, uploadDate, plus either contentUrl or embedUrl. That fourth requirement does not appear in Google's own required table; contentUrl and embedUrl are recommended, and neither is documented as mandatory.
  • uploadDate must be ISO 8601, and Google's own example is a full timestamp with a timezone offset: 2024-03-31T08:00:00+08:00, not a bare date.
  • duration also uses ISO 8601, in duration notation rather than timestamp notation. Google's own example is PT00H30M5S, which it glosses as thirty minutes and five seconds.
  • Google's thumbnail guidance states the file must be accessible by Googlebot and Googlebot Images, specifically warning not to block it with robots.txt or a login requirement, and to keep it consistently available at a stable URL.

Limitations: This is a documentation review, not a crawl study, so it cannot say how often real VideoObject markup gets these properties wrong in practice, only what Google's own current page requires and recommends. Google's own documentation is explicit that following it is not sufficient on its own: valid, complete markup does not guarantee a rich result will appear in Search, and the underlying video file, thumbnail image and page content must themselves be genuinely accessible and consistent with what the markup claims, which no amount of schema validation can confirm from the markup alone.

Sources

  1. 1.Video (VideoObject, Clip, BroadcastEvent) structured data - Google Search CentralPrimary
  2. 2.Video best practices - Google Search Central

Frequently asked questions

Are contentUrl and embedUrl required for VideoObject?

No. Google's own required properties table lists only name, thumbnailUrl and uploadDate. contentUrl and embedUrl are both recommended, and Google presents them as alternatives to each other, with contentUrl preferred because it is the more effective way for Google to fetch the video file directly.

What exact date format does uploadDate need?

Full ISO 8601 with a time and timezone offset. Google's own documentation example is 2024-03-31T08:00:00+08:00, not a bare calendar date, which is the format a validator should check for.

What exact format does duration need?

ISO 8601 duration notation, not a timestamp. Google's own example is PT00H30M5S, which it describes as thirty minutes and five seconds, the same pattern used elsewhere on this site's VideoObject-adjacent schemas.

Does valid VideoObject markup guarantee a video rich result?

No. Google states directly that it does not guarantee a rich result will appear even for markup that follows every documented guideline. The thumbnail, video file and page itself must also be genuinely accessible and match what the markup claims.

About the author

Adam Hafez
Adam Hafez

Founder

Founder, UpgradIQ, Inc.

Adam Hafez works on technical SEO and search measurement: how pages get crawled, indexed, ranked and now quoted by answer engines. He founded UpgradIQ, which reads Google Search Console and GA4 to tie ranking movement back to the changes that caused it. He publishes what the data supports and states the limits of it.

  • Technical SEO
  • Search Console and GA4 measurement
  • Answer engine optimization
  • Structured data

The briefing

One email when something in search actually changes. No digest padding.

Subscribe