Every AEO check findable runs, and how to fix each one

Contents
  1. What does the AEO family test in findable?
  2. How do I fix the structured data and FAQ checks?
  3. How do I fix the direct answer and question heading checks?
  4. How do I fix the list, table and code checks?
  5. How do I fix the readability checks?
  6. How do I fix the summary check?
  7. How do I fix the URL, semantic HTML and robots checks?
  8. 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 idWhat it checksFix in one line
aeo_structured_dataAny JSON-LD is presentAdd a JSON-LD block
aeo_faqFAQPage schema typeAdd FAQPage markup
aeo_direct_answersA paragraph of 30 to 80 wordsAnswer a question in one tight paragraph
aeo_question_headingsA heading starts with What, How or Why, or ends with ?Phrase an h2 as a question
aeo_definition_listsA <dl> is presentUse a definition list for terms
aeo_numbered_stepsAn <ol> is presentWrite steps as an ordered list
aeo_tablesA <table> is presentPut comparisons in a table
aeo_listsA <ul> or <ol> is presentUse a list for items
aeo_code_blocks<code> or <pre> is presentMark code as code
aeo_collapsibleA <details> is presentUse details for extras
aeo_conversational"you", "your" or "we" 3 or more timesAddress the reader
aeo_reading_levelAverage sentence is 22 words or fewerShorten sentences
aeo_short_sentencesAverage sentence is 20 words or fewerShorten them more
aeo_summaryText has "key takeaway", "summary" or "conclusion"Add a summary section
aeo_clean_urlPath is lowercase with no underscoresUse lowercase hyphen URLs
aeo_semantic_html4 or more semantic HTML5 elementsUse header, main, article, nav
aeo_ai_robotsNo noindex in the robots metaRemove noindex
aeo_speakableSpeakable markupAdd speakable to Article schema
aeo_answer_after_questionQuestion headings are followed by a paragraphAnswer right under the question
aeo_answer_length_idealAnswers of 20 to 80 wordsTighten or expand the answer
aeo_faq_count3 or more FAQ questions (N/A without FAQPage)Add more questions
aeo_howto_validHowTo steps are complete (N/A without HowTo)Name and describe every step
aeo_speakable_validSpeakable selectors are valid (N/A without speakable)Add cssSelector or xpath
aeo_list_after_headingA heading is followed by a listLead a section with a list
aeo_list_item_lengthList items average 25 words or fewerShorten list items
aeo_paragraph_lengthNo paragraph over 150 wordsSplit long paragraphs
aeo_section_length350 or fewer words between headingsAdd subheadings
aeo_unique_headingsNo duplicate heading textMake each heading distinct
aeo_heading_lengthHeadings of 100 characters or fewerShorten headings
aeo_heading_anchorsh2 and h3 headings have an idAdd id for deep links
aeo_toc_links3 or more in-page links on long pagesAdd a table of contents
aeo_definition_leadA section opens with a definitionStart with "X is ..."
aeo_table_captionsTables have a caption (N/A without tables)Add caption
aeo_figure_captionsFigures have a figcaption (N/A without figures)Add figcaption
aeo_details_summaryEach 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

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?

FamilyWeightQuestion it asks
SEO50%Can crawlers read and index this page?
AEO25%Is it easy to lift an answer from this page?
GEO25%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.