Overview
The Schema Markup Audit crawls your live pages, extracts every <script type="application/ld+json"> block, and checks what it finds against Google's current structured data guidelines. It then writes a JSON-LD pack: the structured data your pages should carry, ready to paste.
It reads the rendered page, not a cached copy, so it reports what Google's crawler receives. It also tells you whether your schema arrives in the raw HTML or is added by JavaScript after the page loads.
When to use this
Run it when the main report's Structured Data category fails, when rich results you used to have disappear from search, or before you invest in content that depends on a result type (recipes, products, local business panels). If your problem is broader than markup, such as indexing, speed or broken pages, start with the Technical SEO audit. This tool only looks at structured data.
How it works
- It chooses up to 50 pages. The homepage, about and contact pages come first, then a first round from each template (six service pages and five location pages where the site has that many, for example), then the remaining places in priority order.
- It reads each page's structured data, rendering JavaScript so that injected schema is found too.
- It checks every block against the Google guideline for its type, and checks the business details against what Google Business Profile, OpenStreetMap and the site itself say.
- It writes the JSON-LD pack. Values it could not verify are left for you under FILL BEFORE PUBLISHING instead of being filled in, so it never invents your phone number, price or opening hours.
Steps
To run a schema audit:
- Open your website, then Schema Audit under Site Audit. You can also go to Tools and pick Schema Markup Audit.
- Select Run Schema Audit. A run takes up to 8 minutes on larger page sets.
- The results and the JSON-LD pack save to the page when it finishes.
Understand the results
The summary shows the Overall verdict (for example Needs fixing or Should improve), the issues by severity, how many pages are affected, and Start here with the first fix.
Below it: Site-level issues, Site-level identity, Template-wide additions, Page-by-page fixes, Recommended properties, the Schema inventory of every type the crawl found, and How to install for your platform. Each code block is marked Ready to paste, Fill fields first or Needs manual work, and Copy code copies it. The PDF report cites the Google guideline behind each recommendation.
Sample output
This is an example on a made-up website, not a real report:
Overall verdict: Needs fixing
1 Critical · 2 High · 3 Medium · 6 of 18 pages affected
Start here: Add a LocalBusiness entity to the homepage
Page-by-page fixes: /services/drain-cleaning/
Priority Where What's wrong What to do
High Service No Service markup Paste the block below
Medium Breadcrumbs BreadcrumbList missing Paste the block below
Fill fields first
{ "@context": "https://schema.org", "@type": "Service",
"name": "Drain cleaning", "provider": { "@id": "https://www.example.com/#business" } }
FILL BEFORE PUBLISHING: areaServed, the suburbs or city you serve
What to do with the results
To act on a schema audit:
- Start with Start here and the Critical and High issues in Site-level issues, because a site-level fix applies to every page.
- Add every value listed under FILL BEFORE PUBLISHING to its block, then select Copy code and paste each block into the page it names. How to install gives the steps for your platform.
- Check a pasted page in Google's Rich Results Test before moving to the next one.
- When the blocks are live, select Run again.
- Compare the new verdict and issue counts with the previous run in Performance history.
Limits and usage
- A run crawls up to 50 pages, stops at 8 minutes and costs 5 credits. See plans and credits.
- Rate limited to 5 runs per minute per account.
- It checks against the Google Search Central documentation that is current when it runs, and it never submits anything to Google for you.
Troubleshooting
The crawl comes back empty or partial
Your site is blocking our crawler. See unblocking the crawler. The fix is usually an allowlist entry for our user agent.
Schema shows on your page but the audit says none found
Your markup is probably injected by JavaScript after load. The tool renders JavaScript for this case, but a script that fires late or only on interaction can still be missed. Move the block into the server-rendered HTML and rerun.
A block went live with a value still missing
The report lists every value it needs from you under FILL BEFORE PUBLISHING; check each block against that list before you deploy it.
Related guides
- Audit categories: where Structured Data fits in your grade.
- Choosing between the deep audits