Створюємо цифрові рішення, які працюють на бізнес
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 — щоб не писати його руками.