Every AEO check findable runs, and how to fix each one
Contents
- What does the AEO family test in findable?
- How do I fix the structured data and FAQ checks?
- How do I fix the direct answer and question heading checks?
- How do I fix the list, table and code checks?
- How do I fix the readability checks?
- How do I fix the summary check?
- How do I fix the URL, semantic HTML and robots checks?
- Key takeaways
AEO is about making your page easy to answer from. People ask a question. A search feature or an assistant looks for a clean passage that answers it. These 35 checks test whether your page offers that. Most are simple pattern matches on your HTML or text.
What does the AEO family test in findable?
AEO is 25% of your findable score. It has 35 checks on answer shape: structured data, FAQ markup, short direct paragraphs, question headings, lists, tables, plain language and clean markup. Every check is a pattern test on your HTML and text, so each one is only a proxy.
| Check id | What it checks | Fix in one line |
|---|---|---|
aeo_structured_data | Any JSON-LD is present | Add a JSON-LD block |
aeo_faq | FAQPage schema type | Add FAQPage markup |
aeo_direct_answers | A paragraph of 30 to 80 words | Answer a question in one tight paragraph |
aeo_question_headings | A heading starts with What, How or Why, or ends with ? | Phrase an h2 as a question |
aeo_definition_lists | A <dl> is present | Use a definition list for terms |
aeo_numbered_steps | An <ol> is present | Write steps as an ordered list |
aeo_tables | A <table> is present | Put comparisons in a table |
aeo_lists | A <ul> or <ol> is present | Use a list for items |
aeo_code_blocks | <code> or <pre> is present | Mark code as code |
aeo_collapsible | A <details> is present | Use details for extras |
aeo_conversational | "you", "your" or "we" 3 or more times | Address the reader |
aeo_reading_level | Average sentence is 22 words or fewer | Shorten sentences |
aeo_short_sentences | Average sentence is 20 words or fewer | Shorten them more |
aeo_summary | Text has "key takeaway", "summary" or "conclusion" | Add a summary section |
aeo_clean_url | Path is lowercase with no underscores | Use lowercase hyphen URLs |
aeo_semantic_html | 4 or more semantic HTML5 elements | Use header, main, article, nav |
aeo_ai_robots | No noindex in the robots meta | Remove noindex |
aeo_speakable | Speakable markup | Add speakable to Article schema |
aeo_answer_after_question | Question headings are followed by a paragraph | Answer right under the question |
aeo_answer_length_ideal | Answers of 20 to 80 words | Tighten or expand the answer |
aeo_faq_count | 3 or more FAQ questions (N/A without FAQPage) | Add more questions |
aeo_howto_valid | HowTo steps are complete (N/A without HowTo) | Name and describe every step |
aeo_speakable_valid | Speakable selectors are valid (N/A without speakable) | Add cssSelector or xpath |
aeo_list_after_heading | A heading is followed by a list | Lead a section with a list |
aeo_list_item_length | List items average 25 words or fewer | Shorten list items |
aeo_paragraph_length | No paragraph over 150 words | Split long paragraphs |
aeo_section_length | 350 or fewer words between headings | Add subheadings |
aeo_unique_headings | No duplicate heading text | Make each heading distinct |
aeo_heading_length | Headings of 100 characters or fewer | Shorten headings |
aeo_heading_anchors | h2 and h3 headings have an id | Add id for deep links |
aeo_toc_links | 3 or more in-page links on long pages | Add a table of contents |
aeo_definition_lead | A section opens with a definition | Start with "X is ..." |
aeo_table_captions | Tables have a caption (N/A without tables) | Add caption |
aeo_figure_captions | Figures have a figcaption (N/A without figures) | Add figcaption |
aeo_details_summary | Each details has a summary (N/A without details) | Add summary |
How do I fix the structured data and FAQ checks?
Two checks cover markup: aeo_structured_data passes with any JSON-LD block, and aeo_faq passes only with a FAQPage type. Add JSON-LD that matches content people can see on the page. Do not mark up questions that are not visible. A block that is not valid JSON is dropped, so a trailing comma fails both checks at once.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "What is AEO?",
"acceptedAnswer": {"@type": "Answer", "text": "Making a page easy to answer from."}
}]
}
</script>
See schema.org FAQPage and Google's structured data intro. Markup helps machines read the page. It does not force a rich result.
How do I fix the direct answer and question heading checks?
Two checks cover answer shape: aeo_direct_answers wants one paragraph of 30 to 80 words, and aeo_question_headings wants a heading that starts with What, How or Why, or ends with a question mark. Put the answer right under the heading. Only <p> elements count as paragraphs, so a 50 word answer inside a <div> is invisible to the check.
<h2>How do I add a canonical link?</h2>
<p>Put a link tag in the head with rel set to canonical and your preferred URL.
Every duplicate version of the page should point at that same URL. Search engines
then treat that address as the main one.</p>
The word range is a guess at a good snippet size. It is not a published rule.
How do I fix the list, table and code checks?
Six checks reward structure: aeo_definition_lists, aeo_numbered_steps, aeo_tables, aeo_lists, aeo_code_blocks and aeo_collapsible. Each one passes when the element exists. Use the right element for the job and these pass on their own. An <ol> satisfies both aeo_numbered_steps and aeo_lists, so a page with one ordered list and no bullets still passes both.
<ol><li>Open the file.</li><li>Add the tag.</li><li>Save.</li></ol>
<dl><dt>AEO</dt><dd>Answer engine optimization.</dd></dl>
<details><summary>More detail</summary><p>Extra text.</p></details>
Do not add an empty table just to pass. These checks only see that the tag exists. They cannot tell if it helps the reader. A pageful of prose with no steps or data may not need all six.
How do I fix the readability checks?
Three checks cover plain writing: aeo_conversational, aeo_reading_level and aeo_short_sentences. Use "you" or "we" at least 3 times. Keep the average sentence at 22 words or fewer for reading level, and 20 or fewer for the short sentence check. The pronoun count needs a space on each side, so "you," and "you." are not counted.
Cut filler. Split long sentences at "and" or "but". Prefer plain words. The average is computed by splitting text on periods, so a page full of bullet points with no periods looks like one giant sentence and fails. End list items with a period if that bites you.
How do I fix the summary check?
The aeo_summary check is simple. It passes when your text contains the phrase "key takeaway", "summary" or "conclusion". That is all. It does not read your summary or judge it. A page that says "no summary" would pass. The match is case-insensitive and runs over the whole page text, so a nav link called "Summary" passes it too.
Do the real thing anyway. End the page with a "Key takeaways" section of 3 to 6 bullets. Readers who skim land there first. The check is a nudge to write one, not proof that you wrote a good one.
How do I fix the URL, semantic HTML and robots checks?
Three checks cover housekeeping: aeo_clean_url wants a lowercase path with no underscores, aeo_semantic_html wants 4 or more semantic HTML5 elements, and aeo_ai_robots fails if the robots meta contains noindex. Use hyphens, landmark elements and no noindex. The elements counted are article, section, main, nav, aside, header, footer, time, figure and details.
<!-- good path: /learn/aeo-checks bad path: /Learn/AEO_Checks -->
<header>...</header>
<nav>...</nav>
<main><article>...</article></main>
<footer>...</footer>
Despite the name, aeo_ai_robots only checks the robots meta tag for noindex. It does not read robots.txt, and it ignores nofollow and nosnippet. For AI crawler rules in robots.txt, run with -site and read the unscored Site checks in the GEO guide.
Key takeaways
- AEO is 25% of the findable score and has 35 checks.
- Most checks only test that an element or phrase exists. They are proxies.
- Put a 30 to 80 word answer right under a question heading.
- Use lists, tables, steps and code blocks where the content calls for them.
aeo_summaryonly looks for the words summary, key takeaway or conclusion. Write a real one.- Keep sentences short and speak to the reader as "you".
- A good score helps, but it does not guarantee a citation anywhere.
FAQ
- What is AEO in findable?
- AEO means answer engine optimization. The checks test whether your page is easy to lift an answer from: clear questions, short answers, lists, tables, structured data and plain sentences.
- How much of the score is AEO?
- AEO is 25% of the findable score. SEO is 50% and GEO is 25%.
- Is aeo_summary a smart check?
- No. It only looks for the words summary, key takeaway or conclusion in your text. It cannot judge whether your summary is good, so write a real one.
- Does passing AEO checks guarantee I get quoted by an AI answer?
- No. The checks measure structure that helps, not a promise. Nobody outside the search companies can guarantee a citation, and findable does not claim to.
How does findable score a page?
| Family | Weight | Question it asks |
|---|---|---|
| SEO | 50% | Can crawlers read and index this page? |
| AEO | 25% | Is it easy to lift an answer from this page? |
| GEO | 25% | Does the page give a generative model a reason to cite it? |
The hosted audit waits up to 10 s for a page and fetches at most 5 MB. It reads robots.txt and llms.txt up to 512 KB each.
More guides
- Canonical Tags and Duplicate Content: How to Get Them Right
- Use one canonical link per page that points to its own absolute URL. Learn the checks canonical, canonical_self and canonical_absolute and fix them.
- FAQ Schema for Answer Engines: Markup and Checks
- How to add FAQPage JSON-LD that answer engines can lift, and how findable tests aeo_faq, aeo_faq_count and faq_valid. Includes a working example.
- Get Findable in 15 Minutes: A Step by Step Checklist
- Install findable, audit a page and your site, fix the top failures, then add MCP, the web UI, the API and a CI gate. Every step has a copy-paste command.
- Every findable GEO Check ID, Plus AI Crawler Checks
- All 27 GEO checks in findable explained, plus the unscored Site checks for GPTBot, ClaudeBot and llms.txt. GEO is 25% of the score. Fixes included.
- Image Alt Text, Dimensions and Lazy Loading Explained
- Fix img_alt, img_dimensions, img_alt_quality, img_lazy_loading and img_modern_format. See what each image check in findable tests and how to pass.
- JSON-LD Schema Basics: What findable Checks and Why
- Learn what JSON-LD is, which schema.org types findable validates, and how to fix jsonld_valid, jsonld_context and empty or relative values.
- llms.txt: What It Is and How findable Checks It
- llms.txt is a plain Markdown file at your site root that points AI tools to your key pages. See the llms-txt check and how to write the file.
- How to Write a Meta Description That Passes findable
- Write a meta description of 120 to 160 characters, one per page, that matches the page. See the checks desc_exists, desc_length and desc_single.
- Open Graph and Twitter Cards: Fix Your Share Previews
- Add og:title, og:description, og:image, og:url and twitter:card so links unfurl well. See every social check findable runs and how to pass it.
- robots.txt and AI Crawlers: GPTBot, ClaudeBot, PerplexityBot
- How robots.txt rules decide whether GPTBot, ClaudeBot, PerplexityBot and Google-Extended can fetch your page, and how findable tests each one.
- Every findable SEO Check ID and How to Fix It
- A plain guide to all 98 SEO checks in findable, from title_length to csp. See what each id tests, when it passes and the fix. SEO is 50% of your score.
- SEO vs AEO vs GEO: The Difference in Plain Words
- SEO, AEO and GEO each target a different reader: a search crawler, an answer box, or a generative AI model. See what wins in each and how to check them.
- Why AI Answer Engines Skip Your Site and How to Fix It
- ChatGPT, Perplexity and Claude may ignore your pages for five fixable reasons, from robots.txt blocks to missing answers. Learn each cause and its check id.