---
title: "schema.org Types Cheatsheet"
slug: "schema-org-types"
category: "cheatsheets"
tags: ["cheatsheets", "schema-org", "seo", "rich-results"]
status: "stable"
last_updated: 2026-08-14
summary: "schema.org types most worth shipping with required and recommended fields, plus what each one unlocks (rich results, knowledge panels, sitelinks)."
related:
  [
    "[[seo/structured-data]]",
    "[[seo/schema-markup-deep]]",
    "[[seo/technical]]",
    "[[cheatsheets/http-status-codes]]",
    "[[cheatsheets/index|Cheatsheets]]",
  ]
---

## Overview

schema.org has hundreds of types; Google supports about thirty for rich results. This card lists the ones worth shipping, the fields each one needs, and the rich result it can earn. Ship JSON-LD in a `<script type="application/ld+json">` block; Google prefers it over Microdata or RDFa. For the broader rules, see [[seo/structured-data]].

## Top-level types

The types most pages need.

| Type                                      | Use for                                  | Rich result enabled                                                 |
| ----------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------- |
| `Article` / `NewsArticle` / `BlogPosting` | Editorial content.                       | Article carousel, Top Stories.                                      |
| `Product`                                 | E-commerce product page.                 | Product snippet, Merchant listings.                                 |
| `LocalBusiness`                           | Storefront with an address.              | Knowledge panel, Maps placement.                                    |
| `Organization`                            | Company-level entity.                    | Sitelinks, knowledge panel.                                         |
| `Person`                                  | Individual contributor or public figure. | Knowledge panel.                                                    |
| `Recipe`                                  | Cooking recipe.                          | Recipe rich result.                                                 |
| `Event`                                   | Concert, conference, meetup.             | Event listing.                                                      |
| `FAQPage`                                 | Page of question-and-answer pairs.       | Deprecated by Google in May 2026; the markup still validates but no longer earns a rich result. |
| `HowTo`                                   | Step-by-step tutorial.                   | HowTo rich result (mostly retired in 2023 except for some queries). |
| `VideoObject`                             | Hosted video.                            | Video carousel, key moments.                                        |
| `BreadcrumbList`                          | Site hierarchy for the page.             | Breadcrumbs in search snippet.                                      |
| `WebSite`                                 | Site-level metadata.                     | Sitelinks search box.                                               |
| `JobPosting`                              | Open role.                               | Google Jobs.                                                        |
| `Course`                                  | Educational offering.                    | Course list.                                                        |
| `SoftwareApplication`                     | App or game listing.                     | App rich result.                                                    |
| `Review` / `AggregateRating`              | Standalone review or ratings summary.    | Star ratings (limited; must be on a host type).                     |

`FAQPage` and `HowTo` still validate but have lost most of their rich-result impact. Ship them only if they help structure the content for AI summarizers.

## Article

For editorial pages: blog post, news story, magazine feature.

| Field              | Required    | Notes                                               |
| ------------------ | ----------- | --------------------------------------------------- |
| `@type`            | yes         | `Article`, `NewsArticle`, or `BlogPosting`.         |
| `headline`         | yes         | Maximum 110 characters.                             |
| `image`            | yes         | At least one; high-res preferred (`1200x675` 16:9). |
| `datePublished`    | yes         | ISO 8601.                                           |
| `dateModified`     | recommended | ISO 8601; powers freshness signals.                 |
| `author`           | required    | `Person` or `Organization`; include `url`.          |
| `publisher`        | recommended | `Organization` with `name` and `logo.url`.          |
| `mainEntityOfPage` | recommended | Canonical URL of the page.                          |

`author` as a string still validates; Google prefers a full `Person` with `url` and `sameAs`.

## Product

For commerce. Pair `Product` with one of `Offer`, `AggregateOffer`, or a review subgraph.

| Field                  | Required             | Notes                                                         |
| ---------------------- | -------------------- | ------------------------------------------------------------- |
| `@type`                | yes                  | `Product`.                                                    |
| `name`                 | yes                  | Product name.                                                 |
| `image`                | yes                  | At least one URL.                                             |
| `description`          | recommended          | One paragraph.                                                |
| `sku` / `gtin` / `mpn` | strongly recommended | One unique identifier; required for Merchant listings.        |
| `brand`                | recommended          | `Brand` or `Organization`.                                    |
| `offers`               | required for snippet | `Offer` with `price`, `priceCurrency`, `availability`, `url`. |
| `aggregateRating`      | optional             | Drives stars in SERP.                                         |
| `review`               | optional             | Individual `Review` items.                                    |

`Offer.availability` uses `https://schema.org/InStock`, `OutOfStock`, `PreOrder`, or `Discontinued`. The full URL is required, not the short token.

## LocalBusiness

For brick-and-mortar businesses. Use a more specific subtype when one fits: `Restaurant`, `Dentist`, `AutoRepair`, etc.

| Field                       | Required                 | Notes                                          |
| --------------------------- | ------------------------ | ---------------------------------------------- |
| `@type`                     | yes                      | `LocalBusiness` or a subtype.                  |
| `name`                      | yes                      | Business name.                                 |
| `address`                   | yes                      | `PostalAddress` with all fields.               |
| `telephone`                 | recommended              | E.164 format preferred.                        |
| `geo`                       | recommended              | `GeoCoordinates` with `latitude`, `longitude`. |
| `openingHoursSpecification` | recommended              | Array of `OpeningHoursSpecification`.          |
| `priceRange`                | recommended              | `$`, `$$`, etc.                                |
| `image`                     | required for some panels | Storefront or logo.                            |
| `url`                       | yes                      | Canonical URL.                                 |

A `LocalBusiness` block on every location page is the strongest signal for local pack placement.

## Organization

Site-wide entity. Place once on the home page; reference it elsewhere by `@id`.

| Field          | Required    | Notes                                                  |
| -------------- | ----------- | ------------------------------------------------------ |
| `@type`        | yes         | `Organization` or `Corporation`.                       |
| `name`         | yes         | Legal or operating name.                               |
| `url`          | yes         | Canonical home URL.                                    |
| `logo`         | recommended | Square or near-square; minimum 112x112.                |
| `sameAs`       | recommended | Array of social profile URLs (LinkedIn, X, Wikipedia). |
| `contactPoint` | recommended | `ContactPoint` with `telephone` and `contactType`.     |

`sameAs` populates the knowledge panel; ship every official profile.

## VideoObject

For hosted video. Most rich results require a thumbnail and upload date.

| Field          | Required    | Notes                                      |
| -------------- | ----------- | ------------------------------------------ |
| `@type`        | yes         | `VideoObject`.                             |
| `name`         | yes         | Title.                                     |
| `description`  | yes         | Maximum 5000 characters.                   |
| `thumbnailUrl` | yes         | At least one; multiple aspect ratios help. |
| `uploadDate`   | yes         | ISO 8601.                                  |
| `contentUrl`   | recommended | Direct file URL.                           |
| `embedUrl`     | recommended | Embeddable player URL.                     |
| `duration`     | recommended | ISO 8601 duration: `PT2M30S`.              |
| `hasPart`      | optional    | `Clip` items for key moments.              |

`hasPart` with timed `Clip` entries unlocks "key moments" navigation in the SERP.

## BreadcrumbList

Cheap to add; usually shows up in the SERP.

| Field               | Required | Notes                       |
| ------------------- | -------- | --------------------------- |
| `@type`             | yes      | `BreadcrumbList`.           |
| `itemListElement`   | yes      | Array of `ListItem`.        |
| `ListItem.position` | yes      | 1-based.                    |
| `ListItem.name`     | yes      | Display label.              |
| `ListItem.item`     | yes      | Canonical URL of the level. |

Position numbers must be contiguous starting at 1; gaps invalidate the markup.

## Common gotchas

- Pages must show what the markup claims. If a `Product` block lists a price the page does not show, Google flags it as misleading.
- `Review` and `AggregateRating` need a host type (`Product`, `LocalBusiness`, etc.); free-floating reviews do not earn stars.
- Use Google's Rich Results Test, not just the schema.org validator. The latter accepts more than the former rewards.
- `FAQPage` and `HowTo` mostly stopped earning rich results in 2023; Google formally deprecated `FAQPage` rich results in May 2026 (Search Console reporting for it follows in June 2026). Both still help LLM summarizers parse the page.
- Google tightened its Review Snippet guidance in July 2026 with stricter review-authenticity and disclosure requirements. Re-verify `Review`/`AggregateRating` markup against the current guidelines before relying on star ratings in the SERP.
- Use full schema URLs for enumerated values: `https://schema.org/InStock`, not `InStock`.
- Place `@id` on the `Organization` block and reference it from `publisher` and `author.worksFor` to avoid duplicating entity data.
- Use `JSON-LD` over Microdata. It is easier to maintain, easier to template, and the preferred format.

## Related

- [[seo/structured-data]]
- [[seo/schema-markup-deep]]
- [[seo/technical]]
- [[cheatsheets/http-status-codes]]
- [[cheatsheets/index|Cheatsheets]]
