What Is Movie Schema? The Complete Guide (2026)

Saar Twito9 min read
Saar Twito
Saar TwitoFounder & SEO Engineer

Hi, I'm Saar - a software engineer, SEO specialist, and lecturer who loves building tools and teaching tech.

View author profile →

What Is Movie Schema?

Movie schema is a type of structured data — based on the Schema.org Movie vocabulary — that tells Google a page describes a specific film. When implemented correctly on movie review and listing sites, it enables Google's movie carousel: a rich result showing the film's poster, star rating, director, and a link to your review page. According to Google, movie carousels appear at the top of results for queries like "best sci-fi films 2026" or "Dune review."

Movie schema differs from VideoObject schema in a fundamental way: VideoObject describes a playable video file, while Movie describes a film as a creative work — a concept that can be reviewed, rated, and listed across multiple pages without being a video player itself.

TL;DR
  • Movie schemaenables Google's movie carousel for review and listing pages — showing poster, rating, and director in search.
  • Two required fields: name and image (6:9 aspect ratio preferred for carousel eligibility).
  • For carousels on listing pages, wrap each movie in an ItemListListItem structure. Each ListItem needs a unique url and a sequential position.
  • aggregateRating requires both ratingValue and at least one of ratingCount or reviewCount. Use a dot, not a comma, for decimal values.

Single Movie Page vs Movie Listing Page

Greadme validates two Movie schema patterns, each with a different structure:

Page typeSchema structureRich result
Individual movie review pageMovie directly at the root — with aggregateRating, review, director, etc.Movie rich result with rating and review snippet
Movie listing / top picks pageItemList → array of ListItem objects, each containing a Movie with a unique urlMovie carousel (requires at least 2 items)

Required Properties

PropertyTypeDescription
nameTextThe full title of the film.
imageImageObject or URLThe movie poster. A 6:9 aspect ratio is preferred for carousel eligibility. Greadme validates that all image URLs are accessible.

Recommended Properties

PropertyTypeNotes
dateCreatedDateThe film's release date in ISO 8601 format (e.g., 2026-10-05). Greadme warns if missing and errors if the format is invalid.
directorPerson or array of PersonThe film's director(s). Each Person object needs @type: "Person" and name. Greadme warns for missing @type or name.
aggregateRatingAggregateRatingOverall rating based on multiple reviews. Requires ratingValue and at least one of ratingCount or reviewCount. Use a dot for decimals — Greadme warns for comma separators (e.g., 4,4 instead of 4.4).
reviewReview or array of ReviewIndividual review(s) of the film. Each review requires author (with name under 100 characters) and reviewRating (with ratingValue).
urlURLThe canonical URL of the movie's page on your site. Required inside ListItem.item for carousel eligibility — must be unique per movie.

aggregateRating Rules

aggregateRating is what makes your star rating appear next to the movie title in search. The rules Greadme enforces:

  • ratingValue is required — an error if missing.
  • At least one of ratingCount (number of ratings) or reviewCount (number of written reviews) is required — an error if both are missing.
  • Use a dot as the decimal separator: 4.4, not 4,4 — Greadme warns on comma-separated decimals.
  • bestRating defaults to 5 and worstRating defaults to 1 if not specified. Set them explicitly if your rating scale is different (e.g., a 10-point scale).

Review Object Rules

Each Review object inside the review array has strict field requirements:

FieldRule
author.nameRequired. Must be under 100 characters. Must not contain promotional text (e.g., no % or discount) — Greadme errors on both conditions.
reviewRating.ratingValueRequired. Use a dot for decimals.
datePublishedRecommended. ISO 8601 format (e.g., 2026-03-01).
@typeShould be "Review". Greadme warns if missing or incorrect.

ItemList for Movie Carousels

To make a listing page (e.g., "Best Horror Films of 2026") eligible for Google's movie carousel, wrap each movie in an ItemList structure. Google requires at least 2 movies for a carousel to appear.

{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Movie",
        "name": "Dune: Part Three",
        "url": "https://example.com/movies/dune-part-three",
        "image": "https://example.com/img/dune-3.jpg",
        "dateCreated": "2026-11-20",
        "director": { "@type": "Person", "name": "Denis Villeneuve" },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.7,
          "ratingCount": 8420
        }
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "Movie",
        "name": "The Midnight Atlas",
        "url": "https://example.com/movies/midnight-atlas",
        "image": "https://example.com/img/midnight-atlas.jpg",
        "dateCreated": "2026-09-05",
        "director": { "@type": "Person", "name": "Ava DuVernay" },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.2,
          "ratingCount": 3150
        }
      }
    }
  ]
}

Key rules for the ItemList structure:

  • Each ListItem must have a position (integer, starting from 1). Greadme errors if missing or non-numeric.
  • Each ListItem.item.url must be unique. Greadme errors on duplicate URLs.
  • Positions should be sequential (1, 2, 3…). Greadme warns if a position doesn't match its array index.
  • Google recommends at least 2 movies for carousel eligibility. Greadme warns for single-item lists.

Single Movie Review Page Example

{
  "@context": "https://schema.org",
  "@type": "Movie",
  "name": "Dune: Part Three",
  "image": "https://example.com/img/dune-3-poster.jpg",
  "dateCreated": "2026-11-20",
  "director": { "@type": "Person", "name": "Denis Villeneuve" },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.7,
    "bestRating": 5,
    "worstRating": 1,
    "ratingCount": 8420
  },
  "review": {
    "@type": "Review",
    "author": { "@type": "Person", "name": "Sarah Miller" },
    "datePublished": "2026-11-21",
    "reviewBody": "A stunning conclusion to the trilogy.",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": 5,
      "bestRating": 5
    }
  }
}

5 Common Movie Schema Mistakes

1. Using VideoObject Instead of Movie

Movie schema and VideoObject schema are not interchangeable. Use Movie for review and listing pages about a film as a creative work. Use VideoObject for pages that embed a playable video file. A movie review page should use Movie, not VideoObject.

2. Using a Comma in ratingValue

"ratingValue": "4,7" is invalid. Greadme warns on comma decimal separators. Always use a dot: "ratingValue": 4.7 or "ratingValue": "4.7".

3. Missing ratingCount and reviewCount

aggregateRating requires at least one of ratingCount or reviewCount. A ratingValue alone is not enough — without a count, Google cannot verify the rating is based on real feedback. Greadme errors if both are absent.

4. Author Name Over 100 Characters or Containing Promotional Text

Review author names must be under 100 characters, and must not contain promotional language (characters like % or terms like discount). Greadme errors on both conditions. Use a real person or organization name.

5. Duplicate URLs in ItemList

Every movie in an ItemList carousel must point to a unique URL. Greadme errors on duplicate ListItem.item.url values. If two pages cover the same film, only one can appear in a single carousel.

How to Validate Your Movie Schema

Paste your movie page or listing page URL into Greadme to validate your Movie schema. Greadme automatically detects whether you're using a single Movie or a carousel ItemList and applies the appropriate rules for each. It validates image URLs, rating value format, review author constraints, ItemList position sequencing, and duplicate URL detection.