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 SchemaThe 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 / 2000Describe 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.
{
"@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:
- Copy the JSON-LD code above
- Paste inside
<script type="application/ld+json"> - Add the script tag to your video page
<head> - Validate with Google Rich Results Test ↗
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.
Sample user query
“What does this video cover?”
Click Simulate to see the AI response without schema.
Click Simulate to see the AI response with schema.
How to install this schema on your site
Pick your platform. Every step includes a copy-paste-ready code block where it applies.
- 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
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
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
Publish the post. Open the live URL, view source, confirm the <script type="application/ld+json"> tag appears in the <head>.
- 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>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
- 1Generate VideoObject schema with your video's title, description, thumbnail (use YouTube's maxresdefault.jpg or upload your own), uploadDate, duration.
- 2Set embedUrl to https://www.youtube.com/embed/VIDEO_ID — don't use the watch URL.
- 3Skip contentUrl (YouTube doesn't expose it publicly).
- 4Paste the JSON-LD on the page where your video is embedded.
- 5Validate with Rich Results Test.
Self-hosted video
- 1Generate VideoObject with both contentUrl (direct MP4 URL) and embedUrl (your player URL if you have one).
- 2Upload your own custom thumbnail rather than relying on a video frame.
- 3Include duration precisely — even a 1-second difference from reality gets flagged by some validators.
- 4For large videos, consider also providing contentSize for bandwidth-conscious crawlers.
- 5Validate and monitor Search Console for video indexing status.
WordPress
- 1For posts with YouTube embeds, plugins like Rank Math auto-generate VideoObject schema from the embedded URL.
- 2For self-hosted videos or custom setups, use a schema plugin with a VideoObject template.
- 3Verify the plugin includes thumbnailUrl — some defaults skip it for YouTube embeds.
- 4Consistent uploadDate format across posts matters for schema validity.
- 5Validate several video posts to confirm.