Video content is exploding, and Google is giving videos more prominence in search results than ever. Video schema markup is essential for getting your videos discovered, whether they’re hosted on YouTube, Vimeo, or your own server.

This guide shows you how to implement Video schema for maximum visibility.

What is Video Schema?

Video schema (VideoObject) is structured data that describes video content on your page. It tells search engines:

  • Video title and description
  • Thumbnail image
  • Duration
  • Upload date
  • Content URL or embed URL
  • Transcript (optional)

With proper markup, your videos can appear in Google’s video carousel, regular search results with video thumbnails, and Google Discover.

Where Video Rich Results Appear

A horizontal scrollable carousel of videos that appears for video-intent queries.

Standard Search Results

Video thumbnails next to regular search listings.

Google Discover

Video content featured in users’ Discover feeds.

Google Images

Videos appearing in image search results.

Video Tab

Dedicated video search results.

Required Properties

Google requires:

  • name - Video title
  • thumbnailUrl - Video thumbnail image
  • uploadDate - When the video was first published

For best results, include:

  • description - Video description
  • duration - Video length (ISO 8601)
  • contentUrl - URL of the actual video file
  • embedUrl - URL for embedding the player
  • interactionStatistic - View count
  • expires - When the video is no longer available
  • hasPart - Key moments/chapters
  • publication - Broadcast information

Complete Video Schema Example

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to Set Up a Home Office in 10 Minutes",
  "description": "Quick guide to setting up a productive home office space. Learn the essentials for comfortable remote work.",
  "thumbnailUrl": [
    "https://example.com/photos/video-thumb-1x1.jpg",
    "https://example.com/photos/video-thumb-4x3.jpg",
    "https://example.com/photos/video-thumb-16x9.jpg"
  ],
  "uploadDate": "2025-01-15T08:00:00+00:00",
  "duration": "PT10M35S",
  "contentUrl": "https://example.com/videos/home-office-setup.mp4",
  "embedUrl": "https://example.com/embed/home-office-setup",
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": { "@type": "WatchAction" },
    "userInteractionCount": 52847
  },
  "regionsAllowed": "US,CA,GB,AU",
  "author": {
    "@type": "Person",
    "name": "John Productivity"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Productivity Tips",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  }
}

Duration Format

Use ISO 8601 duration format:

  • PT1M30S = 1 minute 30 seconds
  • PT5M = 5 minutes
  • PT1H = 1 hour
  • PT1H25M30S = 1 hour 25 minutes 30 seconds

Thumbnail Requirements

Size

  • Minimum: 160x90 pixels
  • Recommended: 1920x1080 (16:9 aspect ratio)

Quality

  • Clear, high-resolution images
  • Representative of video content
  • No misleading thumbnails

Multiple Sizes

Provide various sizes:

"thumbnailUrl": [
  "https://example.com/thumb-small.jpg",
  "https://example.com/thumb-medium.jpg",
  "https://example.com/thumb-large.jpg"
]

Key Moments (Chapters)

Help users jump to specific parts of your video:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Complete Photography Tutorial",
  "hasPart": [
    {
      "@type": "Clip",
      "name": "Introduction to Camera Settings",
      "startOffset": 0,
      "endOffset": 180,
      "url": "https://example.com/video#t=0"
    },
    {
      "@type": "Clip",
      "name": "Understanding Aperture",
      "startOffset": 180,
      "endOffset": 420,
      "url": "https://example.com/video#t=180"
    },
    {
      "@type": "Clip",
      "name": "Shutter Speed Basics",
      "startOffset": 420,
      "endOffset": 660,
      "url": "https://example.com/video#t=420"
    }
  ]
}

The startOffset and endOffset are in seconds.

Live Video Markup

For live streaming content:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Live Product Launch Event",
  "description": "Watch our new product launch live",
  "thumbnailUrl": "https://example.com/live-thumb.jpg",
  "uploadDate": "2025-01-20T14:00:00+00:00",
  "publication": {
    "@type": "BroadcastEvent",
    "isLiveBroadcast": true,
    "startDate": "2025-01-20T14:00:00+00:00",
    "endDate": "2025-01-20T16:00:00+00:00"
  }
}

YouTube Videos

For embedded YouTube videos, you can still add schema:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Video Title",
  "description": "Video description",
  "thumbnailUrl": "https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg",
  "uploadDate": "2025-01-15",
  "duration": "PT10M30S",
  "embedUrl": "https://www.youtube.com/embed/VIDEO_ID",
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": { "@type": "WatchAction" },
    "userInteractionCount": 10000
  }
}

Self-Hosted Videos

For videos on your own server:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Product Demo",
  "contentUrl": "https://example.com/videos/demo.mp4",
  "thumbnailUrl": "https://example.com/thumbs/demo.jpg",
  "uploadDate": "2025-01-15",
  "duration": "PT5M"
}

Ensure the video file is accessible to Googlebot.

Adding Transcripts

Transcripts help with accessibility and SEO:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Tutorial Video",
  "transcript": "Welcome to this tutorial. Today we'll learn about..."
}

For long transcripts, provide a URL to a separate transcript page.

Video on Product Pages

Combine Video with Product schema:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Running Shoes",
  "video": {
    "@type": "VideoObject",
    "name": "Running Shoes Review",
    "thumbnailUrl": "https://example.com/video-thumb.jpg",
    "uploadDate": "2025-01-15",
    "duration": "PT3M20S",
    "embedUrl": "https://example.com/embed/shoes-review"
  }
}

Common Mistakes

1. Missing Thumbnails

Always include a thumbnail URL. Videos without thumbnails rarely get rich results.

2. Wrong Duration Format

Use ISO 8601 format (PT5M30S), not “5:30” or “330 seconds”.

3. Inaccessible Content

Ensure your video files and thumbnails are accessible to Googlebot.

4. Missing Upload Date

Include the original upload date, not the page publish date.

5. Embedded Video Without Markup

Just embedding a YouTube video isn’t enough. Add schema markup.

Measuring Video SEO

Track these metrics:

Search Console

  • Video appearances in search
  • Clicks from video results
  • Impressions by query

YouTube Analytics

  • Search traffic sources
  • External traffic
  • Click-through rate

Site Analytics

  • Video page traffic
  • Video play rate
  • Watch time

Generate Your Video Schema

Use our free Video Schema Generator to create valid markup for your video content.

Enter your:

  • Video title and description
  • Thumbnail URL
  • Upload date
  • Duration
  • Content or embed URL

Get properly formatted JSON-LD ready to add to your video pages.

Conclusion

Video schema is essential for video content creators who want visibility in Google search. With video consumption growing rapidly, the opportunities for video-rich results are expanding.

Focus on quality metadata: accurate durations, compelling thumbnails, and detailed descriptions. Combined with proper schema markup, your videos will have the best chance of appearing prominently in search results.

Start with your most important videos, implement schema, and track your video search performance over time.


Need help with video SEO strategy? I can help you optimize your video content for search and implement proper schema markup. Get in touch for a consultation.