All 128 checks
128 checks in six areas, in the order a search engine meets a site: can it be reached, can it be indexed, is it unique, can it be found, is it well described, and is it fast and safe.
Showing all 128 checks
Priority, severity and Notes
Priority (Fix now, High, Medium, Low, Note) is what the report sorts by. Findings are ranked by priority first: every Fix now finding comes before every High one, then Medium, then Low, with Notes last.
Severity is one of Critical, Warning or Info. Neither is the same thing as scoring weight: see scoring.md, where what actually moves the score is the distinction between a page being broken, defective, or merely imperfect.
A Note is reported but never scored, because it is usually a deliberate choice.
| Priority | What it means | Checks |
|---|---|---|
| Fix now |
| 6 |
| High |
| 10 |
| Medium |
| 37 |
| Low |
| 56 |
| Note |
| 19 |
Can it be reached
Area 1 of 6, 13 checks
The first thing to look at on any audit: pages that do not return content cannot rank.
Directives are user-agent scoped. googlebot-news binds Google News only and does not affect general Search indexability; treating it as site-wide noindex silently suppressed around twenty other checks on those pages.
AI Crawlers Blocked and the AI opt-out (noai) directive are Notes, deliberately. Blocking GPTBot or setting noai is a legitimate business decision, not a defect, and Raptor reports it without an opinion. AI Crawlers Blocked is a site-level finding: it names the crawlers blocked at the site root, by the name robots.txt uses for them (GPTBot, CCBot and so on), in its description and in its culprits list.
- Fix nowServer error (5xx)
response_codes. internal_ server_ error These pages answered with a 5xx status code (the code a server sends when it fails to build a page, such as 500 Internal Server Error).
- Fix nowPage error (4xx)
response_codes. internal_ client_ error These addresses answered with a 4xx status code (the code a server sends when a page is missing or gone, such as 404 Not Found).
- MediumRefused access (401, 403, 429)
response_codes. internal_ access_ restricted These pages answered with a status code (the server's three-digit reply) of 401 (login needed), 403 (access forbidden) or 429 (too many requests).
- Fix nowRedirect loop
response_codes. internal_ redirect_ loop Raptor followed the redirects (rules that forward one address to another) from these addresses and came back to an address it had already passed through.
- Fix nowNo response
response_codes. internal_ no_ response Raptor requested these pages and got nothing back, not even a status code (the three-digit reply a server sends with every page).
- MediumRedirect chain
response_codes. internal_ redirect_ chain Each of these addresses forwards to another address that forwards again: two or more redirects (rules that send one address to another) before the final answer.
- NoteRedirect
response_codes. internal_ redirect Each of these addresses forwards once to another address with a redirect (a rule, such as a 301 or 302, that sends visitors and search engines on).
- MediumFollow-rule conflict
directives.conflicting_ follow_ directives These pages give robots rules (instructions for search engines) in both a meta tag and an X-Robots-Tag header, and together the two say both follow and nofollow (do not follow this page's links).
- NotePage-wide nofollow
directives.nofollow These pages carry a nofollow rule (a robots meta tag or X-Robots-Tag header telling search engines not to follow any link on the page).
- NotePreview opt-out (nosnippet)
directives.nosnippet These pages carry a nosnippet rule (a robots meta tag or X-Robots-Tag header asking search engines not to show a text preview under the page's link).
- NoteImage opt-out (noimageindex)
directives.noimageindex These pages carry a noimageindex rule (a robots meta tag or X-Robots-Tag header asking search engines not to list the page's images).
- NoteAI crawler block
directives.ai_ crawlers_ blocked The site's robots.txt (its file of rules for crawlers) names one or more well-known AI crawlers and blocks them from the site's root address (/).
- NoteAI opt-out (noai)
directives.noai_ directive These pages carry a noai or noimageai rule (a robots meta tag or X-Robots-Tag header asking AI systems not to use the page's text or images).
Can it be indexed
Area 2 of 6, 33 checks
A page canonicalised to a different URL is a Note: it is frequently intentional. The canonical findings worth acting on are the loops, chains and canonicals pointing at pages that cannot be indexed.
Hreflang is the area where tools most often produce noise, because the checks are relational: they depend on both ends being crawled. A "missing return link" on a page whose counterpart was outside the crawl budget is an artefact, not a finding.
Several sitemap checks are site-level: they describe the site, not a page, and legitimately carry no URL list. They still count toward the score and are shown as site-wide findings.
The injected-canonical check needs a rendering backend, because it compares the raw HTML with the rendered page. A canonical that only appears after scripts run may never be seen by search engines.
- HighSoft 404 error
content.soft_ 404 These short pages load as if they were fine, but their title or text says something like 'page not found' or 'no longer available', which makes them soft 404s (error pages that report success).
- Fix nowDead-end canonical
canonicals.non_ indexable_ target Each page's canonical tag (the line in
<head>that names the preferred address) points to a page that returns an error (a 4xx or 5xx status code) or is marked noindex (told search engines not to list it). - HighRepeated canonical tag
canonicals.multiple_ conflicting The HTML of these pages holds more than one canonical tag (the line naming a page's preferred address).
- MediumRelative canonical address
canonicals.canonical_ relative The canonical tag (the line naming a page's preferred address) on these pages gives a relative address, such as /page, instead of a full one that starts with https:// and the domain.
- NoteCanonical in two places
canonicals.canonical_ mismatch These pages give a canonical (the preferred address of a page) both in their HTML and in the HTTP Link header (a line the server sends along with the page).
- MediumMissing canonical tag
canonicals.missing These pages give no canonical tag (a line in
<head>, or a server header, that names a page's preferred address). - NoteCanonical to another address
canonicals.canonicalised The canonical tag on these pages (a line in
<head>, or a server header, naming the preferred address) points to a different address. - MediumMisplaced canonical tag
canonicals.canonical_ outside_ head The canonical tag (the line naming a page's preferred address) on these pages sits outside
<head>, the top section of the page's code, and no server header gives one instead. - MediumCanonical loop
canonicals.canonical_ loop Following the canonical tags (lines naming a page's preferred address) from these pages through other crawled pages leads back to the start, and no page in the loop names itself.
- MediumCanonical chain
canonicals.canonical_ chain The canonical tag (the line naming a page's preferred address) on these pages points to a crawled page whose own canonical tag points somewhere else again.
- Fix nowIndex-rule conflict
directives.conflicting_ directives These pages give robots rules (instructions for search engines) in both a meta tag and an X-Robots-Tag header, and together the two say both index (list this page) and noindex (do not list it).
- NoteSearch opt-out (noindex)
directives.noindex These pages carry a noindex rule (a robots meta tag or X-Robots-Tag header that tells search engines not to list the page).
- NoteSearch and link opt-out (none)
directives.none These pages carry the none rule (a robots meta tag or X-Robots-Tag header that means noindex and nofollow together: do not list this page or follow its links).
- MediumMissing hreflang return link
hreflang.missing_ return_ links These pages have hreflang tags (lines in
<head>listing the page's versions in other languages), and at least one listed version that Raptor crawled does not list the page in return. - MediumInvalid hreflang code
hreflang.incorrect_ lang_ codes The hreflang tags (lines in
<head>listing the page's versions in other languages) on these pages use a code that is not a valid language, or language and region, such as en-UK instead of en-GB. - MediumHreflang to a non-200 page
hreflang.non_ 200_ urls The hreflang tags (lines in
<head>listing the page's versions in other languages) on these pages point to a crawled page whose status code (the server's three-digit reply) is not 200 OK, such as a 404 error. - MediumHreflang to a non-canonical page
hreflang.non_ canonical_ urls The hreflang tags (lines in
<head>listing the page's versions in other languages) on these pages point to a crawled page that names a different address as its preferred one. - MediumHreflang to a noindex page
hreflang.noindex_ urls The hreflang tags (lines in
<head>listing the page's versions in other languages) on these pages point to a crawled page marked noindex (told search engines not to list it). - MediumRepeated hreflang code
hreflang.multiple_ entries The hreflang tags (lines in
<head>listing the page's versions in other languages) on these pages use the same language code more than once. - MediumHreflang language conflict
hreflang.conflicting_ lang_ declarations In their hreflang tags (lines in
<head>listing a page's versions in other languages), these pages label a crawled version with one language code while that version labels itself with another. - LowMissing hreflang self-reference
hreflang.missing_ self_ reference These pages have hreflang tags (lines in
<head>listing the page's versions in other languages), but none of the tags names the page's own address. - LowMissing x-default
hreflang.missing_ x_ default These pages have hreflang tags (lines in
<head>listing the page's versions in other languages), but no x-default entry (the version to show when no listed language matches). - LowUnreachable sitemap
sitemaps.sitemap_ unreachable These sitemaps (files listing a site's pages for search engines) are named in robots.txt (the site's crawling rules) or in another sitemap, but did not answer 200 OK, failed to load or held no sitemap.
- LowBroken sitemap file
sitemaps.sitemap_ parse_ error These sitemap files (files that list a site's pages for search engines) could not be read as valid XML, the format sitemaps are written in.
- LowIncomplete sitemap address
sitemaps.sitemap_ invalid_ loc These entries in a sitemap (the file that lists your pages for search engines) are not complete addresses starting with http:// or https:// and a domain, as the sitemap format requires.
- MediumMissing sitemap
sitemaps.no_ sitemap_ found Raptor found no sitemap (an XML file listing the pages you want search engines to find), either in robots.txt (the site's file of crawling rules) or at the usual addresses such as /sitemap.xml.
- LowEmpty sitemap
sitemaps.sitemap_ empty These sitemap files (files that list a site's pages for search engines) list no addresses at all.
- MediumError or noindex page in sitemap
sitemaps.non_ indexable_ in_ sitemap These addresses are in a sitemap (the file that lists your pages for search engines), but the crawled page answered with an error (a 4xx or 5xx status code) or is marked noindex (told search engines not to list it).
- MediumSitemap over the address limit
sitemaps.over_ 50k_ urls These sitemap files (files that list a site's pages for search engines) each list more than 50,000 URLs, the most the sitemap format allows in one file.
- MediumSitemap over the size limit
sitemaps.over_ 50mb These sitemap files (files that list a site's pages for search engines) each hold more than 50 MB of text, the most the sitemap format allows in one file.
- LowMissing from sitemap
sitemaps.urls_ not_ in_ sitemap These crawled pages are not in any sitemap (the file that lists your pages for search engines) Raptor read.
- LowAddress in several sitemaps
sitemaps.url_ in_ multiple_ sitemaps These addresses are listed in more than one sitemap file (a file that lists a site's pages for search engines).
- MediumCanonical added by JavaScript
javascript.js_ injected_ canonical The HTML the server sends for these pages has no canonical tag (the line in
<head>naming the preferred address); one appears only after the page's JavaScript runs in a browser.
Is it unique
Area 3 of 6, 5 checks
The five duplicate checks (Duplicate Content, Duplicate Titles, Duplicate Descriptions, Duplicate H1 Headings and Duplicate H2 Headings) compare indexable pages only, and skip a page whose canonical names a different URL. That page has already told search engines which copy to index, so it is not a duplicate to fix. Before the two URLs are compared, the canonical is followed through the redirects this crawl recorded: a canonical that the crawl saw redirect back to the page itself still counts as pointing at itself. Three more rules apply to all five checks:
- A canonical outside
<head>is ignored, as Google ignores it. A copy that relies on one is still reported as a duplicate. - A page whose canonical points at a broken or
noindexpage is reported once, under the canonical check, and not as a duplicate as well. - A page reached through a redirect is compared like any other page.
Duplicate Content names, on each page's row, the pages with the same content, up to 10.
- MediumDuplicate title
page_titles. duplicate These pages use the same title (the headline shown in search results and browser tabs) as another crawled page.
- LowDuplicate meta description
meta_description. duplicate These pages use the same meta description (the summary search engines may show under the title) as another crawled page.
- LowDuplicate H1 heading
headings.h1_ duplicate The first H1 heading (the main heading at the top of a page) on these pages matches the first H1 of another crawled page.
- NoteDuplicate H2 heading
headings.h2_ duplicate These pages have an H2 heading (a section heading under the main one) with the same text as an H2 on another crawled page.
- HighDuplicate content
content.exact_ duplicate The text of these pages matches another crawled page word for word.
Can it be found
Area 4 of 6, 18 checks
URL hygiene checks are individually minor; collectively they are a signal of an unmanaged site. A space in a URL means a space in the path, such as /spaced%20page.html. An encoded space in a query value, such as /blog?category=Web%20Development, is the normal way to write one there and is not reported. Fragments are stripped before a URL becomes a page identity, so /docs/#toc and /docs/ are one page and no #-derived text is measured as part of the URL.
Orphan pages are relative to this crawl; see link-graph.md. Broken internal links include links that redirect into an error.
- MediumSpace in address
url.contains_ space The path of these addresses (the part after the domain) holds a space, written as %20 or as a plain space.
- LowAddress length
url.over_ 115_ chars These page addresses run past 115 characters, counting the whole address from https:// to the end.
- LowCapital letters in address
url.contains_ uppercase The path of these addresses (the part after the domain) holds capital letters.
- LowUnderscore in address
url.contains_ underscores The path of these addresses (the part after the domain) holds underscores (_).
- NoteParameters in address
url.has_ parameters These addresses contain a query string (the part after a ?, such as ?page=2 or ?sort=price).
- LowDouble slash in address
url.multiple_ slashes The path of these addresses (the part after the domain) holds two slashes in a row (//).
- LowSpecial characters in address
url.non_ ascii The path of these addresses (the part after the domain) holds characters beyond plain unaccented letters, digits and common symbols, such as é, ü or Japanese script.
- LowRepeated folder in address
url.repetitive_ path The path of these addresses (the part after the domain) has the same part between slashes twice, such as /blog/blog/ or /shop/sale/shop/.
- NoteTracking tags in address
url.ga_ tracking_ params Raptor crawled these addresses with UTM tags in them (settings after the ? that start with utm_ and label where a visit came from in analytics).
- HighBroken internal link
links.broken_ internal These pages link to pages on this site that answer with an error status code (a 4xx or 5xx reply, such as 404 Not Found), counting where a link ends up after redirects.
- MediumLocalhost link
links.localhost_ outlinks These pages link to localhost, 127.0.0.1 or a similar loopback address, which points at the visitor's own computer rather than at your site.
- HighLack of incoming links
links.orphan_ pages No other crawled page links to these pages, counting links to old addresses that forward here and ignoring links a page makes to itself.
- MediumDead-end page
links.no_ internal_ outlinks These pages have no links to other pages on the same site, so a visitor or a search engine that lands on one has nowhere further on the site to go.
- LowEmpty link text
links.no_ anchor_ text These pages link to other pages on the site with no visible anchor text (the clickable words of a link), for example a link wrapped around an icon.
- LowVague link text
links.non_ descriptive_ anchor These pages have links to other pages on the site whose whole text is a generic phrase, such as 'read more', 'learn more', 'here' or 'more'.
- LowNofollow internal link
links.internal_ nofollow These pages link to other pages on the same site with rel="nofollow" (a note asking search engines not to follow or give credit to that link).
- LowClick depth
links.high_ crawl_ depth These pages have a crawl depth (the number of links Raptor followed from the start page to reach them) of more than 4 clicks.
- LowExternal link count
links.high_ external_ outlinks These pages hold more than 100 links to other websites, counting repeats.
Is it well described
Area 5 of 6, 33 checks
Inline SVG <title> elements are accessibility labels, not document titles, and are excluded from every title check. For titles and meta descriptions, character count is the familiar number; pixel width is the one that predicts truncation in search results.
"H1 Same as Title" is informational: sometimes correct, sometimes a sign of a template with nothing specific to say.
Word counting excludes <script>, <style>, <noscript> and <template> contents, all of which are markup rather than prose, and all of which inflated word counts before being excluded. Readability is a heuristic and should be read as one, particularly on technical or non-English content.
alt="" is not reported as missing: it is the correct way to mark an image decorative. Only a genuinely absent alt attribute counts. Data-URI images and 1×1 tracking pixels are excluded as decorative by definition. An image positioned absolute or fixed in its own style attribute is not reported as missing dimensions. It sits outside the page's flow, so it cannot push content around when it loads. Next.js fill images are the common case, and they cannot take width and height.
The structured data checks validate that JSON-LD parses and carries the fields its type requires. They are not a full schema.org validator and do not replace Google's Rich Results Test.
The four "injected by JavaScript" checks in this area need a rendering backend, because they compare the raw HTML with the rendered page. They identify SEO-critical elements absent from the HTML Google first receives.
- HighMissing title
page_titles. missing These pages have no title (the headline shown in search results and browser tabs), or an empty one.
- MediumRepeated title tag
page_titles. multiple_ tags The code of these pages holds more than one
<title>tag, which sets the headline shown in search results and browser tabs. - MediumMisplaced title
page_titles. outside_ head The first
<title>tag on these pages, which sets the headline shown in search results, sits outside<head>, the top section of the page's code. - LowTitle length
page_titles. over_ 60_ chars These page titles (the headline shown in search results and browser tabs) run past 60 characters.
- LowShort title
page_titles. below_ 30_ chars These page titles (the headline shown in search results and browser tabs) are shorter than 30 characters.
- LowTitle width
page_titles. over_ 561_ pixels These page titles (the headline shown in search results and browser tabs) are wider than 561 pixels in Raptor's estimate of how Google draws them.
- LowNarrow title
page_titles. below_ 200_ pixels These page titles (the headline shown in search results and browser tabs) are narrower than 200 pixels in Raptor's estimate of how Google draws them.
- LowMissing meta description
meta_description. missing These pages have no meta description (the summary search engines may show under the title), or an empty one.
- LowRepeated meta description
meta_description. multiple_ tags The code of these pages holds more than one meta description tag (the summary search engines may show under the title).
- LowMisplaced meta description
meta_description. outside_ head The meta description (the summary search engines may show under the title) on these pages sits outside
<head>, the top section of the page's code. - LowMeta description length
meta_description. over_ 155_ chars These meta descriptions (the summary search engines may show under the title) run past 155 characters.
- LowShort meta description
meta_description. below_ 70_ chars These meta descriptions (the summary search engines may show under the title) are shorter than 70 characters.
- LowMeta description width
meta_description. over_ 985_ pixels These meta descriptions (the summary search engines may show under the title) are wider than 985 pixels in Raptor's estimate of how Google draws them.
- LowMissing H1 heading
headings.h1_ missing These pages have no H1 heading (the main heading at the top of a page) with any text in it.
- LowExtra H1 heading
headings.h1_ multiple These pages have more than one H1 heading (the main heading at the top of a page).
- LowH1 same as title
headings.h1_ same_ as_ title The first H1 heading (the main heading at the top of a page) on these pages is exactly the same as the page title.
- LowH1 length
headings.h1_ over_ 70_ chars These pages have an H1 heading (the main heading at the top of a page) longer than 70 characters.
- LowMissing H2 heading
headings.h2_ missing These pages have no H2 heading (a section heading one level under the main heading).
- LowH2 length
headings.h2_ over_ 70_ chars These pages have an H2 heading (a section heading one level under the main heading) longer than 70 characters.
- LowHeading order
headings.non_ sequential The headings on these pages skip a level, for example an H2 followed straight by an H4, or the first heading on the page is not an H1 (the main heading).
- MediumThin content
content.low_ content These pages have fewer than 100 words of visible text, counting menus and footers.
- LowVery hard reading
content.readability_ very_ difficult These pages score below 10 on the Flesch reading-ease scale (0 to 100, worked out from sentence and word length, where higher is easier).
- LowHard reading
content.readability_ difficult These pages score below 30 on the Flesch reading-ease scale (0 to 100, worked out from sentence and word length, where higher is easier), but not low enough to count as very hard.
- LowMissing alt text
images.missing_ alt_ attribute Some images on these pages have no alt attribute at all, so they carry no alt text (a short written description of the image).
- LowAlt text length
images.alt_ over_ 100_ chars Some images on these pages have alt text (a short written description of an image) longer than 100 characters.
- LowMissing image size
images.missing_ dimensions Some images on these pages lack a width or height attribute in their HTML.
- MediumBroken structured data
structured_data. parse_ errors These pages hold a block of structured data (code that describes the page's content to search engines) written as JSON-LD that has a syntax error, so it cannot be read.
- LowIncomplete structured data
structured_data. missing_ required The structured data (code that describes the page's content to search engines) on these pages lacks a field Google requires for its type, such as a name for a Product or a start date for an Event.
- LowNo structured data
structured_data. missing Raptor found no structured data (code that describes the page's content to search engines) on these pages, in JSON-LD or microdata form.
- MediumTitle added by JavaScript
javascript.js_ injected_ title The HTML the server sends for these pages has no title (the headline shown in search results and browser tabs); one appears only after the page's JavaScript runs in a browser.
- MediumDescription added by JavaScript
javascript.js_ injected_ description The HTML the server sends for these pages has no meta description (the summary search engines may show under the title); one appears only after the page's JavaScript runs in a browser.
- MediumH1 added by JavaScript
javascript.js_ injected_ h1 The HTML the server sends for these pages has no H1 heading (the main heading at the top of a page); one appears only after the page's JavaScript runs in a browser.
- MediumStructured data added by JavaScript
javascript.js_ injected_ structured_ data The HTML the server sends for these pages has no structured data (code that describes the page's content to search engines); it appears only after the page's JavaScript runs in a browser.
Is it fast and safe
Area 6 of 6, 26 checks
HTTPS and mixed content are ranking-relevant; the header checks are reported because they are cheap to collect during a crawl and useful to a technical audience. They deliberately do not affect the health score: a missing CSP header is a security finding, not an SEO one. A site served from localhost or a loopback address is a development server and is not judged on HTTPS.
Core Web Vitals are only measured when the crawl ran with --pagespeed. The thresholds are Google's published good, needs-improvement and poor boundaries. Without --pagespeed, only Slow Server Response (measured directly during the crawl) can fire.
The two console-error checks need a rendering backend, because they read the browser's console. Render-blocking scripts, Excessive JavaScript and Heavy third-party scripts read the HTML itself, so they run on every crawl. Each of the three names what it found on each page, up to 10 items: Render-blocking scripts lists the scripts by full address, Excessive JavaScript says which limit the page went over, and Heavy third-party scripts lists the hosts the scripts load from. When a page is over the script limit and some of its scripts are written into the page rather than loaded from an address, the count is split, as in "39 scripts, 14 external and 25 inline (limit 20)". Only the external scripts are listed, because an inline script has no address.
Only executable scripts count toward Excessive JavaScript. JSON-LD and framework data blobs do not count, and that includes the inline self.__next_f.push(…) blocks Next.js writes into every page to carry its page data. The CSV export's script_count column still counts every script, page-data blocks included, so it can be higher than the count Excessive JavaScript reports.
A render-blocking script is an external script (<script src>) in <head> without async, defer, type="module" or nomodule. The browser stops building the page until it has downloaded and run it. Inline scripts are not counted, as in Lighthouse. A nomodule script is not counted either: it is a fallback for old browsers, and current browsers skip it without downloading it. The CSV export's render_blocking_scripts column uses the same rule.
A script is third-party when it loads from a different host than the page, or from a different port on the same host. Its address is read the way a browser reads it, so //cdn.example.net/x.js, and a relative address on a page whose <base href> points at a CDN, both count as third-party.
- HighPage without HTTPS
security.http_ urls These pages were served from an http:// address, without HTTPS (the encrypted connection that shows a padlock in the browser).
- HighMixed content
security.mixed_ content These https:// pages load images, scripts, styles, frames or media from http:// addresses, which is called mixed content.
- HighInsecure form
security.insecure_ form_ action These pages hold a form whose action (the address it sends what visitors type to) starts with http://, so the data travels unencrypted.
- HighForm on an HTTP page
security.form_ on_ http These pages are served from an http:// address and hold a form whose action (the address it sends what visitors type to) also starts with http://.
- NoteNew-tab link without noopener
security.unsafe_ cross_ origin These pages have links with target="_blank" (open in a new tab) and no rel="noopener" or rel="noreferrer", the setting that stops the new page reaching back to this one.
- NoteMissing HSTS
security.missing_ hsts These https:// pages are served without a Strict-Transport-Security header (HSTS, a rule telling browsers to use only HTTPS for this site from then on).
- NoteMissing Content Security Policy
security.missing_ csp These pages are served without a Content-Security-Policy header (a list of rules telling the browser which scripts and files the page may load).
- NoteMissing X-Content-Type-Options
security.missing_ x_ content_ type_ options These pages are served without the X-Content-Type-Options: nosniff header, which tells browsers to trust the file type the server declares instead of guessing.
- NoteMissing X-Frame-Options
security.missing_ x_ frame_ options These pages are served without an X-Frame-Options header (a rule telling browsers whether other sites may show the page inside a frame).
- NoteMissing or unsafe Referrer-Policy
security.missing_ referrer_ policy These pages send no Referrer-Policy header (a rule for how much of the page's address is passed to other sites), or set it to unsafe-url or no-referrer-when-downgrade.
- MediumSlow main content (LCP)
performance.cwv_ lcp_ poor In Google's PageSpeed Insights test (one lab load of each page), these pages took more than 4 seconds to show their largest image or text block, a measure called LCP (Largest Contentful Paint).
- LowMain content load time (LCP)
performance.cwv_ lcp_ needs_ work In Google's PageSpeed Insights test (one lab load of each page), these pages took more than 2.5 seconds to show their largest image or text block (LCP, Largest Contentful Paint), but not long enough to rate Poor.
- MediumSlow response to taps (INP)
performance.cwv_ inp_ poor Google's data from real Chrome visits shows these pages, or the whole site where a page has too few visits, taking more than 500 milliseconds to react to a tap, click or key press (INP, Interaction to Next Paint).
- LowResponse to taps (INP)
performance.cwv_ inp_ needs_ work Google's data from real Chrome visits shows these pages, or the whole site where a page has too few visits, taking more than 200 milliseconds to react to a tap, click or key press (INP, Interaction to Next Paint).
- MediumLayout shift (CLS)
performance.cwv_ cls_ poor In Google's PageSpeed Insights test (one lab load of each page), these pages scored more than 0.25 for CLS (Cumulative Layout Shift), a measure of how much the content moves while the page loads.
- LowSome layout shift (CLS)
performance.cwv_ cls_ needs_ work In Google's PageSpeed Insights test (one lab load of each page), these pages scored more than 0.1 for CLS (Cumulative Layout Shift, how much the content moves while loading), but not enough to rate Poor.
- LowSlow first paint (FCP)
performance.cwv_ fcp_ slow In Google's PageSpeed Insights test (one lab load of each page), these pages took more than 3 seconds to show their first text or image, a measure called FCP (First Contentful Paint).
- LowSlow first byte (TTFB)
performance.cwv_ ttfb_ slow In Google's PageSpeed Insights test, the server took more than 0.8 seconds to start sending each of these pages, a measure called TTFB (Time to First Byte).
- MediumPoor PageSpeed score
performance.cwv_ score_ poor These pages scored below 50 out of 100 in Google's PageSpeed Insights test, a lab load of each page that rates its loading speed.
- LowPageSpeed score
performance.cwv_ score_ needs_ work These pages scored below 90 out of 100 in Google's PageSpeed Insights test, a lab load of each page that rates its loading speed, but not low enough to rate Poor.
- MediumSlow server response
performance.slow_ server_ response When Raptor crawled these pages, the server took 1.5 seconds or more to start answering, counting any redirects on the way.
- LowRender-blocking script
javascript.js_ render_ blocking These pages load a script file in
<head>without async, defer or type="module", so the browser stops drawing the page until the script has downloaded and run. - LowHeavy JavaScript
javascript.js_ excessive_ scripts These pages load more than 20 scripts or 100 KB of inline script, counting both script files and code written straight into the page.
- LowThird-party JavaScript
javascript.js_ third_ party_ heavy These pages load more than 10 scripts from servers other than the page's own, such as analytics, ads, chat and tag managers.
- LowJavaScript error
javascript.js_ console_ errors While Raptor rendered these pages in a browser, their JavaScript failed with an error the page did not handle, up to 5 errors per page.
- LowJavaScript error count
javascript.js_ console_ errors_ critical While Raptor rendered these pages in a browser, their JavaScript failed with more than 5 errors that the page did not handle.