SchemaForAI
Ad

Free Video Schema Generator for AI Search

Generate JSON-LD VideoObject schema with thumbnail, duration, and upload date. Optimized for Google video rich results, ChatGPT, Perplexity. No sign-up.

Video Details

VideoObject Schema

The video title as it appears on your player.

AI engines quote the title verbatim in video carousels — make it specific and intent-matching.

Minimum 50 characters. AI engines parse this to match queries.

0 / 2000

Describe the visible content, not just the topic — AI engines use this to match video to query intent.

Full URL to the video's thumbnail image (1280x720 ideal).

Thumbnails appear directly in AI-generated video carousels. Use a high-resolution, representative still.

The date this video was first published.

Freshness matters for video — especially for tutorials about products that change versions.

ISO 8601 duration. PT8M30S = 8m 30s. PT1H15M = 1h 15m.

Duration is a filter signal — users searching 'quick tutorial' filter short videos, 'deep dive' long ones.

Direct URL to the video file (optional but preferred by Google).

Embeddable player URL (YouTube, Vimeo, etc.).

Providing an embedUrl lets AI answer surfaces inline-play your video, not just link to it.

JSON-LD
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Video title",
  "description": "Video description…",
  "thumbnailUrl": "https://example.com/thumb.jpg",
  "uploadDate": "2026-01-15",
  "duration": "PT8M30S",
  "contentUrl": "https://example.com/video.mp4",
  "embedUrl": "https://www.youtube.com/embed/VIDEO_ID"
}

AI Readiness Score

Get a 0–100 score showing how likely AI search engines are to parse and cite content from your page.

How to use this code:

  1. Copy the JSON-LD code above
  2. Paste inside <script type="application/ld+json">
  3. Add the script tag to your video page <head>
  4. Validate with Google Rich Results Test ↗
AI Simulator

See how ChatGPT answers — with and without your schema

Side-by-side comparison of what an AI assistant would return for a typical video query, with vs. without the structured data you generated above.

3 of 3 remaining today

Sample user query

What does this video cover?

Without Schema
Generic answer

Click Simulate to see the AI response without schema.

With Schema
Detailed citation

Click Simulate to see the AI response with schema.

Install Guide

How to install this schema on your site

Pick your platform. Every step includes a copy-paste-ready code block where it applies.

  1. 1

    Install and activate a schema plugin: "Rank Math SEO", "Yoast SEO Premium", or "Schema Pro". For straight JSON-LD injection without a full SEO plugin, "WPCode" (formerly Insert Headers and Footers) is the simplest option.

  2. 2

    In Rank Math: go to the post edit screen → Rank Math sidebar → Schema tab → Schema Builder → paste your JSON-LD. In Yoast Premium: the Schema tab auto-generates standard types; use the Custom Schema plugin add-on to inject custom types.

  3. 3

    For WPCode: Code Snippets → Add Snippet → Custom Code (HTML/PHP) → paste the full <script type='application/ld+json'> tag. Set Location to 'Site Wide Header' or 'Specific Post/Page' depending on scope.

    html
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [ /* your Q&A pairs */ ]
    }
    </script>
  4. 4

    Publish the post. Open the live URL, view source, confirm the <script type="application/ld+json"> tag appears in the <head>.

  5. 5

    Validate at search.google.com/test/rich-results.

What is VideoObject Schema?

VideoObject is the Schema.orgtype that describes a video file — its title, description, thumbnail, duration, upload date, and where it can be played back. It's how you tell search engines and AI systems about videos you publish, embed, or host. Without VideoObject schema, videos on your site show up as generic HTML page content; with it, videos are first-class entities that appear in video carousels, AI answer cards, and voice-assistant screen results.

Three fields do most of the work. thumbnailUrl is what AI engines render in video carousels. duration lets engines filter for \"quick" or "long" videos. uploadDate determines freshness. Add a named creator (via associatedMedia or a linked Person), a transcript, and you have a complete video entity that AI engines treat as a primary source.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to Brew the Perfect Pour-Over Coffee",
  "description": "A 4-minute tutorial covering grind size...",
  "thumbnailUrl": "https://example.com/coffee-thumb.jpg",
  "uploadDate": "2026-01-15",
  "duration": "PT8M30S",
  "contentUrl": "https://example.com/videos/coffee.mp4",
  "embedUrl": "https://www.youtube.com/embed/VIDEO_ID"
}
</script>
Ad

Why VideoObject Matters for AI Video Search

Video is one of the fastest-growing AI search surfaces. When a user asks ChatGPT "show me how to change a car tire" on a device with a screen, the response increasingly includes an inline video with a thumbnail, title, and play button. The videos that appear there are chosen primarily from VideoObject schema across the web — not from YouTube's native search. Publishing video without VideoObject schema is like publishing an article without a title: technically it exists, but it's not findable the way AI surfaces work.

What AI engines extract and weight:

  • Thumbnail-content match: Vision-capable AI engines (Gemini, GPT-4V) analyze whether your thumbnail visually matches your title and description. High match = high confidence = higher surfacing rate.
  • Duration-based filtering: "Quick 5-minute tutorials" filters to videos under PT5M. Videos with missing duration aren't excluded but can't qualify for these filters.
  • Upload-date freshness scoring: In fast-evolving topics (software tutorials, product reviews), a 2026 video dominates a 2022 video on the same topic even if the older one is higher quality.
  • Transcript-based semantic matching: Videos with transcripts in VideoObject.transcript match semantic queries far more accurately — the AI can find the exact moment relevant to the query.
  • Embed-enabled inline playback: Videos with embedUrl can render inline in AI answer cards. Videos without embedUrl force users to click out, which lowers click-through rate and downstream citation.
  • Publisher entity association: Videos associated with a declared Organization or Person publisher benefit from the publisher's overall authority. An unknown creator with strong schema can rise quickly by association.

The strategic implication for creators: investing in VideoObject schema (plus good thumbnails and transcripts) is often higher-leverage than producing more videos. A small catalog of well-marked-up videos can outperform a huge catalog of schema-less ones in AI surfaces.

VideoObject Best Practices

Use a 1280x720+ thumbnail

Lower resolutions render blurry in AI video carousels and have measurably lower click rates.

Match thumbnail to content visually

AI vision models cross-check. A clickbait thumbnail with unrelated content signals manipulation.

ISO 8601 duration, always exact

PT8M30S, not "8 minutes" or "~8 min." Exact machine-parseable format only.

Fresh uploadDate

Declare the real date. Don't re-upload old videos with fake dates — AI engines cross-check via YouTube and other platforms.

Include transcript when possible

Transcripts massively improve semantic search matching. Worth the 10 minutes of cleanup.

Provide both embedUrl and contentUrl when available

Embed for inline playback, content for direct download. Each serves different AI surfaces.

Associate with publisher Organization

Name a publisher (you) to benefit from your org-level authority.

One VideoObject per video

Don't try to describe a playlist as one VideoObject. Use ItemList or VideoObject array.

How to Install VideoObject Schema

Embedded YouTube video on your site

  1. 1Generate VideoObject schema with your video's title, description, thumbnail (use YouTube's maxresdefault.jpg or upload your own), uploadDate, duration.
  2. 2Set embedUrl to https://www.youtube.com/embed/VIDEO_ID — don't use the watch URL.
  3. 3Skip contentUrl (YouTube doesn't expose it publicly).
  4. 4Paste the JSON-LD on the page where your video is embedded.
  5. 5Validate with Rich Results Test.

Self-hosted video

  1. 1Generate VideoObject with both contentUrl (direct MP4 URL) and embedUrl (your player URL if you have one).
  2. 2Upload your own custom thumbnail rather than relying on a video frame.
  3. 3Include duration precisely — even a 1-second difference from reality gets flagged by some validators.
  4. 4For large videos, consider also providing contentSize for bandwidth-conscious crawlers.
  5. 5Validate and monitor Search Console for video indexing status.

WordPress

  1. 1For posts with YouTube embeds, plugins like Rank Math auto-generate VideoObject schema from the embedded URL.
  2. 2For self-hosted videos or custom setups, use a schema plugin with a VideoObject template.
  3. 3Verify the plugin includes thumbnailUrl — some defaults skip it for YouTube embeds.
  4. 4Consistent uploadDate format across posts matters for schema validity.
  5. 5Validate several video posts to confirm.

Frequently Asked Questions

What's the required ISO 8601 duration format?+
Duration uses the format PT[H]H[M]M[S]S where PT is mandatory and the number of hours/minutes/seconds is optional. PT8M30S means 8 minutes 30 seconds. PT1H15M means 1 hour 15 minutes. PT45S means 45 seconds. PT2H is 2 hours exactly. The P is required; the T separates date from time portions (for durations you always use T since you're specifying time, not dates). AI engines reject malformed durations silently — your schema will still render but won't qualify for duration-filtered queries. Validate with the Rich Results Test to be sure.
Do I need both contentUrl and embedUrl?+
No — but including whichever you have improves AI surfacing. contentUrl is the direct URL to the video file (example.com/videos/tutorial.mp4). embedUrl is the URL you'd iframe into a page (like https://www.youtube.com/embed/VIDEO_ID). For YouTube-hosted videos, you'll typically only have embedUrl (contentUrl isn't publicly accessible for YouTube content). For self-hosted videos, provide both. Google slightly prefers contentUrl when available, but both work. AI engines that support inline video playback (Perplexity's video cards, some ChatGPT surfaces) use embedUrl to render the player directly in their response.
How important is the thumbnailUrl?+
Critical. thumbnailUrl is what AI engines display in video carousels and answer cards. A blurry, low-resolution, or text-heavy thumbnail performs dramatically worse than a clean, high-contrast still showing the subject. Use 1280x720 (720p) at minimum; 1920x1080 (1080p) is ideal. AI vision models also analyze thumbnails for content match — a thumbnail showing coffee brewing for a video titled "Pour-Over Coffee Tutorial" builds content-thumbnail agreement confidence, which helps surfacing. Don't use generic YouTube auto-thumbnails; pick a representative frame or design a custom one.
Can I mark up a YouTube video on my own site?+
Yes, and it's valuable. If you embed a YouTube video on your article or landing page, add VideoObject schema pointing to that video on your own URL. This associates the video with your page in AI knowledge graphs, which can route some video-related query traffic to your page instead of YouTube. Be precise: the uploadDate, duration, and name should match the actual YouTube video. Don't re-claim the video — just describe it honestly. The value is in making your embed discoverable via schema that YouTube doesn't provide on your URL.
Should I mark up every video I embed?+
For videos you created or that are central to the page's content, yes. For tangentially-embedded videos (a YouTube link in a sidebar, unrelated promotional videos), no — adding schema for them dilutes your signal. The principle is: mark up video that the page is genuinely about or contains substantial commentary on. A page with five unrelated embedded videos shouldn't have five VideoObject schemas; pick the most relevant one.
Does VideoObject help with voice search?+
Yes, increasingly. Voice assistants on devices with screens (Google Nest Hub, Echo Show, Apple HomePod with screen) use VideoObject schema to pick videos when users ask "show me how to change a tire." Without schema, they often default to YouTube's native results — with schema on your page, you become a candidate. For voice-only devices, VideoObject doesn't directly help, but the related transcript (if you provide it via the transcript field) can be read aloud.
What about multiple videos on one page?+
Use an array of VideoObject schemas, each with its own name, description, thumbnailUrl, and contentUrl/embedUrl. This is common for tutorial roundups or video libraries. Google and AI engines handle the array correctly. For a page like "10 Best Pour-Over Coffee Tutorials," you'd have 10 VideoObject schemas, one per video, plus the overall page could be marked up as an ItemList or CollectionPage. Each video becomes individually addressable in AI queries, so a user asking about a specific video can be deep-linked to your page.
Do I need to transcribe my videos for schema?+
Not required, but highly recommended. The transcript field on VideoObject lets you paste the full transcript of the video. AI engines use transcripts to match video content to semantic queries ("find a video about how to debug memory leaks") far more accurately than they can from title and description alone. Transcripts also help accessibility and give search engines indexable text. Auto-generated transcripts from YouTube or Otter.ai are acceptable if cleaned up; raw auto-transcripts with uncorrected speech-to-text errors can hurt more than they help.

Related Schema Generators

Ad