Need structured data that actually works?
A block Google discards looks exactly like one it is using.
What are you describing?
Questions and answers on a page
No sign-upRuns in your browser
faqs · At least one question with an answer. A FAQPage with none is discarded.
Broken markup reports nothing
Structured data fails silently by design. There is no error on your page, no warning in your inbox, and no difference you can see. The rich result simply never appears, and it never would have.
Copied from a blog post, half-edited
The usual route: find an example, change the words you recognise, leave the ones you do not. What ships is a block describing somebody else's product with your name on it.
An empty property is worse than none
A required field left as "" reads as present and complete to anyone looking at the markup, and is discarded by the thing that matters.
The price has to be a number
$19.99 is not a price to a parser. It is a string, the offer is invalid, and the product result you marked up for never shows.
A form in, markup out
Pick what you are describing
The form changes to show only the fields that type uses, so nothing irrelevant is on screen.
Fill in what you have
Anything empty is left out of the markup rather than shipped as a blank property.
Copy the block
Paste it into your page's head. It rebuilds as you type, so you can see what each field does.
What it does
Five types that cover most pages
FAQs, products, articles, organisations and local businesses. Each with its own fields, so a product never gets an author by accident.
Leaves nothing empty
A field you did not fill is absent from the output. Empty required properties are one of the commonest reasons a rich result never appears.
Names what is missing, and why
Required and recommended kept apart, each with the reason. Missing an author on an article is a different problem from missing an image.
Catches the format mistakes
A price with a currency symbol in it, a date written in words. Both look right and both void the block they are in.
Output that cannot break your page
A < inside your own text is escaped, so the block can never close its own script tag early and take the rest of the page with it.
Readable, valid JSON-LD
Indented and ready to paste, with the nested types built properly rather than left as loose strings.
Straight talk about what it cannot see
It writes correct markup. Correct markup is necessary and it is not sufficient, and the difference matters more here than anywhere else on this site.
It cannot promise a rich result
Valid structured data makes a page eligible. Google decides what to show by its own rules, and eligibility is the only part you control.
The markup has to match the page
Marking up an answer that is not on the page, or a price that is not the one you charge, is what earns a manual penalty rather than a rich result.
It covers five types, not all of them
Schema.org has hundreds. These five cover most pages most people publish; anything else is worth writing by hand against the specification.
Nothing leaves your machine
The markup is built in your browser. No account, no history kept, and no limit on how many you make.
Write it once, correctly
Then check the page it is on, which is the other half of the same job.
