JSON-LD schema basics: what findable checks and why
Contents
JSON-LD tells machines what a page is. The text says "Alex Morgan wrote this on 15 October". JSON-LD says it in a form a program can read without guessing.
What does a JSON-LD block look like?
It is a script tag with a JSON object inside. The object needs a @context and a @type.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "JSON-LD schema basics",
"author": { "@type": "Person", "name": "Alex Morgan" },
"datePublished": "2026-10-15",
"image": "https://example.com/cover.jpg"
}
</script>
Which checks cover the basics?
| Check id | What it tests | Fix |
|---|---|---|
aeo_structured_data | At least one JSON-LD block exists | Add a block |
jsonld_valid | Every block parses as JSON | Fix the syntax error |
jsonld_context | Each root has a schema.org @context | Add "@context": "https://schema.org" |
schema_empty_values | No empty string values | Fill the field or remove it |
schema_urls_absolute | url, logo and image are absolute http(s) URLs | Use the full URL |
The usual cause of jsonld_valid is a trailing comma or an unescaped quote, often from a template that pastes page text into the JSON.
Which types does findable validate?
If a type is present, findable checks its required fields. If it is absent, those checks are skipped, so you are never punished for a type you do not need.
| Type | What findable looks for |
|---|---|
Organization | name, logo and url |
Article | headline of 110 characters or fewer, named author, valid ISO dates, an image |
FAQPage | each question has a name and an answer text |
Product | offers, plus a price and currency on the offers |
WebSite | name and url, and a SearchAction with a target and query-input |
VideoObject | name, thumbnailUrl and uploadDate |
BreadcrumbList | 2 or more positioned, named items |
LocalBusiness | address and telephone |
aggregateRating | a ratingValue and a review or rating count |
Pick the type that is true. Do not add Article to a product page to collect a check.
What are the common mistakes?
- Marking up text that is not visible on the page.
- Leaving a field as an empty string.
- Using a relative path like
/logo.pngforlogoorimage. - Forgetting
@context, so the block has no meaning to a parser. - Copying a plugin's output for a type that does not describe your page.
Where do you go next?
FAQ markup has its own guide: FAQ schema for answer engines. The full list of AEO ids is in every AEO check.
Key takeaways
- Add at least one valid JSON-LD block with a schema.org
@context. - Use absolute URLs and no empty values.
- Mark up only what is visible and true.
- Missing types are skipped, not failed.
FAQ
- What is JSON-LD?
- JSON-LD is a block of JSON in a script tag that describes the page using schema.org terms. Machines read it so they do not have to guess what the page is about.
- Where do I put the script tag?
- Anywhere in the HTML is valid. The head is the usual place. findable reads every application/ld+json block it finds.
- Does JSON-LD guarantee rich results?
- No. It makes your page eligible and easier to read. Search engines decide what to show.
- Do I need a separate block for each type?
- No. You can use several blocks, one object with a @graph array, or both. findable handles each.
How does findable score a page?
| Family | Weight | Question it asks |
|---|---|---|
| SEO | 50% | Can crawlers read and index this page? |
| AEO | 25% | Is it easy to lift an answer from this page? |
| GEO | 25% | Does the page give a generative model a reason to cite it? |
The hosted audit waits up to 10 s for a page and fetches at most 5 MB. It reads robots.txt and llms.txt up to 512 KB each.
More guides
- Every findable AEO Check ID and How to Fix It
- All 35 AEO checks in findable explained, from aeo_faq to aeo_summary. See what each id tests, how loose the test is and how to fix it. AEO is 25% of the score.
- Canonical Tags and Duplicate Content: How to Get Them Right
- Use one canonical link per page that points to its own absolute URL. Learn the checks canonical, canonical_self and canonical_absolute and fix them.
- FAQ Schema for Answer Engines: Markup and Checks
- How to add FAQPage JSON-LD that answer engines can lift, and how findable tests aeo_faq, aeo_faq_count and faq_valid. Includes a working example.
- Get Findable in 15 Minutes: A Step by Step Checklist
- Install findable, audit a page and your site, fix the top failures, then add MCP, the web UI, the API and a CI gate. Every step has a copy-paste command.
- Every findable GEO Check ID, Plus AI Crawler Checks
- All 27 GEO checks in findable explained, plus the unscored Site checks for GPTBot, ClaudeBot and llms.txt. GEO is 25% of the score. Fixes included.
- Image Alt Text, Dimensions and Lazy Loading Explained
- Fix img_alt, img_dimensions, img_alt_quality, img_lazy_loading and img_modern_format. See what each image check in findable tests and how to pass.
- llms.txt: What It Is and How findable Checks It
- llms.txt is a plain Markdown file at your site root that points AI tools to your key pages. See the llms-txt check and how to write the file.
- How to Write a Meta Description That Passes findable
- Write a meta description of 120 to 160 characters, one per page, that matches the page. See the checks desc_exists, desc_length and desc_single.
- Open Graph and Twitter Cards: Fix Your Share Previews
- Add og:title, og:description, og:image, og:url and twitter:card so links unfurl well. See every social check findable runs and how to pass it.
- robots.txt and AI Crawlers: GPTBot, ClaudeBot, PerplexityBot
- How robots.txt rules decide whether GPTBot, ClaudeBot, PerplexityBot and Google-Extended can fetch your page, and how findable tests each one.
- Every findable SEO Check ID and How to Fix It
- A plain guide to all 98 SEO checks in findable, from title_length to csp. See what each id tests, when it passes and the fix. SEO is 50% of your score.
- SEO vs AEO vs GEO: The Difference in Plain Words
- SEO, AEO and GEO each target a different reader: a search crawler, an answer box, or a generative AI model. See what wins in each and how to check them.
- Why AI Answer Engines Skip Your Site and How to Fix It
- ChatGPT, Perplexity and Claude may ignore your pages for five fixable reasons, from robots.txt blocks to missing answers. Learn each cause and its check id.