Why WordPress Site Owners need this
Plenty of WordPress owners only find out something is wrong when the site not indexed by Google problem shows up, and by then the cause is often a setting nobody revisited: the Discourage search engines from indexing this site box under Settings > Reading, left ticked after launch. Schema trouble tends to arrive the same quiet way. You install Yoast or Rank Math, the theme already prints its own JSON-LD, a review plugin adds Product markup, and nobody looks at the page source. The Structured Data (Schema) Checker fetches one URL as served and lists every JSON-LD and Microdata type it finds, so you can see what your stack really outputs instead of what the plugin settings screen implies. Run it on a post, a tag archive and a product page, because each template can behave differently. Archives matter too: tag, date and author pages get indexed by default and may carry markup you never meant to publish. Heavy themes and plugin piles also add duplicate blocks. The result is a table of types and chips per type, which is a starting point for cleanup, not a verdict.
WordPress Site Owners specific guidance
Pick the URLs worth checking first
Start with one URL per template, since the checker reads a single page per run and does not crawl. A realistic set for a blog is https://example.com/2026/05/sample-post/, https://example.com/category/news/ and the home page; a shop adds one product URL. Before running anything, open the post, press Ctrl+U and search for application/ld+json. That takes a minute and shows you how many blocks your plugins print. If the Discourage search engines setting under Settings > Reading is ticked, fix that first, because schema on a page Google is told to skip helps nobody. A clean result here does not prove the page is indexed or eligible for anything; it only shows what sits in the HTML. Markup injected later by a script or tag manager will not appear, since no JavaScript runs.
Reading the overview and the source
Look at the three cards first: Schema types, JSON-LD items and Microdata items. Then read the chips. If a single post shows JSON-LD: Article twice, or JSON-LD: BreadcrumbList next to Microdata: BreadcrumbList, two sources are printing the same thing, which is the classic result of an SEO plugin plus a theme or a second schema plugin. Open JSON-LD Source and read the actual values: author, dates and image should match the post. If you see Invalid JSON-LD block detected, look for a trailing comma or smart quotes in a custom snippet pasted into functions.php or a header-injection plugin. The Rich Result Eligibility table is only a lookup by type. It does not check required properties or Google's policies, so confirm candidates in Google's Rich Results Test, and never read a listed type as a promise of a rich result.
What to fix, and in which order
Fix duplicates before adding anything. In Yoast SEO or Rank Math, open the plugin's schema settings and decide that one plugin owns Article and Organization output; then turn off the theme's own schema option, or the second plugin's, and rerun the same URL. Test on staging when a theme change is involved, because stripping markup can also break features. Next, check archives: if a tag page shows full Article markup, treat that as a hint the page may be thin and review whether it should be noindexed. Last, if a type is missing, generate JSON-LD with the schema generator and confirm other tags with the meta tag analyzer. Remember that cleaner markup does not make Google show rich results, and the checker cannot tell you whether a page is indexed or how fast it loads.
Example scenarios
1. Two plugins, one blog post
- Situation
- Illustrative example: a food blogger runs Yoast SEO, then installs a recipe plugin that also prints its own Article and BreadcrumbList markup. Both stay active for months.
- Input
https://example.com/blog/how-to-bake-sourdough/- Reading the result
- The Schema types card would typically count several types, with chips such as JSON-LD: Article ×2 and JSON-LD: BreadcrumbList ×2. Doubled chips mean two sources print the same type. Open JSON-LD Source, compare the two Article blocks, then switch schema off in one plugin and rerun until each type appears once.
2. A snippet with a trailing comma
- Situation
- Illustrative example: a site owner pastes a 12-line Organization snippet into functions.php from a forum thread, and the last property line ends with a comma.
- Input
https://example.com/about-us/- Reading the result
- The page would typically show Invalid JSON-LD block detected in place of that block, while other valid blocks from the SEO plugin still print under JSON-LD Source. Remove the trailing comma, clear the page cache and rerun. The result tells you the block is broken, not whether Google would have shown anything for it.
3. Product page with no Product type
- Situation
- Illustrative example: a small shop switches themes, and the new theme ships a custom single-product template. Of 40 products, the owner spot-checks one.
- Input
https://example.com/product/linen-apron/- Reading the result
- The output might list only Organization and BreadcrumbList, with no Product chip. That points at the template or a plugin setting rather than the product data, so compare with a product page on the old theme or staging. Even once Product appears, the eligibility table is only a type lookup and confirms nothing about price or availability values.
Common mistakes
- Trusting the plugin settings screen. A toggle in Yoast or Rank Math says what the plugin intends to print, not what the page source contains after your theme and other plugins add theirs. Check the live URL.
- Testing only the home page. WordPress renders posts, pages, archives and products from different templates, so a clean home page says little about a tag archive or a product. Run one URL per template.
- Leaving the visibility setting on after launch. Perfect schema is wasted if Settings > Reading still discourages search engines from indexing the site. Untick it and confirm the page is not noindexed before touching markup.
- Stacking a second schema plugin to fill a gap. Adding another plugin for one missing type often creates duplicate Article or Organization blocks. Generate the single missing type instead and rerun the checker.
- Treating a detected type as a rich result. Seeing Product or FAQPage in the chips only shows the type is present in the HTML. Google decides whether to show a rich result, so validate in Google's Rich Results Test.
Frequently asked questions
Why is my WordPress site not indexed by Google even though schema shows up?
Schema detection and indexing are separate things. The checker only reads markup in the HTML it fetches, so it can show a perfect Article block on a page that Google was told to skip. The usual first suspect is the Discourage search engines from indexing this site checkbox under Settings > Reading, left on after launch. Also look for a noindex tag from your SEO plugin on that page type. Fix those first; markup only matters once the page can be indexed, and nothing here guarantees that.
Yoast vs Rank Math: which one should output my schema?
Either can handle Article, Organization and BreadcrumbList, so the better question is how many things print them at once. Pick one plugin, disable schema in the other and in your theme if it has an option, then run the checker on a post. You want each type once in the JSON-LD Source. The tool cannot judge which plugin writes better properties; it only shows what ends up in the page, so compare values like author and dates yourself.
Do I need to check every page on my WordPress site?
No. The checker takes one URL per run and does not crawl, but WordPress builds pages from templates, so one URL per template usually tells the story. Run a blog post, a static page, the home page, a category or tag archive and, for a shop, one product. If a post shows the right types, older posts from the same template usually behave the same, unless a plugin applies per-post schema settings. Recheck after any theme or plugin update.
Why does the checker say Invalid JSON-LD block detected on my WordPress page?
It means one script block of type application/ld+json could not be parsed as JSON, so it was not shown. Typical causes are a trailing comma, curly smart quotes copied from a document, a missing bracket, or two objects pasted one after another without an array. Look at snippets you added through functions.php, a code-snippets plugin or a header scripts box. Fix the block, clear any page cache, and run the same URL again. Valid blocks on the page are still printed.
Will fixing schema get my WordPress pages rich results?
Not by itself. Valid, correct markup makes a page eligible, and Google decides case by case whether to show a rich result based on quality and relevance. The Rich Result Eligibility table in the checker only maps each detected type to what it may enable, without testing required properties. Use it to confirm the right type exists, then verify the page in Google's Rich Results Test and make sure the visible content matches the markup.
Reference: For why archive templates deserve a look, Yoast's WordPress SEO: the definitive guide warns that tag, date and author archives can be indexed without adding value.