7 WordPress Schema Plugins, Tested: What Each One Actually Outputs

We installed seven WordPress schema plugins on identical clean installs and captured the exact JSON-LD each one emits. Two produce nothing until you configure them, and one silently deletes WooCommerce product schema.

๐Ÿงช
Last tested: 30 July 2026 WordPress 7.0.2, PHP 8.4.21, plugin versions as listed in the results table. This bench is re-run quarterly.

Every "best schema plugin for WordPress" list ranks plugins by install count and feature checklists copied from their own marketing pages. None of them tell you the thing that matters: what markup actually appears in your page source after you activate the plugin.

So we tested it. Seven plugins, one clean WordPress install each, identical content, and a script that pulls the JSON-LD out of the rendered HTML and audits it against Google's requirements. If you're still deciding whether you need a plugin at all, start with our guide to adding schema markup in WordPress.

The results are not what the roundups suggest. Two of the most-recommended plugins output absolutely nothing until you complete a setup step nobody mentions. One deletes WooCommerce's product schema and, unless you notice, replaces it with nothing. A plugin with 40,000 active installs writes a literal null into the author field on every post it touches.

Here's the full data.

How We Tested

Test environment
WordPress7.0.2
PHP8.4.21
DatabaseSQLite (SQLite Database Integration 2.2.23)
ThemeWordPress default
Test date30 July 2026
Plugins activeOne at a time, except in the conflict tests

Every plugin saw the same three URLs: a blog post (title, excerpt, featured image at 1200ร—630, assigned author with a display name and bio, published category), a static page, and the homepage. For the WooCommerce tests, a simple product with SKU, price, stock status and a featured image.

We wrote a purpose-built extraction harness for this: the same detection approach that powers our Schema Gap Analyzer, pointed at a controlled install instead of a live site. It pulls every <script type="application/ld+json"> block out of the rendered HTML, walks the graph counting typed nodes, checks for Microdata and RDFa alongside JSON-LD, and audits each Article node against Google's documented required properties.

For each plugin we recorded the number of JSON-LD blocks, the number of typed schema nodes, the byte weight of the markup, every @type emitted, whether the Article node carried Google's required fields, whether the author resolved to a real name, and whether the output used a linked @graph or standalone objects. Raw output for all seven plugins is available on request.

โ„น๏ธ
Baseline first WordPress 7.0.2 on its own, with no SEO plugin at all, emits zero JSON-LD, zero microdata, zero RDFa. Whatever structured data your site has, a plugin or your theme put it there.

The Results at a Glance

Structured data output per plugin, measured on the blog post URL
Plugin Version Active installs Nodes on install Nodes after setup JSON-LD size Last updated Tested to
Yoast SEO28.110,000,00014164,029 B21 Jul 20267.0.2
All in One SEO (free)4.9.103,000,00016163,641 B8 Jul 20267.0.2
Slim SEO4.9.1160,00012123,243 B28 Jul 20267.0.2
Rank Math1.0.2754,000,0000 โš 72,286 B28 Jul 20267.0.2
Schema & Structured Data for WP & AMP1.63100,0000 โš 102,122 B27 Jul 20267.0.2
Schema (Hesham Zebida)1.7.9.640,00077978 B14 Jun 2025 โš 6.8.6 โš 
SEOPress (free)10.1300,00000 โš 0 B29 Jul 20267.0.2
WordPress core alone7.0.2โ€”0โ€”0 Bโ€”โ€”

"Nodes" counts every object carrying an @type on the blog post URL. More is not automatically better (a well-linked graph of 12 nodes beats a sprawling 16 that repeats itself), but zero is unambiguously bad.

The Finding That Matters Most: Two Plugins Ship Silent

Rank Math outputs nothing until you finish the setup wizard

Install Rank Math, activate it, visit a post. Zero JSON-LD blocks. The Rich Snippet module is enabled by default and the post-type defaults are already set to article, but the schema layer stays dormant until the setup wizard is marked complete.

Once we completed it, Rank Math produced a clean, tightly-linked 7-node graph (BlogPosting, WebPage, WebSite, Organization, Person, ImageObject) with every field Google requires for Article present and correct. Genuinely good output. But there's a window between "I installed the recommended plugin" and "I clicked through a wizard" in which the site has no structured data at all, and nothing in the interface warns you.

โš ๏ธ
If you use Rank Math, complete the setup wizard Not "later". It is the difference between all of your schema and none of it.

SASWP outputs nothing until you create a schema entry

Schema & Structured Data for WP & AMP is a dedicated schema plugin: it does nothing else. Activated on a clean install, it produced zero JSON-LD on posts and pages, and a single bare Organization node on the homepage.

SASWP works on a mapping model. You create a schema entry, choose a type, and set a rule for where it applies (post_type equals post). Until you do, no post gets any markup. After creating one Article mapping, it emitted a reasonable 10-node output.

That is a defensible design (it's an explicit-control plugin, not an automatic one), but it's the opposite of what "install a schema plugin" implies, and it's the single most likely reason a site has a schema plugin active and no schema in the source.

SEOPress free outputs nothing on content, full stop

SEOPress's free version emitted no JSON-LD on posts or pages at all, even with the Rich Snippets toggle on and the Knowledge Graph configured. The only output anywhere was a single WebSite node on the homepage.

Automatic content schema is a SEOPress Pro feature. That's a legitimate commercial decision, but if you install SEOPress free expecting Article markup, you will not get it, and the toggle labelled "Rich snippets" being switched on is actively misleading about that.

The Defect: A 40,000-Install Plugin Writing null Into Every Post

The plugin literally named Schema, by Hesham Zebida, works out of the box with no configuration, which is exactly why it still has 40,000 active installs. But here's what it wrote to our test post:

{
  "@type": "BlogPosting",
  "headline": "How to Add Schema Markup in WordPress",
  "publisher": {
    "@type": "Organization",
    "name": "Schema Bench",
    "logo": { "@type": "ImageObject", "url": "", "width": 600, "height": 60 }
  },
  "author": {
    "@type": "Person",
    "name": null,
    "url": "http://example.com/author/"
  }
}

Three problems in one block:

  1. "name": null on the author. Not an empty string, a JSON null. author.name is a required property for Article in Google's documentation. Every post on the site ships an Article node that fails validation.
  2. "url": "" on the publisher logo: an empty ImageObject with hardcoded 600ร—60 dimensions pointing at nothing.
  3. A broken author URL: /author/ with no username appended.

The plugin was last updated 14 June 2025 and declares compatibility only up to WordPress 6.8.6. It has not been tested against WordPress 7.0.

โš ๏ธ
Recommendation: don't use it If it's already on your site, check your Rich Results Test output today. This is the kind of failure that produces no visible error in the admin and quietly disqualifies every page from Article eligibility.

The One That's Been Removed From WordPress.org Entirely

WP SEO Structured Data Schema, a plugin that still shows up in older roundups and still gets searched for by name, was closed by WordPress.org on 4 May 2026 for a security issue. It is no longer downloadable, and closed-for-security plugins do not receive updates.

If it's running on a site you manage, remove it. If you find it recommended in a "best schema plugins" list published this year, that list has not been touched since before May.

Plugin Conflicts: What Happens When Two Are Active

This is where the real damage happens, because almost nobody runs a clean single-plugin install. We tested pairs.

Output when two plugins are active on the same post
Combination JSON-LD blocks Article nodes Organization nodes WebPage nodes Result
Yoast + All in One SEO2222Complete duplication, 7,670 B
Rank Math + Schema2212Duplicated Article
Slim SEO + Schema2222Duplicated Article
Yoast + Schema1111Schema suppresses Yoast
Yoast + SASWP1110SASWP suppresses Yoast

Two plugins have deliberate Yoast handling built in. The Schema plugin ships includes/integrations/yoast-seo.php containing:

add_filter( 'wpseo_json_ld_output', 'schema_wp_remove_yoast_json', 10, 1 );

and SASWP does the same more bluntly in output/class-saswp-output-compatibility.php:

add_filter( 'wpseo_json_ld_output', '__return_false' );

Neither has equivalent handling for Rank Math, All in One SEO or Slim SEO. The industry has standardised on "detect Yoast, defer to me" and stopped there. Pair a dedicated schema plugin with any non-Yoast SEO plugin and you get two competing Article nodes describing the same page, with different @id values, on every post.

Google's own guidance is that conflicting duplicate markup makes a page ineligible rather than doubly eligible. This is a self-inflicted wound and it's very common.

The WooCommerce Trap

WooCommerce 10.9.4 emits its own Product schema natively, no plugin required. On our test product it produced a clean Product + Offer + BreadcrumbList graph with SKU, price, currency, availability and priceValidUntil.

Then we added each SEO plugin on top:

Product page output with WooCommerce plus each SEO plugin
Combination Blocks Product nodes BreadcrumbList Verdict
WooCommerce alone111Clean baseline
Woo + Rank Math110Cleanest: replaces Woo's output
Woo + Yoast212Duplicate breadcrumbs
Woo + All in One SEO212Duplicate breadcrumbs
Woo + Slim SEO212Duplicate breadcrumbs
Woo + SASWP000All product schema gone

The full WooCommerce picture, including the properties Woo omits and the variable-product problem, is in our WooCommerce schema markup guide.

That last row is not a typo. Install SASWP on a WooCommerce store and your product pages end up with no structured data whatsoever. The cause is in output/class-saswp-output-compatibility.php:

remove_action( 'wp_footer', array( WC()->structured_data, 'output_structured_data' ), 10 );
// This removes structured data from all frontend pages

SASWP strips WooCommerce's Product markup on the assumption that you will configure a SASWP Product schema to replace it. If you don't, and nothing prompts you to, every product page loses its rich result eligibility silently. No warning, no admin notice, no error in the Rich Results Test other than "no items detected".

โš ๏ธ
If you run WooCommerce and SASWP together Check a product page in the Rich Results Test right now.

What Google Actually Requires, and Who Delivers It

Google's Article documentation requires headline, image, datePublished and author.name. Here's how the output held up:

Required and recommended Article properties per plugin
Plugin Article type headline image datePublished dateModified author resolves publisher Linked @graph
Yoast SEOArticleโœ“โœ“โœ“โœ“โœ“โœ“โœ“
Rank MathBlogPostingโœ“โœ“โœ“โœ“โœ“โœ“โœ“
All in One SEOBlogPostingโœ“โœ“โœ“โœ“โœ“โœ“โœ“
Slim SEOArticleโœ“โœ“โœ“โœ“โœ“โœ“โœ“
SASWP (configured)Articleโœ“โœ“โœ“โœ“โœ“โœ“โœ— standalone
Schema (Zebida)BlogPostingโœ“โœ“โœ“โœ“โœ— nullโš  empty logoโœ— standalone
SEOPress freeโ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”

One configuration note on Yoast: on a completely fresh install with the site representation unset, Yoast emits the Article node with no publisher property at all and no Organization node in the graph. The author resolves correctly, but the publishing entity is simply absent. Setting the site representation (Organisation or Person) in Yoast's settings adds both, taking the graph from 14 nodes to 16 and closing the last required-property gap. Yoast's first-time configuration wizard covers this, but as with Rank Math, skipping it costs you output.

None of the seven plugins emitted FAQPage markup by default. Given Google removed FAQ rich results from Search on 7 May 2026, that's the correct behaviour in 2026, but check your own site, because plugins that were configured to output FAQPage before the change will still be doing it.

So What's the Best Schema Plugin for WordPress?

It depends on one thing: whether anyone will configure it after installing.

Best overall: Rank Math

Cleanest graph for the size (7 nodes, 2,286 bytes, everything linked by @id, no redundancy) and the only plugin that handled WooCommerce without leaving duplicate breadcrumbs behind. Non-negotiable caveat: finish the setup wizard, or you get nothing.

Best if you want it to just work: All in One SEO (free)

The only plugin in the test that produced a complete, valid, fully-populated 16-node graph the instant it was activated, with no wizard and no configuration. If the site owner is not going to touch settings again, this is the safest choice.

Best for large or performance-sensitive sites: Slim SEO

12 well-formed nodes in 3,243 bytes with zero configuration and a genuinely small plugin footprint. Fewer knobs than the others by design. It's the pick when you want correct markup and no admin surface.

The default that's fine: Yoast SEO

Correct, thorough, well-linked output, and the largest at 4,029 bytes on a post, some of which is potentialAction and PropertyValueSpecification scaffolding that does nothing for rich results. If you already run Yoast there is no reason to switch. Set the site representation.

Use with caution: Schema & Structured Data for WP & AMP

Powerful and granular once configured, and the right tool if you need schema types the SEO plugins don't cover. But it outputs nothing until you build a mapping, and it deletes WooCommerce's product schema. Fine in expert hands, dangerous as a set-and-forget install.

Don't use: Schema (Hesham Zebida)

Writes null into the author field of every post, ships an empty publisher logo, and hasn't been updated since June 2025 or tested past WordPress 6.8.

Don't use: WP SEO Structured Data Schema

Closed by WordPress.org on 4 May 2026 for a security issue.

Only if you're buying Pro: SEOPress

The free version does not do content schema. That's a paid feature, and the free plugin's "Rich snippets" toggle doesn't make that clear.

Decision Table

Which plugin to use, by situation
Your situation Use
Already running Yoast or Rank MathKeep it. Finish the setup wizard. Don't add a second schema plugin.
New site, want it correct with zero admin timeAll in One SEO free, or Slim SEO
Running WooCommerceRank Math, or WooCommerce's native output plus any of Yoast, AIOSEO or Slim SEO, accepting duplicate breadcrumbs. Not SASWP without a Product mapping.
Need schema types no SEO plugin coversSASWP, configured deliberately, with the WooCommerce behaviour understood
Need full control, no plugin bloatAdd the JSON-LD manually
Managing schema across hundreds of URLsPlugins stop scaling here, see schema markup at scale

Three Things to Check on Your Own Site Today

  1. View source on a post and search for ld+json. If there's nothing there, your schema plugin is one of the silent ones.
  2. Count the blocks. More than one ld+json block describing the same page usually means two plugins are competing.
  3. If you run WooCommerce, open a product page in the Rich Results Test. "No items detected" means something removed Woo's native markup.

FAQ: WordPress Schema Plugins

Do I need a schema plugin at all?

WordPress core outputs no structured data on its own, which we verified on a clean 7.0.2 install. So you need either a plugin, theme support, or manual JSON-LD. A plugin is the right answer for most sites.

Can I run two schema plugins at once?

No. In our tests, Yoast plus All in One SEO produced two complete duplicate graphs: two Article nodes, two Organization nodes, two WebPage nodes, on the same page. Pick one.

Why does my plugin show no schema in the Rich Results Test?

The three most common causes, in order: Rank Math's setup wizard was never completed; SASWP has no schema mapping created; or you're on SEOPress free, which doesn't do content schema. All three produce exactly zero output with no error message.

Does more schema markup rank better?

No. Correct, non-conflicting markup that matches visible page content is what matters. The largest output in our test (Yoast, 4,029 bytes) includes scaffolding that has no rich result effect, and the smallest valid output (Rank Math, 2,286 bytes) is arguably the better graph.

Is FAQ schema still worth adding in WordPress?

Not for rich results. Google removed FAQ rich results from Search on 7 May 2026. Existing markup is harmless and can stay, but it no longer produces a visible search feature. More on this in FAQ and HowTo schema after the 2026 deprecation.

Which schema plugin is best for WooCommerce?

Rank Math was the only one that replaced WooCommerce's native output cleanly rather than adding a second breadcrumb trail alongside it. SASWP is the one to avoid, because it removes Woo's product markup without replacing it. Full detail in our WooCommerce schema markup guide.

Testing conducted 30 July 2026 on WordPress 7.0.2 / PHP 8.4.21. Plugin versions as listed. Structured data extracted from rendered front-end HTML and audited programmatically against Google's documented Article requirements. Methodology and raw output available on request.

Not Sure What Your Site Is Actually Emitting?

Use our Schema Gap Analyzer to audit structured data across your pages, or book a consultation for a clean implementation plan.

About the Author

Shakur Abdirahman
Technical SEO Specialist
Shakur is a Technical SEO Specialist with expertise in large-scale website migrations, redirect management, and technical SEO optimization. He helps businesses preserve search rankings and maintain crawl efficiency during complex site changes.

More about the author โ†’