Verifica dei dati strutturati

Inserisci l’indirizzo di una pagina. Leggiamo i suoi blocchi JSON-LD, segnaliamo ogni errore di sintassi, mostriamo lo schema di ogni elemento e lo confrontiamo con le proprietà richieste dai motori di ricerca. Elenchiamo anche i tipi in microdata e RDFa.

Indica la pagina vera e propria, non solo il dominio: un articolo, un prodotto o una ricetta portano dati diversi dalla home page.

Oppure prova yoast.com, www.bbcgoodfood.com/recipes/classic-lasagne

Una seconda copia della pagina, scritta per le macchine

Mostra una pagina prodotto a una persona e capisce subito quale numero è il prezzo e quale la quantità in magazzino. Un programma vede solo testo. I dati strutturati gli evitano di tirare a indovinare. Accanto alla pagina visibile pubblichi gli stessi fatti sotto forma di campi etichettati, con i nomi del vocabolario condiviso di schema.org. Questa cosa è un Product, il suo name è questo, le sue offers contengono un price di 49.00 in USD.

Ci sono tre modi di scriverli. JSON-LD mette tutto in un solo tag script, separato dall’impaginazione, ed è la forma consigliata da Google. Microdata e RDFa distribuiscono le etichette sui tag HTML sotto forma di attributi.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How tides work",
  "datePublished": "2026-03-14T09:30:00+00:00",
  "author": { "@type": "Person", "name": "Jane Doe" }
}
</script>

I motori di ricerca usano questi campi per costruire risultati più ricchi, con le stelline delle recensioni, un prezzo, la foto di una ricetta o la data di un evento. Si chiamano risultati multimediali (rich results).

Cosa legge questa verifica

Il nostro server scarica la pagina una volta, fino a 3 MB, e non esegue i suoi script. Poi lavora in quattro passaggi.

  1. Sintassi. Ogni blocco JSON-LD passa per un lettore JSON rigoroso. Al primo errore indica la riga, il carattere e la causa probabile: una virgola prima di una graffa di chiusura, delle virgolette dentro un testo non precedute dal carattere di escape, virgolette curve incollate da un programma di videoscrittura, un commento HTML, un a capo grezzo. Basta un solo errore perché un parser scarti l’intero blocco.
  2. Elementi. Le liste @graph vengono aperte, così ogni elemento appare separato, con il suo tipo e lo schema delle sue proprietà. Una proprietà che rimanda a un altro elemento con @id viene seguita quando la destinazione è nella pagina.
  3. Proprietà. Per i tipi che alimentano un risultato multimediale, l’elemento viene confrontato con un elenco di proprietà obbligatorie e consigliate tratto dalla documentazione di Google.
  4. Valori. In ogni elemento gli indirizzi devono essere assoluti, date e durate devono seguire la ISO 8601, @context deve essere schema.org e ogni rimando @id deve portare da qualche parte.

Microdata (itemscope, itemtype) e RDFa (typeof) vengono contati e nominati per tipo. Le loro proprietà non vengono convalidate.

I tipi che confrontiamo e cosa richiedono

TipoObbligatorioDa sapere
Article, NewsArticle, BlogPostingNienteConsigliati: headline, image, datePublished, dateModified, author come elemento con name e url.
Productname, e uno tra offers, review, aggregateRatingUn’offerta richiede price; una valutazione richiede ratingValue e un conteggio.
BreadcrumbListitemListElement con position, name, itemDal 2025 Google mostra il percorso solo nei risultati da desktop.
FAQPagemainEntity: domande con una risposta accettataDa agosto 2023 Google lo mostra solo per siti governativi e sanitari noti.
HowToname, stepRitirato: Google ha smesso di mostrare questo risultato nel 2023.
LocalBusinessname, addressLe stelline delle recensioni che pubblichi su te stesso non vengono mostrate.
Eventname, startDate, location con un indirizzo
Recipename, imageI tempi sono durate: PT45M.
VideoObjectname, thumbnailUrl, uploadDate
JobPostingtitle, description, datePosted, hiringOrganization, jobLocationUn lavoro da remoto sostituisce il luogo con jobLocationType e applicantLocationRequirements.
SoftwareApplication, WebApplicationname, offers con un prezzo, una valutazione o una recensioneUn programma gratuito ha prezzo 0.
WebSitename, urlAlimenta il nome del sito. L’azione della casella di ricerca è stata ritirata a fine 2024.
Organization, PersonNienteConsigliati: name, url, logo, sameAs per un’organizzazione.

Gli altri tipi vengono mostrati in schema e i loro valori verificati, senza un elenco di proprietà obbligatorie.

Riparare quello che mostra il rapporto

Un errore di sintassi
I blocchi scritti a mano si rompono su virgole e virgolette. Genera il blocco con un encoder JSON (json_encode in PHP, JSON.stringify in JavaScript) e tutta quella famiglia di errori sparisce. In un CMS, incolla il JSON-LD in un campo per il codice. Non usare mai l’editor visuale per farlo, perché trasforma le virgolette in virgolette curve.
Manca una proprietà obbligatoria
Aggiungila, con il valore che un visitatore vede sulla pagina. I motori di ricerca confrontano le due cose, e un markup che descrive qualcosa che la pagina non mostra può costarti un’azione manuale.
Un indirizzo relativo
Scrivi https://www.example.com/img/cover.jpg per intero, non /img/cover.jpg.
Una data che non è ISO 8601
Prima l’anno, poi T, poi l’ora e lo scarto da UTC: 2026-03-14T09:30:00+00:00. Anche il solo giorno, 2026-03-14, è valido.
Un rimando che non porta da nessuna parte
"author": {"@id": "…/#jane"} funziona solo se un elemento con esattamente quell’@id si trova nella stessa pagina. Aggiungi l’elemento, oppure scrivi l’autore lì dove serve.

Cosa questa verifica non può dirti

Legge l’HTML così come viene consegnato. I dati strutturati aggiunti dopo da JavaScript o da un tag manager qui sono invisibili, anche se Google potrebbe vederli dopo il rendering. Le immagini non vengono scaricate, quindi un’immagine rotta o troppo piccola passa inosservata. Gli elenchi di proprietà coprono i tipi di risultato più comuni. Non coprono ogni tipo né ogni campo facoltativo.

Questo non è il Test dei risultati multimediali di Google, e un rapporto pulito non promette un risultato multimediale. Un markup valido rende una pagina idonea. Se poi compaiano stelline o un prezzo dipende dal motore di ricerca, dalla query, dalla qualità della pagina e da regole che cambiano di continuo. Verifica in Search Console quando la pagina è indicizzata.

Domande frequenti

Qual è la differenza tra JSON-LD, microdata e RDFa?

Portano lo stesso vocabolario schema.org in tre sintassi. JSON-LD sta in un solo tag script, separato dall’impaginazione. Microdata e RDFa aggiungono attributi ai tag HTML attorno al testo visibile. Google li legge tutti e tre e consiglia JSON-LD perché è il più facile da mantenere.

I dati strutturati migliorano il posizionamento?

Non direttamente. Aiutano un motore di ricerca a capire la pagina e la rendono idonea a risultati più ricchi, che possono portare più clic. Da soli non fanno salire una pagina.

Perché il mio markup FAQ non compare su Google?

Da agosto 2023 Google mostra i risultati multimediali FAQ solo per siti governativi e sanitari noti e autorevoli. Sugli altri siti un markup FAQPage valido viene letto e non ha alcun effetto visibile nei risultati. Lo stesso anno i risultati how-to sono stati eliminati del tutto.

Come trovo un errore di sintassi nel JSON-LD?

Passa la pagina in questa verifica. Ti indica la riga e il carattere in cui un parser JSON si ferma, e la causa probabile. Le più frequenti sono una virgola prima di una } o ] di chiusura, delle virgolette doppie dentro un testo che andrebbero scritte \", e le virgolette curve lasciate da un editor di testo.

I miei dati strutturati sono validi. Perché non c’è un risultato multimediale?

Un markup valido ti mette in gara e niente di più. La pagina deve essere indicizzata, il markup deve corrispondere a quello che vedono i visitatori, il sito deve godere di abbastanza fiducia per quel tipo di risultato, e alcuni tipi sono riservati a certi siti o sono stati ritirati. Un markup nuovo può anche richiedere giorni o settimane per essere recepito.

Dove va lo script JSON-LD nella pagina?

In qualsiasi punto dell’HTML, nel <head> o nel <body>. Una pagina può contenere più blocchi, oppure un solo blocco che elenca più elementi sotto @graph.