Создаем цифровые решения, которые работают на бизнес
SEO и маркетинг
Может заинтересовать
Синтаксис JSON-LD, обязательные поля по типу и логические ошибки.
Инструмент проверяет одну вещь. Мы бесплатно пройдём весь сайт и пришлём отчёт: что мешает вам в Google и что исправить первым.
Разметка с ошибкой не работает молча: расширенный результат просто не появляется, и понять почему без проверки сложно.
Важно: корректная разметка не гарантирует расширенного результата в Google. Решение всегда за поисковой системой, и ни один сторонний валидатор не может его предсказать.
Девять вещей, которые валидатор ловит чаще всего. Для каждой — как выглядит сломанный код и как должно быть. Большинство из них Google молча пропускает: разметка просто не работает, и вы об этом не узнаете.
JSON строже JavaScript: лишняя запятая перед } или ] ломает весь блок. Браузер не жалуется, Google разметку не читает.
// было
{ "@type": "Organization", "name": "BB STUDIO", }
// стало
{ "@type": "Organization", "name": "BB STUDIO" }
В JSON кавычки только двойные. Код с одинарными выглядит рабочим, но не парсится.
// было
{ '@type': 'Article', 'headline': 'Заголовок' }
// стало
{ "@type": "Article", "headline": "Заголовок" }
Без "@context": "https://schema.org" парсер не знает, что Product — это тип из Schema.org, а не произвольное слово. Блок игнорируется целиком.
// было
{ "@type": "Product", "name": "Ноутбук" }
// стало
{ "@context": "https://schema.org", "@type": "Product", "name": "Ноутбук" }
Разработчик оставил // TODO или /* ... */ — и это уже не JSON. Комментарии нужно убрать полностью.
Для Article это headline, для Product — name, для Event — name, startDate и location. Без них Google не покажет расширенный результат, даже если всё остальное идеально. Полная таблица — ниже.
Самая опасная ошибка: aggregateRating стоит на странице, где ни одного отзыва не видно. Google называет это self-serving reviews и именно за это чаще всего даёт ручные санкции — исчезают все расширенные сниппеты сайта, а не только этот.
// было — на каждой странице сайта
{ "@type": "Organization", "name": "...",
"aggregateRating": { "ratingValue": "5", "reviewCount": "9" } }
// стало — только на странице, где отзывы есть текстом
{ "@type": "Organization", "name": "..." }
"price": "9 900 грн" — не число. Должно быть "price": "9900" и отдельно "priceCurrency": "UAH".
// было
"offers": { "@type": "Offer", "price": "от 9 900 грн" }
// стало
"offers": { "@type": "Offer", "price": "9900", "priceCurrency": "UAH" }
"datePublished": "12.09.2026" парсер не поймёт. Правильно — "2026-09-12" или со временем и зоной: "2026-09-12T10:00:00+03:00".
В коде цена 9 900, на странице 12 900. В коде пять вопросов FAQ, на странице три. Google сравнивает разметку с видимым содержимым, и расхождение карается так же, как скрытый текст. Разметка описывает страницу, а не украшает её.
Те же правила, по которым работает валидатор. Без обязательных полей расширенного результата не будет; рекомендуемые повышают шанс его получить.
| Тип | Обязательно | Рекомендуется |
|---|---|---|
| Organization | name | url, logo, sameAs, contactPoint |
| LocalBusiness | name, address | telephone, openingHours, geo, url, image, priceRange |
| Article / BlogPosting | headline | author, datePublished, dateModified, image, publisher |
| Product | name | image, offers, description, brand, sku, aggregateRating |
| Offer | price, priceCurrency | availability, url, priceValidUntil |
| FAQPage | mainEntity (Question с name и acceptedAnswer) | — |
| BreadcrumbList | itemListElement | — |
| Event | name, startDate, location | endDate, description, offers, image |
| Service | name | provider, areaServed, description |
| WebSite | name, url | potentialAction (поиск по сайту) |
| VideoObject | name, thumbnailUrl, uploadDate | description, duration, contentUrl |
Для Product обратите внимание: aggregateRating в рекомендуемых — но только если на странице действительно есть отзывы. Иначе см. ошибку №6.
Валидатор говорит «ошибок нет» — это значит, что код корректен, а не что Google покажет звёздочки или FAQ в выдаче. Расширенные результаты — решение Google, и он принимает его по-разному для разных сайтов и запросов. Что зависит от вас: правильный тип под содержимое страницы, обязательные поля, совпадение разметки с текстом и отсутствие вещей из пункта 6.
Подробнее о том, какие типы разметки реально дают расширенные сниппеты в 2026 году, за что Google их снимает и почему LocalBusiness без адреса хуже, чем без разметки вообще, — в статье «Разметка Schema.org: что даёт и за что Google снимает». А генератор разметки соберёт корректный JSON-LD для типичных случаев — Organization, Article, FAQ, Product — чтобы не писать его вручную.