Infographic: FAQ and HowTo structured data implementation โ€” a code editor showing JSON-LD next to the rendered rich result โ€” NEXT SEO24

FAQ and HowTo schema in practice: a hands-on implementation guide

Most schema markup guides explain what structured data is and stop there. This one gives you working code, the rules that actually trip people up during implementation, and an honest account of how much rich-result eligibility has narrowed since 2023 โ€” so you know exactly what you're getting before you invest the time.

What this schema actually does โ€” and doesn't

FAQPage and HowTo structured data make your content eligible for expanded rich results in Google Search โ€” extra visual space and, potentially, a higher click-through rate for the same ranking position. They are not a direct ranking factor: Google's own documentation is explicit that structured data doesn't guarantee a rich result or a ranking boost by itself. Treat it as a clarity and presentation layer on top of genuinely good content, not a shortcut around writing that content.

A working FAQPage example

This is the exact pattern used across every article on this site โ€” a valid, minimal FAQPage block:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long does SEO take to work?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Most sites see meaningful movement in 3-6 months, with gains compounding after that."
      }
    }
  ]
}

Add one object per question inside the mainEntity array. The critical rule: every question and answer in the markup must appear, in substance, as visible text on the same page โ€” this is not a place to summarise or add content that only exists in the schema.

A working HowTo example

For genuine step-by-step processes โ€” not every page needs one โ€” HowTo schema looks like this:

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to submit a sitemap in Search Console",
  "step": [
    {
      "@type": "HowToStep",
      "name": "Open Search Console",
      "text": "Sign in and select your verified property."
    },
    {
      "@type": "HowToStep",
      "name": "Go to Sitemaps",
      "text": "Find it under the Indexing section in the left menu."
    },
    {
      "@type": "HowToStep",
      "name": "Submit the URL",
      "text": "Enter your sitemap path (e.g. sitemap.xml) and click Submit."
    }
  ]
}

Each HowToStep should correspond to a real, distinct step visible in your content โ€” adding an image property per step where you have one genuinely improves how it can render.

Rules that actually trip people up

  • Markup must match visible content, exactly. Structured data describing content that isn't genuinely on the page is a policy violation, not just a missed opportunity โ€” it can trigger a manual action, not merely fail to render.
  • FAQ rich results are no longer shown broadly. Since 2023, Google has limited FAQ rich-result display to a narrower set of well-established, authoritative sites. Implement it correctly regardless โ€” it's still good practice and may qualify later โ€” but don't treat visible rich results as guaranteed.
  • Don't add FAQ schema to every page reflexively. Pages with generic, boilerplate questions added purely to try to trigger a rich result add noise without adding eligibility.
  • Validate before publishing, every time. Run new markup through Google's Rich Results Test before it goes live โ€” a single malformed field can invalidate the entire block silently.
  • Use JSON-LD, not microdata. JSON-LD lives in one script block, is far easier to maintain, and is Google's recommended format โ€” this entire site uses it exclusively.

A 2026 update worth knowing about

In March 2026, Google added new supported attributes specifically for discussion-forum and Q&A page markup, aimed at helping it understand comment-thread structure more precisely. If your site runs a forum or community Q&A section โ€” distinct from a standard FAQ block โ€” the relevant schema type is DiscussionForumPosting, not FAQPage. It's a narrow use case, but worth knowing the correct type exists rather than forcing forum content into FAQ markup it wasn't designed for.

A pre-publish checklist

  • Every question/answer or step in the markup exists as visible text on the page
  • Tested through Google's Rich Results Test with no errors
  • JSON-LD format, placed once per page, not duplicated across templates
  • FAQ schema only on pages with genuine, specific questions โ€” not boilerplate
  • HowTo schema only on pages describing a real, ordered process

If you'd like us to check your current structured data implementation for errors or missed opportunities, send us your site โ€” this is a quick, concrete audit to run.

Frequently asked questions

Does FAQPage schema still show as a rich result for every site?

No. Since 2023, Google has limited FAQ rich results to a narrower set of well-established, authoritative sites rather than showing them broadly. The schema is still worth implementing correctly for the sites that do qualify and for general content clarity, but it shouldn't be the main reason you add it.

Can I add FAQ schema to content that isn't visible on the page?

No. The questions and answers in your structured data must match content genuinely visible to users on that page. Markup describing content that isn't actually there is a policy violation that can result in a manual action, not just a missed rich result.

Should I use JSON-LD or microdata for schema markup?

JSON-LD is Google's recommended format and the one used throughout this site. It's easier to implement and maintain since it lives in a single script block rather than being woven through your HTML attributes.

Want your structured data checked for errors?

Send us your site and we'll review your current schema implementation โ€” what's broken, what's missing, and what's worth adding. No obligation.

Chat on WhatsApp โ†’