Schema Markup Generator
Generate JSON-LD structured data for Article, FAQ, Product, and LocalBusiness — ready to paste into your <head>
Add question-answer pairs. Google shows up to 3 FAQ entries in rich results.
When Google crawls a webpage, it reads HTML — but HTML alone doesn't tell the search engine what kind of content it's looking at. Is this page selling a product or describing one? Is that a list of questions from a forum or a structured FAQ section? Structured data, specifically JSON-LD schema markup, is the answer to that ambiguity — and understanding it deeply can meaningfully change how your pages appear in search results.
What JSON-LD Actually Is (And Why It Beat the Alternatives)
Before JSON-LD became Google's recommended format in 2015, webmasters had two other ways to embed structured data: Microdata and RDFa. Both required you to annotate your actual HTML elements with extra attributes, weaving schema vocabulary directly into your markup. The problem? Any time your template changed, your structured data could silently break. JSON-LD took a different approach: it lives inside a <script type="application/ld+json"> tag in your page's <head>, completely decoupled from the visual HTML. You can update your layout without touching your schema, and vice versa. That separation of concerns is why even WordPress's Yoast plugin and Shopify's core both generate JSON-LD rather than Microdata today.
The "LD" in JSON-LD stands for Linked Data. The format uses the @context key to point to a vocabulary namespace — almost always https://schema.org — and @type to declare what kind of entity you're describing. Everything else is just properties defined by that schema type.
Article Schema: More Than Just a Headline
The Article schema type is one of the most misunderstood. Many people think adding it automatically gets you the "Top Stories" carousel treatment. It doesn't — that requires AMP compliance or Web Stories for some features, plus Google News inclusion. What Article schema does guarantee is that Google can correctly parse your author, publication date, and publisher, which feeds into E-E-A-T signals (Experience, Expertise, Authoritativeness, Trustworthiness).
The datePublished and dateModified fields deserve special attention. Google uses these to surface freshness in search results, and discrepancies between what's in your schema and what's visible on the page can trigger manual actions or at minimum suppress rich result eligibility. Always use ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDThh:mm:ssZ) and make sure the date in your schema matches what a user actually sees on the page.
FAQ Schema and the Click-Through Rate Math
FAQ schema is arguably the highest-ROI structured data type for content marketers right now. When Google decides to show an FAQ rich result, it can expand to show two or three question-answer pairs directly in the SERP, sometimes pushing competitor results completely below the fold on mobile. Studies from various SEO agencies have shown CTR improvements of 20–30% on pages that earn FAQ rich results — but the mechanism is counterintuitive. You're trading some clicks (users who get the answer in the SERP and don't visit) for a much larger share of the remaining clicks, plus a massive increase in SERP real estate.
One nuance: Google says FAQ schema is appropriate when your page contains a list of questions and answers and the content is "generated by the site itself." User-generated Q&A forums should use QAPage schema instead. Misusing the type risks losing rich result eligibility entirely. Also, Google quietly started being more selective about showing FAQ rich results in late 2023 — they now tend to appear primarily for authoritative, established domains rather than being universally available.
Product Schema: The Fields That Actually Drive Rich Results
Product schema is where the stakes are highest for e-commerce. Google's Shopping tab, product knowledge panels, and inline price/availability annotations in organic results all depend on it. But not all Product schema fields carry equal weight.
The offers property is the gatekeeper. Without a valid Offer object containing a price, priceCurrency, and availability, your product page won't qualify for price-annotated rich results at all. The availability field must use schema.org URLs — values like https://schema.org/InStock rather than just the string "InStock." This trips up a surprising number of manually written schemas.
The aggregateRating subtype requires both a ratingValue and either a reviewCount or ratingCount. Google also validates that there are actual reviews on the page matching the count you claim — injecting a fake aggregateRating with no corresponding review content is a policy violation that can result in manual penalties. The rating should reflect real user input, not a number you chose because it looks good.
LocalBusiness Schema: The Local SEO Multiplier
For businesses with physical locations, LocalBusiness schema (and its subtypes like Restaurant, MedicalBusiness, Store) feeds directly into the Knowledge Panel that appears in branded searches. It supplements — but does not replace — your Google Business Profile. Both matter, but they serve different systems: GBP feeds Google Maps and Local Pack, while schema markup helps the Knowledge Graph parser understand your entity.
The openingHours field uses a specific shorthand format: two-letter day abbreviations (Mo, Tu, We, Th, Fr, Sa, Su) followed by a space and a 24-hour time range. A business open Monday through Friday 9am to 6pm writes it as "Mo-Fr 09:00-18:00". Multiple entries for different schedules go into an array. Getting this wrong won't break the schema, but Google may ignore the property entirely if the format doesn't match the spec.
Choosing the right subtype matters more than most guides admit. Declaring your type as Restaurant rather than generic LocalBusiness unlocks restaurant-specific properties like servesCuisine, hasMenu, and acceptsReservations. Each of these can surface in local rich results in ways that generic LocalBusiness properties cannot.
Validation, Testing, and Common Failure Modes
Google's Rich Results Test at search.google.com/test/rich-results is the primary tool for validation. It not only checks JSON syntax but verifies that required properties for each rich result type are present. Schema.org's own validator at validator.schema.org is more thorough at the vocabulary level but doesn't know which fields Google specifically requires — use both.
Common failure modes worth knowing: first, escaping issues. If your JSON-LD contains user-submitted content (like a product description or FAQ answer that a customer wrote), apostrophes, quotation marks, and backslashes need to be properly escaped. A single unescaped double-quote inside a JSON string value will silently invalidate the entire schema block. Second, nested entity references. If you reference an author by URL ("author": {"@type": "Person", "url": "https://..."}) instead of just name, ensure that URL itself has schema markup identifying it as a Person — otherwise you're making a reference Google can't resolve. Third, date formatting. 2024-1-5 is not valid ISO 8601; it must be 2024-01-05 with zero-padded month and day.
Finally, remember that schema markup influences rich results eligibility but doesn't guarantee them. Google treats structured data as a signal, not a directive. Implement it correctly, keep it honest about the page's actual content, and let the ranking algorithms do the rest.