Quick answer: add a <script type="application/ld+json"> block containing an FAQPage object whose mainEntity array lists every question and answer as Question and Answer nodes, keep the text identical to what is visibly on the page, and verify it with Google's Rich Results Test. The markup is cheap; the eligibility rules are what get pages rejected.

What FAQPage actually does

FAQPage structured data makes your existing Q&A eligible for rich results — the collapsible question-and-answer blocks that can appear under a listing in search. It is an eligibility signal, not a ranking boost. Google has repeatedly stated that structured data does not move positions directly; it changes how the result is presented, and richer presentation can raise click-through when the answer is good.

The corollary matters: the markup cannot rescue weak content. A page whose Q&A section does not answer the query will not earn the rich treatment.

The requirements at a glance

Requirement Rule
Schema type FAQPage for self-answered questions; QAPage for user-submitted answers
Content Every question and answer must be visible in the page HTML
Answers Self-contained text — no "see above"
Format JSON-LD in a <script type="application/ld+json"> block
Validation Rich Results Test before requesting indexing
Common rejection Markup text that does not match the visible page

The JSON-LD structure

The smallest valid block is a graph with one @type: "FAQPage" and a mainEntity array.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the free plan limit?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The free plan includes up to 10 exported designs with no watermark and no credit card."
      }
    }
  ]
}

Rules that make it valid:

  1. Every Question has exactly one acceptedAnswer with a text field.
  2. The questions are real questions, phrased as users search them — ending with a question mark.
  3. The answers are self-contained. Google's voice and AI answer surfaces can read the answer aloud, so "yes, see above" fails.
  4. The content is visible on the page, not hidden behind tabs the crawler cannot render.

Where it goes

JSON-LD belongs in the <head> or the body — either works. For a blog or CMS that does not let you edit templates, a code-injection footer that builds the graph from the rendered Q&A headings is a legitimate approach: the page ships a visible FAQ section, and the script serializes the same text into schema. That is how a template can keep markup and content in sync, because a hard-coded JSON-LD block rots the moment an editor rewrites a question.

Validate before you publish

Three checks, in order:

  1. Paste the URL into Google's Rich Results Test and confirm it reads "FAQ page" with the right number of questions.
  2. Run the URL through the URL Inspection tool and request indexing so the new markup is picked up.
  3. After a few days, check the Enhancements report in Search Console for errors or "eligible but no rich result" notices.

A page can validate perfectly and still not show rich results — Google decides whether to display them per query, and FAQ-rich results on some commercial queries have been reduced over the past years. Treat the schema as the floor, not the promise.

What gets it rejected or penalized

Google's guidelines have a short list of violations that fail or trigger manual review:

  • FAQ content in the JSON-LD that is not visible on the page.
  • Promotional answers dressed as questions ("Where can I buy?") on a page that is not the product itself.
  • User-generated FAQs (forum threads, answers by multiple users) — those use QAPage, not FAQPage; the two are different schemas.
  • Repeating the same question across pages, which is a duplicate-content problem and a spam signal.

How this fits a content cluster

A page that ranks well on a size question — say the social media image sizes hub — carries the same FAQ section that wins a featured snippet and feeds the FAQ schema. The Q&A, the snippet, and the markup are one piece of content used three ways, not three separate efforts. If you are building a set of pages around a topic, the pillar page model keeps the questions distributed without overlap. Keeping the visible Q&A and the schema in sync is exactly the kind of templating a generated content set should handle; Neatico produces pages with the FAQ section and matching structure built together.

Frequently asked questions

Does FAQ schema help rankings? It is not a direct ranking factor. It makes a listing eligible for rich results, which can improve click-through when the answer matches the query.

How many questions should I include? Three to eight solid, self-contained questions on a focused page. Padding with questions nobody asks does not help and can dilute the page.

Can I put FAQ schema on a page without visible questions? No — the Q&A must be present in the visible HTML. Schema that quotes content the user cannot find is a guideline violation.

FAQPage or QAPage? FAQPage for questions you ask and answer yourself. QAPage for pages where users submit answers, like forums and comment threads.

Related guide: the GEO guide.