Schema markup generators solve a real problem: writing JSON-LD by hand is tedious and error-prone, and most developers and marketers do not want to read the full schema.org specification to figure out the correct property names. A good generator gets you to a valid starting point in minutes. The catch is that every generator produces generic output that needs to be tailored to the actual page, and none of them can audit your existing markup or tell you where you have gaps. Understanding what each tool does well, and where it stops being useful, saves a lot of rework.
Tools worth knowing
The Google Structured Data Markup Helper is the most approachable entry point. You paste a URL or HTML, highlight elements on the page, and tag them with schema properties. It outputs JSON-LD you can drop into your page. It is good for getting a first draft of Article, LocalBusiness, or Product markup from real page content. Its weakness is that it covers a limited set of schema types and has not been meaningfully updated in years.
The Merkle Technical SEO Schema Markup Generator (also known as the TechnicalSEO.com generator) handles a wider range of types including FAQPage, HowTo, JobPosting, Event, and BreadcrumbList. The form-based interface is straightforward and the output is clean. It is the tool I point people to most often when they need to produce markup for a type Google actively uses for rich results.
The schema.org documentation itself is not a generator, but it is the authoritative reference for every property and type. When a generator does not include a property you need — for example, speakable on an Article, or hasMerchantReturnPolicy on a product Offer — the spec is where you find out what the correct syntax is.
Rank Math and Yoast SEO are the two dominant WordPress plugins that generate schema automatically from page settings and post metadata. They are not generators in the traditional sense — they build schema dynamically from your CMS data — but for WordPress sites they handle the majority of standard schema needs including Article, WebPage, BreadcrumbList, and Organization. Both have gaps: Yoast tends to be more opinionated about its schema graph structure than some sites need, and neither handles every schema type equally well across all configurations.
<!-- Merkle generator output for FAQPage, condensed -->
<script type='application/ld+json'>
{
'@context': 'https://schema.org',
'@type': 'FAQPage',
'mainEntity': [{
'@type': 'Question',
'name': 'What does a schema audit include?',
'acceptedAnswer': {
'@type': 'Answer',
'text': 'A review of all structured data on your site...'
}
}]
}
</script>Schema App and enterprise-level generation
Schema App is in a different category from the tools above. It is a paid, enterprise-focused platform that manages your structured data as a knowledge graph — entities are defined once and reused across pages rather than hand-coded per page. For large sites with hundreds or thousands of URLs, this matters: when your organization entity changes (new address, new logo), Schema App updates it everywhere. The tradeoff is cost and setup complexity. For a site under 200 pages, the Merkle generator plus a WordPress plugin is sufficient. For a site with 50,000 product pages and a schema strategy that needs to evolve, Schema App or a comparable platform is worth the investment.
Schema App also runs ongoing validation across your schema graph, which is closer to what an ongoing schema audit provides. That said, even Schema App output should be spot-checked against what Google actually processes — the platform does not replace validation in the Rich Results Test.
Using Screaming Frog to audit existing schema
Generators produce new markup; they cannot tell you what is already deployed across your site and whether it is working. For that, Screaming Frog SEO Spider is the most practical tool I use. In its structured data tab, it crawls every page and surfaces the schema types present, along with any validation errors it can detect locally. This gives you a site-wide inventory of your structured data without logging into a cloud tool. It is not a substitute for the Google Rich Results Test — Screaming Frog uses the Schema.org vocabulary to check syntax, not Google’s eligibility rules — but for identifying missing schema, duplicate blocks, or obvious mismatches between page types and schema types, it is the fastest tool available.
Adding JSON-LD to WordPress manually
If you want precise control over your JSON-LD output without relying entirely on a plugin’s schema generation, two approaches work cleanly in WordPress. The first is WPCode (formerly Insert Headers and Footers): you write the JSON-LD block directly and choose whether it fires site-wide, on specific post types, or on individual pages. This is the safest option for adding supplementary schema that your SEO plugin does not generate — for example, Service markup on service pages where Yoast only outputs WebPage.
The second approach is hooking into wp_head via your child theme’s functions.php:
add_action( 'wp_head', 'ts_output_service_schema' );
function ts_output_service_schema() {
if ( ! is_page( 'schema-markup-consulting' ) ) return;
?>
<script type='application/ld+json'>
{
'@context': 'https://schema.org',
'@type': 'Service',
'name': 'Schema Markup Consulting',
'provider': { '@type': 'Person', 'name': 'Terry Samuels' }
}
</script>
<?php
}Both methods give you direct control over the output. The risk with functions.php injection is that it is easy to accidentally fire markup on the wrong pages if your conditionals are not tight. WPCode is slightly more forgiving because each snippet has its own enable/disable toggle and its own targeting rules.
Valid JSON-LD vs valid for rich results
This distinction trips up a lot of people who are new to structured data. A piece of JSON-LD can be perfectly valid — correct syntax, well-formed property names, proper @context and @type — and still fail Google’s rich result eligibility. The Schema Markup Validator at validator.schema.org checks conformance against the Schema.org specification. The Google Rich Results Test checks conformance against Google’s specific implementation requirements, which are a subset of the broader specification and include additional rules: content in the markup must match what is visible on the page, certain properties are required for specific rich result types, and some properties Google expects as recommended (like validThrough on JobPosting) are not required by Schema.org but are required by Google.
Always run both validators before deploying. A generator output that passes the Schema Markup Validator may still fail the Rich Results Test because the generator used placeholder values or omitted a Google-required field. AI Overviews and the knowledge graph also pull from structured data — clean, complete JSON-LD is increasingly the input these systems rely on to attribute content to the right entity.
Common mistakes
- Treating generator output as production-ready without reviewing every property against the actual page content.
- Using a generator that only supports types Google had prioritized several years ago, then missing newer rich result opportunities like
CertificationorVehicleListingPage. - Running a generator for one page type and applying that output site-wide without adjusting for pages where the type does not apply.
- Relying on a WordPress plugin to handle all schema without checking whether it is creating conflicts with any manually added JSON-LD blocks.
- Not validating generator output in the Rich Results Test before deploying — generators can produce valid JSON-LD that still fails Google validation for other reasons.
Generators are a means to an end, not a strategy. If you want to know which schema types your pages should target and whether what you have deployed is actually working, start with a schema audit. For help deciding what to implement and how to prioritize it, schema markup consulting is where that conversation happens. For the testing side of this workflow, see how to test schema markup.