JSON-LD is the structured data format recommended by Google. This article brings together practical markup examples for the main Schema.org types: Article, Product, FAQ, HowTo, BreadcrumbList. Each example includes explanations and implementation recommendations.
JSON-LD basics
Markup structure
JSON-LD is placed in a <script type="application/ld+json"> tag in <head> or at the beginning of <body>. The syntax must be valid JSON.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Заголовок статьи"
}
</script>Required fields
@context— a link to the Schema.org vocabulary.@type— the entity type (Article, Product, etc.).- Other fields depend on the type — see the Schema.org documentation.
Validation
Before publishing, check the markup with the Schema Validator on reChecker or Google's Rich Results Test. Syntax errors (an extra comma, unescaped quotation marks) cause the markup to be ignored.
Article — articles and blogs
Minimal example
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Как настроить Nginx для высоких нагрузок",
"description": "Пошаговое руководство по оптимизации Nginx для высоконагруженных проектов.",
"image": "https://example.com/images/nginx-guide.jpg",
"author": {
"@type": "Person",
"name": "Иван Петров",
"url": "https://example.com/authors/ivan"
},
"publisher": {
"@type": "Organization",
"name": "TechBlog",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"width": 600,
"height": 60
}
},
"datePublished": "2026-03-07",
"dateModified": "2026-03-07"
}Extended example with mainEntityOfPage
{
"@context": "https://schema.org",
"@type": "Article",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/blog/nginx-guide"
},
"headline": "Как настроить Nginx для высоких нагрузок",
"description": "Пошаговое руководство по оптимизации Nginx.",
"image": [
"https://example.com/images/nginx-guide.jpg",
"https://example.com/images/nginx-guide-1200.jpg"
],
"author": {
"@type": "Person",
"name": "Иван Петров",
"url": "https://example.com/authors/ivan"
},
"publisher": {
"@type": "Organization",
"name": "TechBlog",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"width": 600,
"height": 60
}
},
"datePublished": "2026-03-07T10:00:00+03:00",
"dateModified": "2026-03-07T15:30:00+03:00",
"articleSection": "DevOps",
"keywords": "nginx, оптимизация, высокие нагрузки"
}NewsArticle for news
Use the NewsArticle type for news content:
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Компания X представила новый продукт",
"datePublished": "2026-03-07T09:00:00+03:00",
"dateModified": "2026-03-07T09:00:00+03:00",
"author": {
"@type": "Person",
"name": "Мария Сидорова"
},
"publisher": {
"@type": "Organization",
"name": "Новости IT",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"image": "https://example.com/news-image.jpg",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/news/product-x"
}
}Recommendations for Article
- Use full URLs for image, mainEntityOfPage, and url.
- datePublished and dateModified must use the ISO 8601 format.
- The publisher logo must be at least 60px high.
- The markup content must match the visible content of the page.
Product — products and services
Minimal example
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Смартфон Galaxy X Pro 256GB",
"description": "Флагманский смартфон с камерой 200 МП и экраном AMOLED 6.7 дюйма.",
"image": "https://example.com/products/galaxy-x-pro.jpg",
"sku": "GXP-256-BLK",
"brand": {
"@type": "Brand",
"name": "Samsung"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/galaxy-x-pro",
"priceCurrency": "RUB",
"price": "89990",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2026-12-31"
}
}Product with ratings and reviews
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Смартфон Galaxy X Pro 256GB",
"description": "Флагманский смартфон с камерой 200 МП.",
"image": "https://example.com/products/galaxy-x-pro.jpg",
"sku": "GXP-256-BLK",
"brand": {
"@type": "Brand",
"name": "Samsung"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Алексей К."
},
"datePublished": "2026-03-01",
"reviewBody": "Отличный телефон, камера превосходная.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
}
}
],
"offers": {
"@type": "Offer",
"url": "https://example.com/products/galaxy-x-pro",
"priceCurrency": "RUB",
"price": "89990",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "TechStore"
}
}
}Multiple offers (different sellers or variants)
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Смартфон Galaxy X Pro",
"offers": [
{
"@type": "Offer",
"url": "https://example.com/products/galaxy-256",
"priceCurrency": "RUB",
"price": "89990",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"sku": "GXP-256"
},
{
"@type": "Offer",
"url": "https://example.com/products/galaxy-512",
"priceCurrency": "RUB",
"price": "99990",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"sku": "GXP-512"
}
]
}Recommendations for Product
- price must be a string, with no spaces or currency symbol (for example, "89990").
- availability: InStock, OutOfStock, PreOrder.
- Use aggregateRating only when genuine reviews are present on the page.
- The rating in the markup must match the one visible on the page.
FAQ — frequently asked questions
Basic example
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Как оформить возврат товара?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Возврат возможен в течение 14 дней с момента получения. Заполните форму на сайте или обратитесь в службу поддержки. Товар должен быть в оригинальной упаковке."
}
},
{
"@type": "Question",
"name": "Какие способы оплаты вы принимаете?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Мы принимаем банковские карты Visa и Mastercard, оплату при получении, переводы СБП и рассрочку от партнёрских банков."
}
},
{
"@type": "Question",
"name": "Сколько стоит доставка?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Доставка по Москве — от 299 рублей. По России — от 399 рублей. При заказе от 3000 рублей доставка бесплатная."
}
}
]
}FAQ with HTML in the answer
Google recommends using text content. HTML tags in text are not supported — use text only:
{
"@type": "Question",
"name": "Как сбросить пароль?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Нажмите «Забыли пароль» на странице входа. Введите email, указанный при регистрации. Перейдите по ссылке из письма и задайте новый пароль."
}
}Recommendations for FAQ
- Questions and answers must be visible on the page.
- Do not duplicate the same question using different wording.
- Answers should be detailed, but not padded with unnecessary content.
- Do not use FAQ for keywords — include only real user questions.
HowTo — step-by-step instructions
Basic example
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Как приготовить пасту карбонара",
"description": "Классический рецепт пасты карбонара за 20 минут.",
"totalTime": "PT20M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "RUB",
"value": "350"
},
"step": [
{
"@type": "HowToStep",
"name": "Подготовка ингредиентов",
"text": "Нарежьте панчетту кубиками, натрите пармезан, взбейте яйца с желтками.",
"position": 1
},
{
"@type": "HowToStep",
"name": "Варка пасты",
"text": "Отварите спагетти в подсоленной воде до состояния аль денте. Отложите стакан воды от пасты.",
"position": 2
},
{
"@type": "HowToStep",
"name": "Обжарка панчетты",
"text": "Обжарьте панчетту на сковороде до хрустящей корочки. Добавьте отваренные спагетти и воду от пасты.",
"position": 3
},
{
"@type": "HowToStep",
"name": "Соединение с яйцами",
"text": "Снимите с огня, добавьте яичную смесь и пармезан. Быстро перемешайте. Подавайте сразу.",
"position": 4
}
]
}HowTo with images for steps
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Как заменить батарею в iPhone",
"step": [
{
"@type": "HowToStep",
"name": "Отключите устройство",
"text": "Выключите iPhone и откройте корпус с помощью пятигранного ключа.",
"image": "https://example.com/steps/step1.jpg",
"position": 1
},
{
"@type": "HowToStep",
"name": "Извлеките батарею",
"text": "Отсоедините разъём батареи и извлеките её из корпуса.",
"image": "https://example.com/steps/step2.jpg",
"position": 2
}
]
}Duration format
PT20M— 20 minutes.PT1H30M— 1 hour 30 minutes.P1D— 1 day.
Recommendations for HowTo
- Steps must be visible on the page in the same order.
- totalTime is the total time required to complete the task.
- Step images improve the chances of getting a rich snippet.
- Do not create HowTo markup for content that is not a step-by-step guide.
BreadcrumbList — breadcrumbs
Basic example
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Главная",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Электроника",
"item": "https://example.com/electronics"
},
{
"@type": "ListItem",
"position": 3,
"name": "Смартфоны",
"item": "https://example.com/electronics/smartphones"
},
{
"@type": "ListItem",
"position": 4,
"name": "Galaxy X Pro",
"item": "https://example.com/electronics/smartphones/galaxy-x-pro"
}
]
}Recommendations for BreadcrumbList
- The last item is the current page; it can appear without
itemor with a full URL. - Names must match the breadcrumbs visible on the page.
- The position order must be strictly sequential (1, 2, 3, 4).
Combining multiple types
You can place multiple JSON-LD blocks on one page. The key is to avoid conflicts.
Article with breadcrumbs and an organization
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Заголовок статьи",
"author": { "@type": "Person", "name": "Автор" },
"publisher": { "@type": "Organization", "name": "Сайт", "logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" } },
"datePublished": "2026-03-07"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Главная", "item": "https://example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Блог", "item": "https://example.com/blog" },
{ "@type": "ListItem", "position": 3, "name": "Текущая статья" }
]
}
</script>Product page with an organization and breadcrumbs
Product, Organization, and BreadcrumbList types do not conflict. Place them in separate <script> blocks.
Generating markup
Writing JSON-LD manually for dozens of pages is time-consuming. Use:
-
CMS templates — many platforms (WordPress, 11C-Bitrix, Tilda) have plugins for automatic generation.
-
Type-specific generators — Google provides examples in its Rich Results documentation.
Checking and debugging
- Syntax validation — the Schema Validator on reChecker checks the JSON and required fields.
- Rich Results Test — shows which rich snippets Google may display.
- Search Console — the “Enhancements” section displays errors and warnings for structured data.
Frequently asked questions
Can I use multiple types on one page?
Yes. Article + BreadcrumbList, Product + FAQ, and HowTo + Organization are valid combinations. Do not use multiple conflicting types (for example, two different Product types with different data for the same product).
Do quotation marks in JSON need to be escaped?
In JSON-LD inside HTML, quotation marks in strings do not need additional escaping. Use double quotation marks for strings. Line breaks in text should be represented using \n.
How often does Google update rich snippets after changes?
Reindexing takes from several days to several weeks. After correcting the markup, request reindexing in Google Search Console.
Does JSON-LD work in Yandex?
Yes. Yandex supports Schema.org and JSON-LD. Check it with the Structured Data Validator.
Conclusion
JSON-LD is a powerful tool for improving how a site appears in search results. Start with Article for a blog, BreadcrumbList for navigation, and Product for products. Add FAQ and HowTo where they match the content. Check the markup before publishing and monitor the reports in Search Console.
Additional resources: