Static video player without VideoObject markup
structured_data_video_embed_without_videoobject · Opportunity
Add VideoObject when it accurately describes the video.
Severity: Notice. Opportunity: optional truthful video markup, not proof of an indexing or display problem.
Why it matters
VideoObject can help Google understand a video; a static embed alone does not establish a watch page or rich-result eligibility.
What to do
- Add VideoObject when it accurately describes the video.
- Follow Google’s required-property guidance, including name, thumbnailUrl and uploadDate.
- Run another full audit of the same URL. Adding a recognized VideoObject closes this page-level absence check only.
When to leave it as it is: Keep markup that accurately describes the page and its entities; this check does not require removing valid item-level or video markup.
What we read
Original HTML video src/source elements or exact supported YouTube/Vimeo iframe URL patterns, excluding inert and explicitly hidden content.
The source-bound complete supported JSON-LD, Microdata and RDFa inventory, including original JSON-LD roots that typed expansion may omit.
The original player/media declaration, byte ranges and recognized VideoObject count; no provider or video URL is fetched.
Example & evidence
Illustrative video-markup addition; required fields are examples.
<video src="/clip.mp4"></video><video src="/clip.mp4"></video>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","name":"Clip","thumbnailUrl":"https://site.example/thumbnail.jpg","uploadDate":"2026-10-05"}</script>Confirm & check again
Check for yourself: Compare the original captured declarations and static element byte ranges with the current page.
Check again: Full audit — Run another full audit of the same URL. The shared evaluator and lifecycle compare only sufficiently covered results; unknown or missing coverage never proves a fix.
Limits & sources
This does not prove rendered visibility, playback, watch-page status, required-property validity, per-video markup coverage or Google eligibility.
A recognized VideoObject closes the page-level absence predicate only on sufficiently covered input. Breaking JSON-LD, removing a type, foreign/unsupported contexts or partial source cannot prove a fix.
Supported iframe subset: www.youtube.com/embed/[11-character ID], www.youtube-nocookie.com/embed/[11-character ID], player.vimeo.com/video/[numeric ID]. Other iframe contents, srcdoc and video without usable media remain unknown.
Template/noscript/explicitly hidden elements do not nominate a page. A known player can retain a finding beside an unknown iframe, but that media limitation blocks reconciliation. Render shells/partial pages, lost Microdata/RDFa scope and unavailable structured source remain unknown.
Confidence: Medium Medium for the recorded static declarations and supported absence/conflict predicate. Rendering, playback and Google eligibility are not established.
Sources
- Google Search Central, Video structured data — VideoObject may describe a video and aid discovery on watch pages; it does not guarantee search display. Checked 5 October 2026.
- Google for Developers, YouTube embedded players — Official iframe embed path; the fixed single-video subset is used without playback claims. Checked 5 October 2026.
- YouTube Help, Embed videos and playlists — Privacy-enhanced embeds use the youtube-nocookie.com domain. Checked 5 October 2026.
- Vimeo, Vimeo Player API — Official pre-existing iframe example uses player.vimeo.com/video with a numeric video ID. Checked 5 October 2026.
Editorial review: 2 November 2026