🎬 VideoObject Schema Guide

Implement structured data markup for videos to enhance search visibility and enable rich video snippets in Google results.

Why VideoObject Schema Matters

🎥

Video Rich Snippets

Videos appear with thumbnails directly in Google search results, increasing visibility and click-through rates.

📈

Higher CTR

Video thumbnails in search results can increase CTR by up to 157% compared to standard text results.

🔍

Video Carousel

Properly marked videos can appear in Google's video carousel feature for relevant queries.

⏱️

Key Moments

Enable seekable video previews showing specific timestamps and chapters in search results.

VideoObject Schema Basics

VideoObject is a schema.org type that helps search engines understand video content. It provides metadata about your video including title, description, duration, and thumbnail.

Implementing VideoObject schema using JSON-LD is the recommended approach by Google. Place the script in your page's <head> or <body>.

@type Required Must be "VideoObject"
name Required Title of the video
description Required Video description
thumbnailUrl Required URL to video thumbnail
uploadDate Required ISO 8601 date format
Basic VideoObject Schema
// JSON-LD in <script> tag
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Lion's Mane Growing Guide",
  "description": "Learn how to 
    cultivate lion's mane mushrooms 
    at home with this beginner-friendly 
    step-by-step tutorial.",
  "thumbnailUrl": "https://example.com/
    thumbnail.jpg",
  "uploadDate": "2024-01-15",
  "duration": "PT12M30S",
  "contentUrl": "https://example.com/
    video.mp4"
}

Required Properties

name

Required

The title of your video. Should be descriptive and include relevant keywords naturally.

"Psilocybin Microdosing: Complete Beginner's Guide"

description

Required

A detailed description of the video content. Include key topics covered and target keywords.

"This comprehensive guide covers microdosing protocols, dosage calculations, and safety considerations..."

thumbnailUrl

Required

URL to a representative image. Must be crawlable and at least 60x30 pixels (recommended 1920x1080).

"https://example.com/videos/thumbnails/microdose-guide.jpg"

uploadDate

Required

The date the video was first published. Use ISO 8601 format (YYYY-MM-DD).

"2024-03-15" or "2024-03-15T10:30:00+00:00"

contentUrl or embedUrl

One Required

Either the direct video file URL (contentUrl) or the embeddable player URL (embedUrl).

"https://youtube.com/embed/abc123"

duration

Recommended

Video length in ISO 8601 duration format. PT = Period Time, followed by hours, minutes, seconds.

"PT1H30M" (1hr 30min) or "PT10M45S" (10min 45sec)

Optional Properties

interactionStatistic

View count or other engagement metrics for social proof.

expires

Date when video will no longer be available (if applicable).

hasPart

Clip objects for key moments/chapters within the video.

publication

Broadcast event info for live streams or scheduled content.

regionsAllowed

Geographic regions where video can be watched.

requiresSubscription

Whether video requires a paid subscription to view.

transcript

Full text transcript of the video content.

inLanguage

Language of the video content (BCP 47 format).

Complete Implementation Example

Full VideoObject with Key Moments
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Reishi Mushroom Benefits - Complete Health Guide",
  "description": "Discover the scientifically-proven health benefits 
    of reishi mushrooms including immune support, stress reduction, 
    and sleep improvement. Expert-reviewed content.",
  "thumbnailUrl": [
    "https://example.com/thumbnails/reishi-1x1.jpg",
    "https://example.com/thumbnails/reishi-4x3.jpg",
    "https://example.com/thumbnails/reishi-16x9.jpg"
  ],
  "uploadDate": "2024-06-15T08:00:00+00:00",
  "duration": "PT15M30S",
  "contentUrl": "https://example.com/videos/reishi-benefits.mp4",
  "embedUrl": "https://youtube.com/embed/abc123xyz",
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": "https://schema.org/WatchAction",
    "userInteractionCount": 45230
  },
  "hasPart": [
    {
      "@type": "Clip",
      "name": "Immune System Benefits",
      "startOffset": 120,
      "endOffset": 300,
      "url": "https://example.com/video#t=120"
    },
    {
      "@type": "Clip",
      "name": "Sleep Quality Improvement",
      "startOffset": 480,
      "endOffset": 660,
      "url": "https://example.com/video#t=480"
    }
  ]
}
</script>

Implementation Notes

🖼️ Multiple thumbnails: Provide different aspect ratios (1x1, 4x3, 16x9) for optimal display across devices.
⏱️ Key moments: Use hasPart with Clip objects to enable seekable video previews in search results.
📊 View counts: InteractionStatistic adds social proof and can influence click-through rates.
🔗 Both URLs: Include contentUrl AND embedUrl when possible for maximum compatibility.

Testing & Validation

🔍

Rich Results Test

Google's official tool for testing structured data and previewing rich results.

Real-time validation
Rich result preview
Error highlighting
📋

Schema Markup Validator

Schema.org's validator for checking markup against the official specification.

Full schema validation
Property checking
Type verification
🔧

Search Console

Monitor video structured data performance and fix issues in Google Search Console.

Coverage reports
Enhancement tracking
Issue notifications

Video Platform Considerations

▶️

YouTube

Use embedUrl for YouTube videos. Google automatically extracts some data from YouTube.

🎬

Vimeo

Include both embedUrl and thumbnailUrl as Vimeo data isn't auto-extracted.

🏠

Self-Hosted

Use contentUrl for direct video files. Ensure videos are crawlable.

📡

Live Streams

Add BroadcastEvent for live content with scheduled start times.

VideoObject Implementation Checklist

📝 Required Fields

⚡ Recommended

🔍 Testing

✅ Best Practices