TaskBuild a FAQ section. Visible: <section><h2>FAQ</h2> + two <details><summary>question</summary><p>answer</p></details>. Hidden: <script type='application/ld+json'> matching FAQPage with the same two Q&A pairs.
JSON-LD FAQPage: SERP accordion
100 XP7 min
Theory
When FAQ markup wins
Pages with an FAQ section + valid FAQPage structured data sometimes get an expandable accordion right in the Google SERP β questions visible without ever clicking your link. Sounds bad ("they get the answer without visiting") but in practice these results dominate the page real-estate and grab attention.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do I need to install Python?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Python runs in your browser via Skulpt."
}
},
{
"@type": "Question",
"name": "Is it really free?",
"acceptedAnswer": {
"@type": "Answer",
"text": "First 15 lessons free, no card. Then a 7-day trial."
}
}
]
}
</script>When the rich result actually shows
- The visible page must contain THE SAME questions + answers (Google compares).
- Each question must be a real user question, not marketing copy.
- No promotional content in the answers β Google demotes it.
- Site must have organic search traffic to be considered.
Pair with visible FAQ
Don't ship JSON-LD without the matching HTML. Best pattern:
<section>
<h2>FAQ</h2>
<details>
<summary>Do I need to install Python?</summary>
<p>No. Python runs in your browser via Skulpt.</p>
</details>
<details>
<summary>Is it really free?</summary>
<p>First 15 lessons free, no card.</p>
</details>
</section>
<script type="application/ld+json">{ ... matching FAQPage ... }</script>π
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β card required, cancel anytime.
Sign up β free trial βFirst 10 lessons in each track are free. No card needed for those.