Movie Schema

How to implement schema.org/Movie markup for Google's movie carousel — the required vs. recommended properties, the ItemList wrapper the carousel actually needs, why the carousel is mobile-only with no desktop equivalent, what happened to the separate Critic Review layer that was deprecated, and who should actually bother implementing it.

First published: Jul 1, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #30 in Structured Data#60 in On-Page#271 in Technical SEO#378 on the site

Movie schema (schema.org/Movie) is structured data that powers a real, live Google feature — the movie carousel — but that carousel is mobile-only, with no desktop equivalent. Google requires just image and name, and recommends aggregateRating, dateCreated, director, and review; the director and aggregateRating are what make a carousel entry look like a movie rather than a generic page. One catch most guides skip: a standalone Movie object isn't the carousel by itself — Google combines it with ItemList markup on a summary page or an all-in-one page to make the carousel eligible. The confusion I most want to clear up: a separate 'Critic Review' ratings layer (shared with books, TV, and local businesses) was deprecated in 2025, but the movie carousel itself was not — and Google explicitly said the old Critic Review markup is harmless to leave in place, only the display was removed, no penalty. So Movie schema is not deprecated. It's just narrower and less prominent than Recipe or VideoObject, and worth it mainly for film review sites, streaming movie pages, and entertainment databases.

TL;DR — schema.org/Movie markup (usually JSON-LD) makes a film page eligible for Google’s movie carousel — but that carousel is mobile-only, with no desktop rich result at all. Google’s required properties are just image and name; recommended are aggregateRating, dateCreated, director, and review — and it’s director + aggregateRating that make an entry read as a movie rather than a generic CreativeWork. A standalone Movie object isn’t the carousel on its own, either — Google pairs it with ItemList markup (a summary page linking to detail pages, or one all-in-one page) to make the carousel eligible. The biggest myth to kill: Movie schema is not deprecated. A separate “Critic Review” ratings layer (shared with books, TV, and local businesses) was deprecated in 2025 — but the carousel survived, and Google explicitly said the old Critic Review markup is harmless to leave in place; only the display was removed, no penalty. Valid markup only earns eligibility; Google still decides whether to show the carousel. It’s a genuinely live feature, just a narrow one — worth it mainly for film review sites, streaming movie pages, and entertainment databases.

Evidence for this claim Schema.org Movie describes a movie and remains valid vocabulary independently of search-engine feature support. Scope: Schema.org Movie vocabulary. Confidence: high · Verified: Schema.org: Movie Evidence for this claim Google documents Movie as a supported item type within its carousel feature, subject to carousel requirements and no display guarantee. Scope: Current Google movie carousel eligibility rather than a universal standalone Movie card. Confidence: high · Verified: Google Search Central: Carousel structured data

Most guides list Movie among “supported types” and move on, which buries the single fact you most need to plan around: the feature Movie schema powers, the movie carousel, is mobile-only. Google’s docs say it directly — “The movie carousel is only available on mobile devices.” There is no desktop equivalent, no desktop card, nothing. If you build and test expecting desktop parity, you’ll conclude the markup “isn’t working” when it’s doing exactly what it can.

The carousel itself is a browsable row of movie entries on mobile Search — title, director, poster image, ratings — that a user can swipe through. It’s a real, listed Google feature (Google’s own search-gallery page describes “Movie carousels with director information”), but it’s narrower and less prominent than Recipe or VideoObject. Set expectations accordingly.

One more scoping fact most guides skip: a standalone Movie object, on its own, is not the documented carousel implementation. Google’s Carousel structured data guide lists Movie as one of the types you combine with ItemList markup to become eligible for the host carousel. The Movie properties below are what populate each carousel entry — the surrounding ItemList is what tells Google “this page is a list of movies” in the first place. More on the two ways to structure that below.

schema.org/Movie is a child of CreativeWork, so it inherits a lot of general properties — but Google’s requirements for the carousel are lean:

PropertyStatusWhat it’s for
nameRequiredThe movie title
imageRequiredPoster or still — high resolution, close to a 6:9 aspect ratio
directorRecommendedThe director’s name (Person)
aggregateRatingRecommendedAverage score + rating count — follows the Review snippet guidelines
dateCreatedRecommendedRelease date
reviewRecommendedIndividual review(s) — also follows the Review snippet guidelines

The two required fields (image, name) get you eligible; the recommended ones are what make an entry actually look and behave like a movie carousel card. director and aggregateRating are the differentiators — they’re what distinguish a movie entry from a generic CreativeWork, and they’re worth treating as effectively mandatory even though Google files them under “recommended.” A film page with just name and image is thin; one with director, release date, and a genuine aggregate rating is a real carousel candidate.

Two things the table doesn’t fully capture. First, the image has real shape requirements: Google’s docs say images “must have a high resolution and have a 6:9 aspect ratio,” and while Google can crop images that are close, ones that “largely deviate from this ratio aren’t eligible” — a random production still cropped to a square won’t qualify. Second, aggregateRating and review aren’t a free pass on format: Google explicitly points both back to the same Review snippet requirements used elsewhere on the site, so a rating that wouldn’t pass muster as a standalone review snippet doesn’t get a break just because it’s nested inside Movie.

Here’s the confusion I most want to clear up, because it gets mangled constantly. There were two distinct things in Movie’s orbit:

  1. The movie carousel — the mobile-only browsable feature. Still live.
  2. A separate Critic Review ratings layer — a way to mark up professional critic reviews and scores, shared across movies, TV, books, and local businesses. This was deprecated in 2025.

Google’s stated reasoning, per Search Engine Roundtable’s coverage of Google’s own announcement, was that after testing critic review markup with a group of site owners it found it wasn’t useful for the ecosystem at scale (relayed, paraphrased below in Quotes — I’m not quoting it as if fetched directly from a primary Google post). Two things matter about how Google handled the retirement:

  • It removed only the display, not a penalty. Google’s relayed guidance was that the deprecation doesn’t affect other review features and that you can leave the markup on your site so search engines can still understand the page. There is no downside to existing Critic Review markup — it simply stops surfacing.
  • It did not touch the movie carousel. The carousel is a separate feature and continued to work. Conflating the two into “Movie schema is dead” is wrong.

There’s a useful pattern here without over-editorializing: Google trimmed several narrow CreativeWork features across 2025 (Critic Review, and around the same window the Course Info type saw its dedicated doc redirect away). The related Critic Review doc URL now redirects to the general changelog — the same redirect pattern you see for retired features. But Movie’s core carousel survived while its adjacent review layer didn’t. Keep the two mental models separate: the carousel lives; the Critic Review display does not; existing Critic Review markup is harmless.

The two ways to build the surrounding ItemList

Since a lone Movie object isn’t the carousel by itself, you need ItemList structured data around it. Google documents two page patterns, and their ListItem payloads are genuinely different — mixing them up is an easy way to ship markup that validates but doesn’t carousel:

PatternWhat the page looks likeListItem payload
Summary page + detail pagesA hub page briefly covers each movie and links out to a dedicated page per filmJust position and url — the full Movie fields live on the linked detail page
All-in-one pageA single page contains every movie’s full informationposition, item.name, item.url, plus the complete Movie fields inline

Whichever pattern you use, Google requires that every page you link to from the ItemList — the detail pages, in the first pattern — carries its own valid, type-specific structured data. A missing or broken Movie block on a linked detail page breaks carousel candidacy for that one entry, not the whole list.

Who should implement this

Because the carousel is narrow and mobile-only, this isn’t a universal “add-it-everywhere” recommendation. It earns its keep on:

  • Film review sites — where director + genuine aggregate ratings are already the content.
  • Streaming services’ movie detail pages — the per-title landing pages.
  • Entertainment databases (IMDb-style) — where each film has a structured record.

If your site mentions a movie in passing inside an article, you don’t need Movie schema on that page — that’s an Article (or a general CreativeWork) with maybe a mentions/about link to the film, not a Movie page. Movie schema is for pages whose subject is a specific film.

Basic JSON-LD example

A minimal-but-real Movie entry — the two required fields plus the differentiating recommended ones:

{
  "@context": "https://schema.org",
  "@type": "Movie",
  "name": "The Midnight Archive",
  "image": "https://example.com/img/midnight-archive-poster.jpg",
  "dateCreated": "2025-10-17",
  "director": {
    "@type": "Person",
    "name": "Lena Ortiz"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.3",
    "ratingCount": "1284"
  }
}

This snippet is the Movie payload itself — for the carousel, it still needs to sit inside ItemList markup on either a summary page or an all-in-one page (see the two-pattern table above). Validate the finished markup with the Rich Results Test, and remember that a clean pass only means eligible — Google still decides whether to surface the carousel, and it only ever surfaces on mobile. For where Movie sits in the wider structured-data picture, see the broader Schema Markup and Structured Data hubs this article nests under; for the review side of things, the Review schema and AggregateRating schema siblings go deeper on the ratings themselves.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.