Static video player without VideoObject markup

structured_data_video_embed_without_videoobject · Opportunity

Short answer

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

  1. Add VideoObject when it accurately describes the video.
  2. Follow Google’s required-property guidance, including name, thumbnailUrl and uploadDate.
  3. 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