Free AEO Audit
Audits one page plus the site's robots.txt and llms.txt. It reads HTML; it does not ask an assistant anything.
Page checks
Site checks
Paste a URL. The audit reads the served HTML, robots.txt and llms.txt and scores 17 things an answer engine needs to quote the page. It never asks a model anything.
Heaviest checks: a paragraph under each heading (12), an answer in the first paragraph (12), question-shaped headings (10), readable without JavaScript (8).
Not covered: whether ChatGPT or Perplexity actually names you. That is a prompt-level scan, which is the paid part.
About six audits an hour per visitor: each one is three fetches through a proxy limited to 20.
We ran this audit on the 23 pages on page one for "free aeo audit", "aeo checker" and "aeo audit tool" on 13 September 2026. Median score 63, range 14 to 96.
Undated: 16 of 23 carry no date markup. Unattributed: 13 have no author. No FAQ or HowTo schema: 12. No JSON-LD at all: 8.
JavaScript shells: 3 pages serve 33 words or fewer of HTML, including the #1 result for "aeo checker" (15/100).
The top scorers are articles, not tools: 96 and 84 went to two blog posts about checkers; the tool landing pages cluster at 55 to 70.
15 of 23 sites serve an llms.txt. Two block AI crawlers in robots.txt: LinkedIn (GPTBot, ClaudeBot, PerplexityBot) and one tools blog (GPTBot, ClaudeBot).
The page is half of it. The other half is who cites you.
Assistants build answers from other people's pages: comparison articles, roundups, niche blogs. MentionAgent finds those pages, emails the people who run them, and gets your product mentioned. The paid scan also runs the actual prompts and tells you which assistants name you.
See how MentionAgent worksWhat this audit checks
Every check below is made from the HTML the server returns for the page, plus two more fetches for /robots.txt and /llms.txt. Nothing is inferred from a model, a third-party API or a database of ours. The weights add to 100.
| Check | Weight | Pass condition | Why it matters for answer engines |
|---|---|---|---|
| Answer near the top | 12 | The first paragraph after the H1 is 25 to 120 words of prose | Assistants quote the passage that answers the question; a page that opens with a hero image and a slogan has none. |
| Question-shaped headings | 10 | At least two H2 or H3 headings phrased as a question (what, how, why, which, when, can, does, is, should) or ending in a question mark | Headings that match how people ask are the sections retrieval systems pull, and the FAQ shape assistants prefer. |
| A paragraph under each heading | 12 | At least 70% of section headings are followed directly by a paragraph of 25 or more words, a list or a table (an H2 that opens into an H3 is not counted) | A heading followed by an image, a list of links or a one-liner gives nothing quotable for that question. |
| Single H1 | 3 | Exactly one H1 | The page's one question. Zero or several confuse what the page answers. |
| Enough text | 6 | At least 300 words of visible text, warning under 600 | Short pages rarely contain a complete answer; the check is a floor, not a target. |
| Readable without JavaScript | 8 | The served HTML holds the text; fails when it has under 100 words and more script than content. A failure here caps the whole score at 40 | Most AI crawlers read the served HTML and do not run scripts. If the article only exists after hydration, they see the shell. |
| Structured data present | 5 | At least one JSON-LD block that parses | The machine-readable summary of what the page is; the next four checks read it. |
| Article or page type | 5 | Article, BlogPosting, NewsArticle, TechArticle, WebPage or a Product/Service type in JSON-LD | Declares what kind of thing the page is, which is how the author and date fields get attached. |
| FAQ or HowTo schema | 6 | A FAQPage with at least two questions, or a HowTo with steps | Question and answer pairs in the markup are the most directly quotable structure a page can carry. |
| Author markup | 5 | An author in JSON-LD, a meta name="author", or rel="author" | Attribution is part of how sources are weighed, and a named author or organization is what gets cited. |
| Date markup | 5 | datePublished or dateModified in JSON-LD, an article:published_time meta, or a <time datetime> | Assistants prefer recent sources for anything that changes; an undated page cannot be judged recent. |
| Tables or lists | 4 | At least one table, or at least two lists with three or more items | Comparisons and steps in tables and lists are extracted as units; the same facts in a paragraph often are not. |
| Outbound citations | 4 | At least two links to other domains in the body | Pages that cite are treated as sources more than pages that assert. |
| Title, description, canonical | 5 | All three present; description under 160 characters; canonical on the page's own domain | The basics every crawler reads first, and a missing canonical splits the page's signals. |
| Not blocked from indexing | 4 | No noindex in a robots meta or the X-Robots-Tag header | A noindex page is invisible to search-grounded assistants too. |
| AI crawlers allowed in robots.txt | 4 | None of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot or Bingbot is disallowed on the root; Google-Extended, Applebot-Extended and CCBot are reported but not scored | A retrieval crawler that is blocked cannot fetch the page to cite it. Google-Extended only affects Gemini training, not Search or AI Overviews. |
| llms.txt | 2 | /llms.txt returns 200 and looks like markdown | A proposed convention that no major assistant has committed to; cheap to add, so it is reported and weighted lightly. |
The 23 pages that rank for an AEO audit, audited
The obvious test for a tool like this is the pages that rank for it. On 13 September 2026 we took the ten organic results for "free aeo audit", "aeo checker" and "aeo audit tool" (23 unique URLs after overlap), fetched each one the way the tool does, and ran the same 17 checks headless. Nothing was adjusted by hand; the numbers below are the tool's output.
The median is 63. The spread says more than the median: the two highest scores, 96 and 84, went to blog posts about AEO checkers, and the lowest four, 14 to 25, are checker apps whose served HTML is a shell that fills in after JavaScript runs. The #1 result for "aeo checker" serves 11 words of text and 101 KB of inline script, so an assistant fetching it gets nothing to quote about the product that ranks first for the phrase. Across the set, the group that fails most is attribution: 16 of 23 pages carry no date markup and 13 name no author, which is the cheapest thing on the list to fix.
Site access is the strongest group. 15 of 23 serve an llms.txt, about what you would expect from people selling answer engine optimization. Only two block AI crawlers: LinkedIn, which blocks GPTBot, ClaudeBot and PerplexityBot on the whole site, and one SEO tools blog that blocks GPTBot and ClaudeBot while ranking for a query about being found by them.
| Page | Ranks for | Score | Passed | Heaviest failures |
|---|---|---|---|---|
| airanklab.com/blog/aeo-checker-answer-engine-… | aeo checker #7 | 96 | 16/17 | outbound citations |
| seoscore.tools | free aeo audit #5, aeo audit tool #3 | 88 | 16/17 | paragraph under headings |
| aeoengine.ai/aeo-audit-tool | aeo audit tool #5 | 87 | 13/17 | author, outbound citations |
| chudi.dev/tools/aeo-audit | free aeo audit #9 | 84 | 13/17 | date |
| maciejturek.com/aeo/best-aeo-checkers.html | aeo checker #8 | 84 | 14/17 | FAQ/HowTo schema, outbound citations |
| hubspot.com/ai-search-grader | free aeo audit #3, aeo checker #2, aeo audit tool #2 | 82 | 13/17 | author, date |
| stackmatix.com/blog/aeo-tools-software | aeo audit tool #6 | 82 | 13/17 | paragraph under headings |
| foglift.io/aeo-checker | aeo checker #4 | 80 | 13/17 | author, date, outbound citations |
| contextlyai.com | free aeo audit #4 | 70 | 11/17 | FAQ/HowTo schema, structured data, page type |
| inboundav.com/free-aeo-visibility-audit | free aeo audit #6 | 67 | 9/17 | author, date, tables or lists |
| aeoaudittool.com | aeo audit tool #1 | 66 | 10/17 | paragraph under headings, date, outbound citations |
| aeotrack.io/audit | free aeo audit #1 | 63 | 10/17 | question headings, page type, date |
| aeo-agent.ai/tools/free-aeo-checker | aeo checker #6 | 63 | 9/17 | paragraph under headings, FAQ/HowTo schema, date |
| semai.ai/ai-answer-engine-optimization-t… | aeo audit tool #8 | 62 | 8/17 | FAQ/HowTo schema, structured data, page type |
| aeoengine.ai/aeo-report | free aeo audit #2 | 57 | 9/17 | paragraph under headings, FAQ/HowTo schema, structured data |
| siteimprove.com/toolkit/aeo-checker | aeo checker #5 | 56 | 7/17 | FAQ/HowTo schema, page type, author |
| seranking.com/answer-engine-optimization-tool… | aeo checker #9 | 55 | 8/17 | paragraph under headings, FAQ/HowTo schema, structured data |
| aeo-copilot.com/website-audit | free aeo audit #8 | 40 (capped) | 13/17 | paragraph under headings, readable without JS, enough text |
| linkedin.com/showcase/aeo-audit-tool | aeo audit tool #4 | 35 | 5/17 | paragraph under headings, question headings, enough text |
| contentmonk.io/ai-visibility-audit | free aeo audit #7 | 25 | 4/17 | paragraph under headings, question headings, enough text |
| aeochecker.app | aeo checker #3 | 21 (capped) | 4/17 | paragraph under headings, question headings, readable without JS |
| aeochecker.ai | aeo checker #1 | 15 (capped) | 4/17 | answer near the top, paragraph under headings, question headings |
| ai-audit.seogrow.co/aeo-audit | aeo audit tool #7 | 14 | 3/17 | answer near the top, paragraph under headings, question headings |
Pass rates by group across the 23: quotable structure 64%, attribution markup 48%, extractable facts 68%, site access 86%. Read that as a picture of what a page that ranks for this phrase looks like, not as a benchmark to hit; the checks are a floor, and the cohort is small.
What it cannot tell you
This is an on-page audit. It answers "does this page give an assistant something to quote and attribute?". It does not answer "does ChatGPT name me when someone asks?", because that needs the prompt sent to the model and the answer read back, per assistant, per question, and each of those is a real model call. We run that scan for customers; it is the paid part of AI visibility work and we are not going to fake it with a proxy signal on a free page. For a free read of the public signals behind your domain (Wikipedia, PageRank, Hacker News, GitHub) use the AI mention checker.
It also cannot see the other half of answer engine optimization, which is off your site. When we studied what assistants cite (the AI citation study), the sources were mostly other people's pages: category roundups, comparison articles, niche blogs. A perfect on-page score gets your page quoted when your page is the source; it does not get your product named when the source is a list somebody else wrote. That is outreach, and it is what the GEO guide covers from the start.
Reading the score
- 80 and up: the page is quotable. Spend the next hour on the off-site half.
- 50 to 79: usually one structural gap: headings with nothing under them, or an intro that does not answer. Fix the highest-weight failure first; the tip under the score names it.
- Under 50: either the page is not an article (a product page, a category page, a form) and the audit is the wrong tool for it, or the content only exists after JavaScript. The "Readable without JavaScript" line tells you which.
A warning scores half. The robots.txt line reports every named crawler even when it does not affect the score, because a Google-Extended block is a training decision, not a visibility one, and you should make it knowingly.
Frequently asked questions
What is an AEO audit?
A check of whether a page is built the way answer engines (Google AI Overviews, ChatGPT search, Perplexity, Gemini, Claude) can read, quote and attribute it: a direct answer near the top, headings phrased as the questions people ask, a real paragraph under each heading, structured data that names the author and date, and no robots rule that keeps the AI crawlers out. This tool runs those checks from the page's HTML.
Is this the same as checking whether ChatGPT mentions my brand?
No. This audit reads your page and your site's robots.txt and llms.txt. It never sends a prompt to a model, so it cannot tell you whether an assistant names you or cites you. That is a prompt-level scan, which costs real model calls per query and is the paid part of MentionAgent. This free audit tells you whether the page gives an assistant something to quote.
Which AI crawlers does the audit check in robots.txt?
GPTBot and OAI-SearchBot (OpenAI), ClaudeBot (Anthropic), PerplexityBot, Google-Extended (Google's training opt-out, which does not affect Search or AI Overviews), Bingbot (Copilot), Applebot-Extended and CCBot (Common Crawl). For each one it reports whether the file allows it, blocks it with a Disallow on the root, or does not name it, in which case the wildcard group applies.
Does llms.txt matter?
It is a proposed convention, not a standard any major assistant has said it reads, and Google has said it does not use it. The audit reports whether the file exists because it is cheap to add and some smaller tools read it, and scores it lightly for the same reason. Our llms.txt validator checks the file's format.
How is the score calculated?
Each of the 17 checks has a weight, listed in the table above. Page structure checks (answer-first paragraphs, question headings, a paragraph under each heading) carry the most weight because they decide whether there is a passage to quote. Site checks (robots.txt, llms.txt) are worth less. The score is the weighted share of checks passed; a warning earns half. A page whose served HTML has no readable text is capped at 40 whatever its markup says, because there is nothing to quote.
Why did the audit say the page needs JavaScript?
The audit reads the HTML the server returns, the same thing most AI crawlers read. If that HTML has almost no text and a lot of script, the content only exists after JavaScript runs, and an assistant fetching the page sees the empty shell. Server-render the article body or pre-render the page.