How the score works
Weights as published on 18 September 2026. When a weight changes, this date changes with it.
The AI Website Critic is a deterministic website scorer. It runs ten checks against a homepage, each check subtracts published weights for the problems it finds, and one critical failure caps the whole score. No language model is involved in the number, so the same page gets the same score every time, and every finding points at something you can verify in your own HTML. This page publishes the whole calculation.
In one paragraph: each of ten categories starts at 100 and loses a fixed weight per finding. The headline is the weighted average of the scored categories, then pulled down into a band set by the worst findings: one critical failure holds the score between 40 and 55, two or more hold it between 25 and 40, and high-severity issues cap it at 70 or 85. The free check scores the four categories that can be read from raw HTML and labels its number with the question it answers, "Can they find you?", rather than claiming to speak for the whole site.
What does the AI Website Critic measure?
A website brings in work when three things are true: people and machines can find it, a stranger believes what they read, and that stranger can work out what to do next. The ten checks are grouped under those three questions. Two carry extra weight because they are where most real-world failures live: whether a crawler can read the page at all, and whether a visitor can actually make contact.
| Question | Check | Weight | Read from | Free check |
|---|---|---|---|---|
| Can they find you? | Crawler Comprehension | 1.5 | Raw HTML, compared with the rendered page when available | Yes |
| AI Readiness | 1.0 | robots.txt, llms.txt, response headers, five live crawler requests | Yes | |
| Schema Markup | 1.0 | Raw HTML | Yes | |
| AEO Structure | 1.0 | Rendered page | No | |
| Technical SEO | 1.0 | Raw HTML, response headers, redirect behaviour, a direct TLS check | Yes | |
| Do they believe you? | Content Quality and E-E-A-T | 1.0 | Rendered page | No |
| Trust Signals | 1.0 | Rendered page | No | |
| Do they act? | Purpose Clarity | 1.0 | Rendered page | No |
| Funnel and CTAs | 1.5 | Rendered page | No | |
| Experience and Mobile | 1.0 | Rendered page, HTTP timing, page weight | No |
How is one category scored?
Every category starts at 100. Each finding carries a weight, and the category score is 100 minus the sum of the weights of everything found, never below 0. A category with nothing to report scores 100, with one exception: Content Quality, Trust Signals, Purpose Clarity and Experience and Mobile are capped at 85 in the automated pass, because counting what is on a page is not the same as reading it. The top of those four scales is reserved for the full audit, where a person reads the site.
What does each check look for?
Every finding the engine can raise, with its severity and the weight it subtracts. If a finding is not in these tables, the tool cannot raise it.
Crawler Comprehension
Does the content exist before JavaScript runs? Most AI crawlers do not execute JavaScript, so a page that only fills itself in through a browser is blank to them. This is the check that most scanners skip, and it is the single most expensive failure a modern site has.
| Severity | Weight | Finding |
|---|---|---|
| critical | 70 | Almost nothing is readable without JavaScript: under 50 words in the raw HTML, when no rendered page is available for comparison |
| critical | 75 | Your content is invisible to AI crawlers: the raw HTML holds under 10% of the words a browser sees |
| high | 35 | Much of your content needs JavaScript to appear: under 50% of the words survive without it |
| high | 25 | No headings survive without JavaScript |
AI Readiness
Are AI crawlers allowed in, and is there a plain-text summary waiting for them? Fourteen crawlers are read from robots.txt, in three tiers. The five that power a live answer engine are also tested by requesting the homepage under their own user agent, because a firewall can refuse a crawler that robots.txt welcomes. A crawler counts as blocked if either says so. Tier matters: blocking a search crawler removes you from answers people read, blocking a training-only crawler does not, and the weights say so.
| Tier | Crawlers | How checked | If blocked |
|---|---|---|---|
| 1, live answer engines | GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot | robots.txt and a live request | Critical, 14 each |
| 2, platform AI features | Google-Extended, GoogleOther, Applebot-Extended, Amazonbot, FacebookBot | robots.txt only | Medium, 6 each |
| 3, training only | CCBot, anthropic-ai, Bytespider, cohere-ai | robots.txt only | Reported, no weight |
robots.txt is read the way crawlers read it: a group naming the crawler wins over the
wildcard group, and only a root Disallow: / counts as a block.
| Severity | Weight | Finding |
|---|---|---|
| critical | 14 per crawler | One or more tier-1 AI search crawlers are blocked, by robots.txt or by an HTTP 401, 403 or 429 |
| medium | 6 per crawler | One or more tier-2 platform crawlers are blocked in robots.txt |
| info | 0 | Training-only crawlers blocked. Reported because you may want to know; never scored. |
| high | 25 | Page opts out of AI use with a noai directive, in the meta robots tag or the X-Robots-Tag header |
| medium | 12 | No robots.txt |
| low | 6 | robots.txt does not reference a sitemap |
| info | 0 | A Content-Signal line is present in robots.txt. Its values are shown; it is a draft standard and is not scored. |
| medium | 16 | No llms.txt |
| low | 7 | llms.txt is very thin: under 60 words |
| low | 5 | llms.txt has no title line (a single # heading first) |
| low | 5 | llms.txt has no description (a blockquote under the title) |
| low | 6 | llms.txt lists too few pages: no sections, or fewer than three links |
| low | 4 | llms.txt links are not absolute |
Schema Markup
Is there structured data telling machines what the page is? Only JSON-LD in the raw HTML counts, because that is what a crawler receives.
| Severity | Weight | Finding |
|---|---|---|
| high | 55 | No structured data at all. When this fires, the other schema findings do not. |
| high | 25 | Broken JSON-LD that does not parse |
| high | 22 | No Organization, LocalBusiness or Person schema |
| high | 20 | No FAQPage schema |
| medium | 12 | No sameAs links in the schema |
| low | 8 | No BreadcrumbList schema |
AEO Structure
Is the page shaped like an answer? Answer engines extract by heading, and they match a visitor's question to a heading phrased as one. Judged on the rendered page, so a client-rendered site is not charged twice for the same root cause.
| Severity | Weight | Finding |
|---|---|---|
| high | 45 | No headings at all |
| high | 18 | No H1 |
| high | 30 | No question-phrased headings |
| medium | 18 | No FAQ block marked up as FAQPage |
Technical SEO
The basics that every engine reads first. The certificate is checked with a direct connection rather than inferred from the response, because an expired certificate still serves pages to scripts while stopping every real visitor at a browser warning.
| Severity | Weight | Finding |
|---|---|---|
| critical | 35 | No page title |
| medium | 12 | Title is very short: under 15 characters |
| medium | 15 | No meta description |
| critical | 30 | Not served over HTTPS |
| critical | 65 | Security certificate has expired |
| critical | 55 | Certificate does not match this domain |
| critical | 55 | Self-signed certificate |
| high | 30 | Certificate is not trusted for another reason |
| high | 20 | Certificate expires within 14 days |
| low | 8 | No canonical URL |
| low | 6 | Canonical points at a different page than the one scanned |
| medium | 12 | No sitemap.xml found |
| critical | 60 | Page is set to noindex, by meta tag or by an X-Robots-Tag header |
| critical | 70 | Homepage returns an HTTP error status |
| low | 6 | Redirect chain of more than one hop before the homepage |
| medium | 10 | Plain http does not redirect to https |
| low | 8 | The www or bare twin of the address does not work |
| low | 8 | The www or bare twin serves a separate copy of the site, or a parking page, instead of redirecting |
| medium | 6 | No Strict-Transport-Security header |
| low | 3 | No X-Content-Type-Options header |
| low | 3 | Page can be framed by other sites: no X-Frame-Options and no frame-ancestors policy |
| low | 2 | No Referrer-Policy header |
| low | 3 | No Content-Security-Policy |
| low | 4 | HTML is served without gzip or brotli compression |
| low | 6 | Slow server response: over 0.8 seconds to start answering, up to the 4 seconds that Experience and Mobile treats as high |
The redirect checks come from two extra requests: plain http:// for the same
host, and the www or bare twin of the address, where one plausibly exists. A deeper
subdomain has no twin and is not checked.
Content Quality and E-E-A-T
Is there enough on the page, and does anyone put their name to it? Capped at 85 in the automated pass.
| Severity | Weight | Finding |
|---|---|---|
| high | 45 | Very thin page: under 100 words |
| medium | 20 | Page is light on content: under 300 words |
| medium | 14 | Long page with fewer than three headings |
| medium | 15 | No visible author or byline, and no Person schema |
| medium | 10 | No publication or update date, on a page that presents itself as an article. A homepage is not expected to carry one. |
| info | 0 | Depth and expertise need a person reading the page |
Trust Signals
Would a stranger believe this business exists and is reachable? Capped at 85 in the automated pass.
| Severity | Weight | Finding |
|---|---|---|
| high | 24 | No social profile links |
| medium | 14 | No privacy or terms page linked |
| medium | 16 | No visible testimonials or case studies |
| high | 20 | No phone or email visible in the page text |
Purpose Clarity
Can a visitor tell in three seconds what this business does and for whom? Capped at 85 in the automated pass.
| Severity | Weight | Finding |
|---|---|---|
| high | 30 | No H1 to state what you do |
| medium | 15 | H1 is too short to say anything: under three words |
| high | 25 | No title or description to describe the business |
| info | 0 | Whether the message lands needs a person reading the page |
Funnel and CTAs
Can the visitor act, on a phone, with one tap? This is where enquiries leak silently, and it carries a weight of 1.5 for that reason.
| Severity | Weight | Finding |
|---|---|---|
| high | 40 | No obvious call to action |
| high | 22 | Phone number is not tappable: no tel: link |
| medium | 12 | No WhatsApp link |
| critical | 45 | No way to make contact at all: no form, no email link, no phone link |
| low | 8 | No risk-reducer near the ask |
Experience and Mobile
Does the page work on the device most visitors are holding? Capped at 85 in the automated pass; visual design is judged from a screenshot in the full audit.
| Severity | Weight | Finding |
|---|---|---|
| high | 40 | No mobile viewport tag |
| low | 8 | No lang attribute |
| medium | 16 | Most images have no alt text: over 30% missing |
| medium | 18 | Very heavy page: HTML over 1,500 KB |
| high | 22 | Slow first response: over 4 seconds |
| info | 0 | Visual design needs the full report |
How is the headline score computed?
The headline score is the weighted average of the scored categories, then placed inside a band set by the severity of what was found. The weighted average alone was tried first and proved too generous: a site can be completely invisible to AI crawlers and still average a B, because nine healthy categories outvote one fatal one. A site with a critical defect is not a B-grade site with one problem. It is a site that fails at something, and the headline has to say so.
The ceiling rule
The worst findings across the scored categories choose a band. The weighted average then decides where in the band the score sits, using the headroom above the band's floor: a site that scrapes into its band sits at the bottom of it, one that is otherwise excellent sits at the top. The band can only ever pull a score down. If the weighted average is already below the band, the lower number stands.
| Worst findings present | Band |
|---|---|
| Two or more critical | 25 to 40 |
| One critical | 40 to 55 |
| Three or more high, no critical | 55 to 70 |
| One or two high, no critical | 70 to 85 |
| Nothing critical or high | 85 to 100 |
Formally: position = (weighted - floor) / (100 - floor), clamped between 0 and 1,
then score = min(weighted, round(floor + (ceiling - floor) * position)).
A worked example, from a real scan on 18 September 2026. The homepage of triqflowresults.com, the agency that built this tool, on the free check:
- Category scores: Crawler Comprehension 30 (weight 1.5), AI Readiness 100, Schema Markup 72, Technical SEO 92.
- Weighted average: (30 × 1.5 + 100 + 72 + 92) ÷ 4.5 = 69.
- Worst finding: one critical, "Almost nothing is readable without JavaScript". Band 40 to 55.
- Position in band: (69 − 40) ÷ 60 = 0.48. Banded score: 40 + 15 × 0.48 = 47.
- Headline: min(69, 47) = 47, grade F. The critical finding is badged "Holding your score at 47", because fixing it is what moves the number.
Which findings get the "Holding your score" badge?
Only the findings of the severity class that chose the band, and only when the band actually pulled the score below the weighted average. A critical finding on a site whose average was already low is not holding anything, so it carries no badge. The badge says "fixing this is what moves the number", which is a different and more useful fact than severity alone.
What do the letter grades mean?
| Grade | Score |
|---|---|
| A | 90 to 100 |
| B | 80 to 89 |
| C | 70 to 79 |
| D | 55 to 69 |
| F | 0 to 54 |
Because one critical failure caps the score at 55, a site with any critical finding cannot grade above D, and a site with two cannot grade above F. That is deliberate.
Why does the free check score only four of ten?
The free check reads raw HTML, which is exactly what a non-JavaScript crawler receives. Four categories can be judged honestly from that: Crawler Comprehension, AI Readiness, Schema Markup and Technical SEO. The other six describe a human with a browser, and scoring them from raw HTML on a client-rendered site would report "no call to action, no testimonials, no phone number" about a site that visibly has all three. Those categories are marked unscored rather than guessed at, and the free headline is labelled with the question it answers, "Can they find you?", computed only from the four categories that contributed to it. The full audit loads the site in a real browser and scores all ten.
What happens when a site is down or blocks the scanner?
A homepage that returns a server error or a 404 is an error page, not a website, so it is not scored. Scoring it would invent findings about content and calls to action that an error page cannot meaningfully have. The tool says the site could not be reached and stops. A homepage that returns 401, 403 or 429 to a normal browser request is reported as blocked by a firewall or rate limit, which is different information from being down, and the crawler comparison is skipped because it would be meaningless when a normal browser is refused too.
What the tool does not do
- It does not use a language model to score. Every number comes from counting and matching. The paid audit adds a person reading the page; the free check never claims to.
- It reads the homepage only, plus robots.txt, llms.txt and sitemap.xml. Inner pages are not crawled.
- It does not know whether AI engines are currently citing you. It measures readiness to be cited, not citations. Nobody can measure the latter from your HTML.
- It probes five AI crawlers live and reads fourteen from robots.txt. The five are the ones behind ChatGPT, Claude and Perplexity. Blocking at the firewall for the other nine is not tested, because each live probe is another request against a stranger's server.
- It has no field performance data. Speed is one server response time from Johannesburg, not Core Web Vitals from real visitors.
- It cannot read what it is refused. A firewall that blocks the scanner gets reported as such, not scored around.
- Absence of evidence is not excellence. A category with no findings means the counted things are present, which is a floor, not a verdict. That is why four categories are capped at 85 until a person reads the site.
Is the calculation stable?
The weights on this page are the weights in the engine on the date at the top. When they change, the date changes, and a score from before that date is not directly comparable with one after it. The same page scanned twice on the same day gets the same score, apart from things that genuinely changed in between: a slow server response, a certificate nearing expiry, or a firewall that refused one of the five probed crawlers this time.
If you find a claim on this page that does not match what the tool does, tell us on WhatsApp and we will fix the tool or the page, whichever is wrong.