FAQPage and Organization JSON-LD: fields Google expects and how to validate

Published: 2026-09-05

How Schema.org FAQPage and Organization JSON-LD work in your page head, which fields matter for rich results, and a local draft-and-validate workflow before you ship.

Structured data tells search engines what a page means—not only what it looks like. For many sites the highest-value shapes are FAQPage (question/answer lists that can unlock FAQ rich results) and Organization (brand identity for Knowledge Graph–style signals). Both are usually shipped as JSON-LD inside a <script type="application/ld+json"> block in <head> (or early in <body>).

This guide covers the fields Google commonly expects for those two types, how they differ from Open Graph / Twitter meta tags, and how to draft and check markup locally so draft copy never needs to leave your machine—see Why “local only” matters for developer tools.

JSON-LD vs meta tags (and why both)

Layer Format Typical job
Meta / Open Graph <meta> / <link> in <head> Titles, descriptions, share cards, canonical URL
JSON-LD <script type="application/ld+json"> Typed Schema.org objects (FAQ, Organization, Article, Product, …)

Meta tags do not replace structured data. A polished og:image helps social previews; a valid FAQPage graph helps engines understand Q&A content for rich results. Keep robots.txt and sitemaps as separate crawl/index layers.

JSON-LD is preferred over Microdata for most greenfield pages: one self-contained JSON object, easy to generate and review, and the format Google documents for rich-result examples.

FAQPage: the shape Google looks for

A FAQ page marks up a list of questions and their accepted answers. Schema.org type: FAQPage, with mainEntity as an array of Question nodes. Each question needs a name (the question text) and an acceptedAnswer of type Answer with text.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is LocalTools?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "LocalTools is a collection of small utilities that run entirely in your browser — no uploads to a server."
      }
    },
    {
      "@type": "Question",
      "name": "Is my data stored?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. Inputs stay on your device unless you copy or download the output yourself."
      }
    }
  ]
}
Field Role
@context Almost always https://schema.org
@type FAQPage
mainEntity Array of Question objects (skip empty Q or A pairs)
Question.name The question users see
acceptedAnswer.text The answer body (plain text or simple HTML per Google’s FAQ guidelines)

Content rules that matter more than extra properties

Eligibility for FAQ rich results depends on page content and policies, not only on valid JSON:

  • The visible FAQ on the page should match the markup (same questions and answers, not a hidden dump).
  • Prefer user-facing help content—not advertising slogans stuffed as “questions.”
  • Google’s FAQ rich-result guidance has narrowed over time (who can show FAQ expansions). Valid markup is still useful for clarity and for other consumers; do not assume a SERP carousel just because JSON-LD parses.
  • Do not mark up every site page as FAQPage. Use it on pages that are genuinely FAQ-centric.

Omit incomplete rows. A generator that drops blank question/answer pairs (as LocalTools does) avoids emitting empty Question nodes that fail validation.

Organization: brand identity fields

Organization describes the entity behind the site: name, homepage, logo, social profiles, and optional contact or postal address. It is often placed sitewide (layout or homepage) rather than once per article.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Acme Inc.",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png",
  "description": "We build privacy-first developer tools.",
  "sameAs": [
    "https://twitter.com/acme",
    "https://www.linkedin.com/company/acme"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer service",
    "email": "[email protected]",
    "telephone": "+1-555-0100"
  },
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94105",
    "addressCountry": "US"
  }
}
Field Role
name Legal or brand name
url Canonical homepage (absolute HTTPS)
logo Absolute URL to a clear logo image
description Short about / tagline
sameAs Array of official profile URLs (social, Wikipedia, app stores, …)
contactPoint Optional ContactPoint with email and/or telephone
address Optional PostalAddress for a public office location

Practical minimum: name and url. Add logo and sameAs when you have stable production assets and verified profiles. Postal address and phone only when they are genuinely public—do not invent placeholder streets for SEO.

sameAs should list profiles you control. One URL per entry; avoid tracking redirects or temporary campaign links. Country codes in addressCountry are often ISO-style (US, GB) rather than full names.

Embedding: script tag, escaping, and pretty JSON

Paste JSON-LD like this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Acme Inc.",
  "url": "https://example.com"
}
</script>

Notes for safe HTML embedding:

  • Prefer application/ld+json—not a generic application/json script used for app data.
  • If the JSON string might contain </script> sequences (rare in FAQ text), escape < as \u003c inside the JSON so HTML parsers do not close the tag early. LocalTools’ generator applies this when wrapping output in a script tag.
  • Pretty-print for reviews; minify only if your build pipeline already minifies HTML and you care about a few bytes.
  • You may emit multiple JSON-LD blocks (e.g. Organization sitewide + FAQPage on the FAQ route). Keep types correct and avoid contradictory facts (different brand names on the same domain).

For general JSON readability before paste, the JSON Formatter helps; for contract-style checks of arbitrary JSON, see validating JSON with JSON Schema—that is a different job from Google’s rich-result validators.

How to validate before (and after) deploy

  1. Draft locally — build FAQ or Organization JSON-LD in-tab so unreleased product names and support answers are not uploaded to a random paste site.
  2. Sanity-check the object — required fields present, absolute HTTPS URLs for url / logo / sameAs, no empty FAQ pairs.
  3. Paste into production HTML — layout or page template; use live hostnames, not localhost.
  4. Google Rich Results Test — enter the live URL or paste HTML; confirm detected FAQ / Organization (or related) items and fix reported errors.
  5. Schema Markup Validator (schema.org) — useful for broader Schema.org conformance beyond Google’s rich-result subset.
  6. Search Console — after indexing, watch Enhancement / rich-result reports for regressions when you change templates.

Syntax-valid JSON-LD can still be ineligible for a given rich result (policy, page type, or insufficient visible content). Treat validators as “is the graph parseable and typed correctly?”—not as a ranking guarantee.

A safe local drafting workflow

  1. Choose FAQ page or Organization (or load a sample to learn the shape).
  2. For FAQ: add real Q&A pairs that match on-page copy. For Organization: fill name, URL, then logo, sameAs, contact, and address as needed.
  3. Keep pretty-print and script tag wrapping on for paste-ready <head> snippets; drop the banner comment in production if you prefer clean HTML.
  4. Copy into your framework’s metadata / layout API with production URLs.
  5. After deploy, run Rich Results Test and fix errors before announcing the page.

Building structured data in the browser keeps draft FAQs and brand details on your device. For the privacy model, see Why “local only” matters for developer tools.

Try it locally in your browser

Use the structured data (JSON-LD) generator to:

  • Switch between FAQ page and Organization templates (or load samples).
  • Fill questions/answers or name, URL, logo, sameAs, contact, and postal address.
  • Copy a paste-ready <script type="application/ld+json"> block—generation runs only in this tab; nothing is uploaded to LocalTools.

The tool emits common FAQPage and Organization shapes, not every optional Schema.org property. Rich-results eligibility still depends on Google’s policies and the visible page content.

Related reading

All learn articles