A schema markup audit asks a deceptively simple question: does the structured data on a page accurately describe visible content in a form that machines can understand and, where relevant, Google can use?
Passing one validator is not enough. Markup can be valid Schema.org vocabulary but ineligible for a Google rich result. It can also pass a technical test while describing content that users cannot see, pointing to the wrong canonical page or repeating stale template values across thousands of URLs.
The strongest audit therefore works at three levels: code validity, semantic accuracy and search-feature eligibility. It samples the right pages, fixes recurring problems at their source and leaves an evidence trail that can be checked after deployment.
| Key takeaways • Test syntax and vocabulary with Schema.org tools, then test Google-specific eligibility with the Rich Results Test. • Valid structured data does not guarantee a rich result; Google decides whether and when enhanced features appear. • Audit representative templates and exceptions, not only the homepage or one perfect URL. • Mark up content that is visible and accurate. More schema types do not automatically create more SEO value. • Fix template or data-source defects before patching individual pages, then monitor Search Console after release. |
|---|
What a schema markup audit should prove
Structured data gives explicit labels to entities and relationships on a page. A product page may identify a product, its offer and its review aggregate. An article may identify its headline, author, dates and primary image. The markup is useful only when those statements match the page and follow the vocabulary and platform rules.
A complete audit should answer five questions:
- Coverage: Is markup present on every intended template and absent where it does not belong?
- Validity: Does the code parse, and do properties fit the declared Schema.org types?
- Accuracy: Does the markup match visible, current page content?
- Eligibility: Does it meet the current requirements for a supported search feature?
- Consistency: Do canonical URLs, entity identifiers and template values remain coherent across the site?
This scope prevents two common failures. The first is the “green test” fallacy: assuming a single valid example proves the whole implementation. The second is overmarking: adding types and properties merely because they exist, even when the page does not substantiate them.
The three validation layers
Use separate tests because each one answers a different question.
| Layer | Core question | Useful tool | A pass means | A pass does not mean |
|---|---|---|---|---|
| Syntax and vocabulary | Is the markup parseable and consistent with Schema.org? | Schema.org Validator | The vocabulary structure can be interpreted | Google supports a rich result for it |
| Search-feature eligibility | Does the page meet Google’s technical requirements for a supported enhancement? | Google Rich Results Test | The tested page or code is eligible from a technical perspective | A rich result will definitely appear |
| Live-site health | What is Google detecting across indexed pages? | Search Console rich-result reports and URL Inspection | Google has observed specific valid or invalid items | Every current URL has been crawled after the latest release |
Google’s documentation explicitly says correctly marked-up content is not guaranteed to receive a rich result. Search systems consider additional quality, relevance and policy signals. Treat eligibility as an opportunity, not an entitlement.
The TRACE audit workflow
The original TRACE workflow turns a collection of validator checks into a repeatable audit.
T — Target eligible outcomes
Start with the business and search outcome. Use Google’s supported structured-data gallery to identify features that actually apply to the site. Then map each supported type to a real page template.
For example, Article may fit editorial pages, Product may fit pages for individual products, and LocalBusiness may fit a genuine business location page. A category archive is not automatically a product, and an internal navigation trail should not be marked as a recipe or review.
Create a scope table before crawling:
| Template | Intended type | Search feature | Required visible content | Owner |
|---|---|---|---|---|
| News article | NewsArticle | Article appearance | Headline, dates, author, image | Editorial/platform |
| Product detail | Product with appropriate offer data | Product result | Product identity, price/availability where marked | Commerce |
| Breadcrumb trail | BreadcrumbList | Breadcrumb appearance | Navigational hierarchy | Platform |
If a type is not supported by Google, it may still have semantic value for another consumer. Record that purpose explicitly rather than mixing it into a rich-result KPI.
R — Retrieve a representative sample
Do not choose only clean, popular URLs. Build a stratified sample that includes:
- at least one normal URL from every marked-up template;
- high-traffic and high-conversion pages;
- newly published and old content;
- pages with missing optional fields;
- paginated, localized or variant URLs where applicable;
- URLs with parameters, canonicals or redirects;
- examples already flagged in Search Console;
- JavaScript-rendered pages if markup is injected client-side.
For a small site, testing every eligible URL may be practical. For a large site, crawl the full population for detectable properties and manually review a representative sample for semantic accuracy.
The sample should preserve evidence: URL, template, canonical, detected types, test date, tool used, outcome and issue owner.
A — Assess syntax, meaning and eligibility
Run every sample through the relevant layers.
Inspect the delivered code. Confirm whether JSON-LD, Microdata or RDFa is present in the final rendered page. Google generally recommends JSON-LD when the setup allows it because it is often easier to maintain, but supported formats can work when implemented correctly.
Validate the vocabulary. Use Schema.org Validator to identify parsing problems, unknown types, misplaced properties and type/property mismatches.
Test Google eligibility. Use Rich Results Test on the live URL and, when debugging a pending release, on a code snippet. Review errors and warnings by item, not only the overall result.
Compare with visible content. Check names, dates, ratings, prices, availability, authors, images and other claims against what a user can see. Hidden or misleading markup can violate Google’s structured-data policies.
Check page signals. Verify the canonical URL, indexability, HTTP status, robots controls and rendered DOM. Valid markup on a non-indexable duplicate may not support the intended canonical page.
C — Correct the source template
Group defects by cause before editing anything.
If 500 pages lack dateModified because one component never emits it, fix the component. If an upstream product feed sends stale availability, correct the feed or transformation. Page-by-page patches hide the systemic problem and are likely to regress.
For each fix, define:
- affected template or data source;
- owner and reviewer;
- intended output;
- representative test cases;
- negative test cases where markup must not appear;
- rollback condition;
- monitoring window.
Deploy to a staging environment when possible. Test rendered output, not only the source template, because tag managers, consent layers, rendering services and JavaScript can change the final page.
E — Evidence and monitor
After deployment, re-run the same sample and store before-and-after results. Then watch Search Console’s applicable rich-result report. Google may need to recrawl pages before the report reflects a fix, so record the deployment date and avoid treating an immediate unchanged count as failure.
Use URL Inspection for a few important URLs when appropriate, but rely on normal crawling and an accurate sitemap for broad discovery. Do not repeatedly request indexing for unchanged pages.
A practical schema audit checklist
Inventory and scope
Page and crawl checks
Entity and property checks
Policy and quality checks
Release and monitoring checks
How to prioritize issues
Not every warning deserves the same queue position. Use a transparent score that reflects impact, coverage and confidence.
Audit priority score = impact × coverage × confidence
Score each factor from 1 to 3:
| Factor | 1 | 2 | 3 |
|---|---|---|---|
| Impact | Optional enhancement or low-value template | Important property or meaningful template | Invalid required field, misleading claim or broad eligibility loss |
| Coverage | Isolated URL | One template segment | Sitewide or major revenue/editorial template |
| Confidence | Suspected; more evidence needed | Reproduced in one tool or environment | Reproduced, documented and tied to a clear source defect |
A confirmed required-property failure across a major template scores 27 and should outrank a low-impact warning on one page. The score is an internal triage aid, not a Google metric and not a ranking predictor.
Track two simple operational measures:
Critical-error-free rate = URLs without critical errors ÷ URLs tested × 100
Template coverage rate = eligible templates with validated markup ÷ eligible templates in scope × 100
Keep the denominator and sampling method visible. A 100% rate across three hand-picked URLs does not prove sitewide health.
Common failures and overmarking traps
A technically valid but inaccurate value
A parser can accept a price or author value that is wrong. Always compare structured data with the rendered page and source system.
Markup on the wrong template
Sitewide organization, product or article markup is sometimes injected everywhere. Scope each entity to pages that substantiate it and connect shared entities deliberately.
Duplicate entities with conflicting values
A theme, plugin and tag manager may each publish their own JSON-LD. The result can be three versions of the same organization or product. Consolidate responsibility and use stable identifiers where helpful.
Copying a schema example without adapting it
Documentation examples illustrate structure; they are not production data. Remove properties your page cannot support and replace every placeholder with verified content.
Treating warnings as automatic failures
Errors typically block eligibility for the affected item. Warnings often indicate recommended properties that may improve completeness. Review the documented requirement and data quality before adding a value merely to silence a warning.
Assuming no rich result means broken markup
Eligibility is not display. Google can choose a normal result even when markup is valid. Diagnose technical issues with the relevant tests and Search Console, but do not promise a rich result or ranking improvement.
Reporting template and metrics
Use one row per issue group, not one row per affected URL when the cause is shared.
| Field | Example |
|---|---|
| Issue ID | SD-014 |
| Template | News article |
| Type/property | NewsArticle.dateModified |
| Symptom | Value missing on legacy articles |
| Root cause | Migration template omitted the updated timestamp |
| Affected estimate | 1,240 URLs, verified by crawl |
| Priority score | 18: impact 2 × coverage 3 × confidence 3 |
| Owner | Editorial platform |
| Fix and test | Add mapped value; test current, legacy and no-update cases |
| Evidence | Validator results, URLs and release date |
| Status | In progress |
This format links the visible defect to the code or data decision that can prevent recurrence.
Frequently asked questions
Which tool should I use to validate schema markup?
Use Schema.org Validator for vocabulary and structural validation. Use Google Rich Results Test for Google-supported rich-result eligibility. Use Search Console to monitor what Google detects across eligible indexed pages.
Does valid schema markup guarantee a rich result?
No. Google states that valid structured data does not guarantee an enhanced result. The page must also meet quality and policy requirements, and Google decides what result format to show.
Is JSON-LD better than Microdata?
Google supports multiple formats and generally recommends JSON-LD when the site setup allows it. The best choice is the one your team can generate accurately, keep synchronized with visible content and test reliably.
Should every page have every possible schema type?
No. Use markup that accurately describes the page and serves a documented consumer or feature. Unrelated or misleading markup creates risk without meaningful value.
How often should a schema audit run?
Run focused validation after template, CMS, plugin, feed or rendering changes. Add periodic monitoring based on release frequency and business risk, and investigate new Search Console errors when they appear.
The bottom line
A useful schema audit is not a hunt for the largest number of types or a single green test. It proves that structured data is present where intended, technically valid, truthful, eligible for the desired feature and maintainable at scale.
Use TRACE to define the target, sample the real site, test three validation layers, fix the source and preserve evidence. That turns structured data from a fragile plugin output into a governed part of the publishing system.
