Free tool · no signup · instant result
Schema Markup Validator — Check Whether Your JSON-LD Still Does Anything
Google no longer shows rich results for FAQPage or HowTo on most sites, so markup added to win stars in the SERP now returns nothing visible. The job structured data still does is unglamorous and more durable: it states, in machine-readable form, which company, product, author and page a machine is looking at. Paste a URL and this validator extracts every JSON-LD block, rebuilds the entity graph, and reports what breaks it — missing required properties, authors written as plain strings, entities duplicated instead of linked by @id, mistyped @type values — with the fix for each.
Reads the server-rendered HTML of one page. Nothing is stored. JSON-LD only — markup injected by client-side JavaScript or a tag manager is not visible to this check.
What this schema validator checks
The tool reads one page and grades the structured data on it. It cannot verify that what the markup claims is true, and it never predicts a rich result or an AI citation — those are decisions made elsewhere.
- Every
application/ld+jsonblock, and whether each parses - Required properties per schema.org type
- Recommended properties, reported separately
- Publisher identity — Organization, LocalBusiness or Person
sameAsentity corroboration links@idaddressability and silent duplicate entities- Authors and publishers given as strings instead of entities
- Mistyped or unrecognised
@typevalues - BreadcrumbList completeness
- Relative URLs in
url,@id,logo,image,sameAs - Which present types still produce a Google rich result
- Whether the markup matches the visible page (a human has to judge that)
- Schema injected by JavaScript or GTM (server-rendered HTML only)
- Microdata and RDFa (detected, not validated)
- Whether a rich result will appear (Google decides per query)
- Whether AI engines use your markup (no vendor publishes this)
- Site-wide coverage (one page per run — see the full audit)
How the score is calculated
Ten weighted checks. A page with no parseable JSON-LD caps at 10, and any structural failure caps below 50, so a passing number never hides a broken graph. Advisory notes — retired rich-result types, recommended properties — carry no weight.
| Points | Check | What has to be true |
|---|---|---|
| 18 | JSON-LD present and parses | At least one application/ld+json block that is valid JSON. A block that fails to parse counts for nothing. |
| 12 | Publisher identity | An Organization, LocalBusiness or Person entity carrying name, url and logo. |
| 12 | sameAs entity links | External profiles that corroborate who the entity is — two or more for full credit. |
| 12 | Page-level entity | A type describing what this page is about. Generic container types earn partial credit. |
| 12 | Required properties | Every recognised entity carries what its own type requires. |
| 10 | Authors as entities | author and publisher are typed objects or @id references, never bare strings. |
| 8 | @id addressability | Reusable entities have stable identifiers and are not silently duplicated. |
| 6 | BreadcrumbList | Present, with position, name and item on every level. |
| 6 | Recognised @type values | No mistyped types — a typo silently voids the entity it sits on. |
| 4 | Absolute URLs | url, @id, logo, image and sameAs include scheme and host. |
What structured data actually does — and what it does not
Structured data is a page saying what it is, in a format that removes the need to guess. Everything else on a web page has to be inferred — a machine reads "Kyiv, 2011" and works out that one is a city and the other a founding year. JSON-LD skips the inference: it names the publisher, the author, the product and the relations between them in schema.org's vocabulary, which consumers already parse. Google is explicit that this is not a ranking factor and that valid markup only makes a page eligible for a rich result. No AI vendor has published it as a retrieval input either. The claim that survives both of those: markup fixes identity. Who published this, who wrote it, which company of that name — those are the questions an answer gets wrong when nothing on the page states them outright, and they are the questions this validator checks you have answered.
Structured data types that no longer produce rich results
Most advice about schema markup is older than the features it recommends. Two widely deployed types no longer create anything in Google Search — the markup stays valid, and removing it is optional, but expecting a search feature from it is not realistic.
| Type | Status | Still worth keeping? |
|---|---|---|
| FAQPage | Rich result removed from Google Search on 7 May 2026; documentation retired 15 June 2026 | Harmless and still valid schema.org. It exposes clean question-and-answer pairs to any parser, so it stays useful as machine-readable content — just not as a search feature. |
| HowTo | Removed from mobile and desktop in 2023; no rich result on any surface | Same position: valid markup, no search feature. |
This validator reports both as notes and does not count them against your score. Types that do still produce rich results — Article, Breadcrumb, Product, Review, Event, JobPosting, LocalBusiness, Organization, Recipe, Video and others — are listed in your result when present.
Common schema markup errors and how to fix them
Ordered roughly by how often they turn up on real sites. The first three account for most broken entity graphs.
- The author is a plain string. author: "Jane Roe" names someone without identifying them — a string cannot carry a URL, a sameAs list or an identifier. Fix: Use a nested Person object with url and sameAs, or an @id reference to a Person entity defined once.
- A trailing comma breaks the whole block. One invalid character makes the JSON unparseable, and a block that does not parse is ignored in full. Every entity inside it is lost silently. Fix: Validate the block as plain JSON on every deploy. Templating engines add trailing commas when a loop ends early.
- The same Organization is declared on every page with no @id. Without a shared identifier the same company reads as a new, unrelated object on each URL rather than one entity mentioned many times. Fix: Declare it once with @id such as https://example.com/#organization and reference that @id everywhere else.
- A mistyped @type. "Blogposting" or "FAQpage" are not schema.org types. Type names are case-sensitive, and a typo voids the entity without any visible error. Fix: Check each @type against schema.org. This validator flags anything it does not recognise.
- Relative URLs inside the markup. Structured data is consumed away from the page, so "/logo.png" has nothing to resolve against. Fix: Use absolute URLs with scheme and host for url, @id, logo, image and sameAs.
- Markup that contradicts the visible page. A rating, price or review count in the markup that does not appear on the page is a policy violation, not a shortcut. It risks a manual action. Fix: Only mark up what a visitor can see on the page.
- Schema injected by a tag manager. Markup added by client-side JavaScript is absent from the server-rendered HTML that many parsers read, so it may never be seen. Fix: Render structured data server-side. If you cannot, verify separately in a tool that executes JavaScript.
- sameAs pointing at pages you do not control. sameAs is meant to link the entity to profiles that are demonstrably the same entity. Random citations weaken rather than strengthen the signal. Fix: List only official profiles: your own accounts, and authoritative databases where the entry is genuinely yours.
JSON-LD templates you can copy
Five starting points, all structurally valid. Replace the values with your own — never leave placeholder data in production — then re-run the validator above to confirm the block parses and links correctly.
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Company",
"url": "https://example.com/",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"caption": "Example Company"
},
"description": "One sentence stating what the company does and for whom.",
"foundingDate": "2019-03-01",
"sameAs": [
"https://www.linkedin.com/company/example",
"https://github.com/example",
"https://www.crunchbase.com/organization/example"
]
} {
"@context": "https://schema.org",
"@type": "Article",
"headline": "The article title, under 110 characters",
"description": "One or two sentences summarising the article.",
"datePublished": "2026-07-22",
"dateModified": "2026-07-22",
"image": "https://example.com/images/article.jpg",
"author": {
"@type": "Person",
"name": "Jane Roe",
"url": "https://example.com/team/jane-roe/",
"jobTitle": "Head of Research",
"sameAs": ["https://www.linkedin.com/in/janeroe"]
},
"publisher": { "@id": "https://example.com/#organization" },
"mainEntityOfPage": "https://example.com/blog/the-article/"
} {
"@context": "https://schema.org",
"@type": "Product",
"name": "Example Product",
"image": ["https://example.com/images/product.jpg"],
"description": "What the product is and who it is for.",
"sku": "EX-1001",
"brand": { "@type": "Brand", "name": "Example" },
"offers": {
"@type": "Offer",
"url": "https://example.com/products/example/",
"price": "149.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2026-12-31"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "127"
}
} {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://example.com/blog/" },
{ "@type": "ListItem", "position": 3, "name": "This article" }
]
} {
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://example.com/#business",
"name": "Example Studio",
"url": "https://example.com/",
"telephone": "+380441234567",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Khreshchatyk St",
"addressLocality": "Kyiv",
"postalCode": "01001",
"addressCountry": "UA"
},
"geo": { "@type": "GeoCoordinates", "latitude": 50.4501, "longitude": 30.5234 },
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00", "closes": "18:00"
}],
"sameAs": ["https://www.facebook.com/example", "https://www.instagram.com/example"]
} Does valid schema guarantee rich results or AI citations?
No, on both counts. Google states that structured data makes a page eligible for a rich result and that eligibility is not a guarantee — display depends on the query and on Google's own judgement. For AI answer engines the position is weaker still: no vendor has published structured data as a retrieval or citation input. A perfect score here means your entity graph is complete and internally consistent. That is worth having on its own terms, and it is not a visibility mechanism. The gap between correct markup and actually being cited is what the AI Visibility Audit measures and what AEO and GEO work on.
Schema markup validator — FAQ
How is this different from Google's Rich Results Test?
The Rich Results Test answers one question — would Google show a rich result for this page — and stays silent about everything else. This validator grades the entity graph: whether your Organization, Article and Person blocks reference each other through @id or sit as disconnected islands, whether the publisher is resolvable, whether sameAs points anywhere. Run both. They disagree usefully.
Does schema markup improve rankings?
No. Google has stated repeatedly that structured data is not a ranking factor. What it does is make a page eligible for certain presentations and make the entities on it machine-readable. Anyone selling schema as a ranking lever is selling the wrong thing at the wrong price.
Do FAQPage rich results still appear in Google?
Only for a small set of authoritative government and health sites. Google narrowed FAQ rich results in August 2023 and removed HowTo entirely from desktop. If you added FAQPage markup for the SERP real estate, that trade is over — the markup is now worth keeping only for what it says about the page, not for how it looks.
Is HowTo structured data still useful?
Not for display. Google dropped HowTo rich results in the same 2023 change and has not brought them back. Keeping the markup costs nothing and describes your content accurately; expecting a visual payoff from it does not survive contact with the SERP.
What is sameAs used for?
It is the disambiguation link. sameAs points from your Organization or Person to authoritative profiles elsewhere — Wikidata, Wikipedia, LinkedIn, Crunchbase — so a machine reading your page can tie the name to a record it already trusts. Without it, an entity with a common name is a string that could be anyone.
What does @id do in JSON-LD?
It gives an entity a stable identifier so other blocks can reference it instead of describing it again. Declare your Organization once with an @id, then have every Article point its publisher at that @id. Repeating the full Organization object in each block creates a graph with several near-identical companies in it, which is the single most common structural fault this validator finds.
Should the author be a string or an object?
An object. "author": "Ivan Petrenko" is a label; a Person object with a name, a url to a real bio page and sameAs links is an entity that can be verified and connected to other work. The string form parses cleanly and carries no information, which is why it passes most validators and fails this one.
How many JSON-LD blocks should a page have?
As many as the page has distinct entities, linked into one graph. Several blocks are fine. What is not fine is the same entity declared twice with different values — two Organizations with different logos, say — because there is no rule telling a consumer which one wins, and the safe behaviour is to trust neither.
Does this validator see schema added by Google Tag Manager?
No, and neither does anything else that reads the server HTML — which includes most AI crawlers. GTM injects markup after JavaScript runs. If your structured data only exists client-side, this tool reporting "no JSON-LD found" is an accurate description of what a non-rendering consumer gets.
Does this check microdata and RDFa?
It detects them and reports their presence, but grades JSON-LD only. Google recommends JSON-LD, it is what nearly every modern site emits, and mixing formats on one page usually signals two systems writing markup that neither team fully owns.
Can invalid schema markup hurt a site?
Not as a ranking penalty. It can cost you the eligibility the markup was for, and it can actively mislead — a wrong price, a stale date or a mistyped @type states something false about your page in a format designed to be trusted without checking. That is worse than having no markup.
Do AI search engines read structured data?
No vendor has published structured data as a retrieval or citation input, so any claim that schema drives AI citations is inference. What is defensible: structured data resolves ambiguity about who and what a page is about, and ambiguity is a documented reason answers get attributed to the wrong company.
Correct markup, and still not cited? That is the next 46 checks.
The free AI Visibility Audit runs 47 checks across crawler access, llms.txt, metadata, content extractability, brand-as-entity signals and current AI visibility, then emails a 0–100 score with the three fixes that move it most.
Run the free AI Visibility Audit