If you've ever hand-written JSON-LD structured data, you know the drill: one missing comma, one wrong @type, and Google silently ignores your rich results. I build SEO tools for a living, and I still don't write schema by hand anymore. Here's why — and the workflow I use instead.
Why hand-written JSON-LD breaks
JSON-LD looks simple until it isn't. The classic failure modes:
- Trailing commas — valid in JS, fatal in JSON.
-
Wrong nesting —
geoinsidelocationvs. parallel to it for LocalBusiness. -
Missing required fields — Google needs
headline,author,datePublished, andimagefor Article. Miss one and you get no rich result, no error message, just silence. - Unescaped characters — quotes inside descriptions breaking the whole block.
The 30-second workflow
For standard schema types, a generator beats hand-writing every time. I built a free JSON-LD schema generator at FrostRank — no signup, runs entirely in your browser.
Pick the type (Article, FAQPage, Product, LocalBusiness, Organization, BreadcrumbList, Person…), fill in the fields, copy the output. It comes wrapped in <script type="application/ld+json">, ready to paste into your page.
Example output for an Organization:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Inc",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://twitter.com/example",
"https://linkedin.com/company/example"
]
}
Drop it in your <head>:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Inc"
}
</script>
Always validate before you ship
Generated or not, validate everything:
- Google's Rich Results Test (https://search.google.com/test/rich-results) — paste the URL or code snippet; it flags errors and confirms rich-result eligibility.
- Schema Markup Validator (https://validator.schema.org/) — checks your markup against the schema.org spec itself.
If the Rich Results Test shows errors, fix the fields and regenerate — don't patch the JSON by hand and reintroduce the exact mistakes the generator saved you from.
When you SHOULD write it by hand
Generators cover the standard types. Reach for hand-written JSON-LD when:
- You're combining multiple entities with
@graph - You need dynamic schema injected at runtime (e.g., a product price pulled from your DB)
- You're doing something exotic, like
HowTowith video clips
Even then, generate the skeleton first and extend it. Starting from valid markup beats starting from a blank file.
TL;DR
- Don't hand-write boilerplate schema — generate it.
- Validate with Google's Rich Results Test before deploying.
- Keep a generator bookmarked for the next time someone says "can you add FAQ schema to this page?"
Try the free JSON-LD schema generator — it's client-side, so nothing you paste ever leaves your tab. What's your schema workflow — generator, plugin, or hand-rolled?
Top comments (0)