ECHORANK

Nosy Bat issue library

Every check the crawler runs

340+ named checks across 29 families, from response codes to accessibility, each with what it means and how to fix it. Issues are problems to fix, warnings need a look, opportunities are improvements. Checks marked “Needs rendering” run on pages crawled with JavaScript rendering on; “Needs a Lighthouse run” checks use the page’s PageSpeed Insights results.

Response codes 12

Internal client error (4xx)

IssueHigh priorityresponse_codes.internal_4xx

A URL on the site answers with a 4xx status, usually 404 Not Found or 410 Gone. Visitors and crawlers who follow a link to it hit a dead end.

How to fix. Restore the page, or 301-redirect the URL to its closest live equivalent, then update the internal links that point at it.

Internal server error (5xx)

IssueHigh priorityresponse_codes.internal_5xx

A URL on the site answers with a 5xx status. The server failed to produce the page; search engines retry, then drop URLs that keep failing.

How to fix. Check the server and application logs for this URL at the crawl time, fix the failing code path or capacity issue, and re-crawl.

Broken external link (4xx)

IssueMedium priorityresponse_codes.external_4xx

The page links to another site's URL that answers with a 4xx status. A broken outbound link is a dead end for readers and a quality signal for search engines. The evidence shows how many, a sample URL and how many pages of your site it is found on.

How to fix. Update the link to the resource's new address, link to an archived or alternative source, or remove it.

External link server error (5xx)

WarningMedium priorityresponse_codes.external_5xx

The page links to another site's URL that answered with a 5xx status during the crawl. It may be a temporary outage on their side. The evidence shows a sample URL and how many pages of your site it is found on.

How to fix. Re-check the link later. If it keeps failing, replace it with a working source or remove it.

No response

IssueHigh priorityresponse_codes.no_response

The request produced no HTTP response at all: a timeout, a DNS failure, a refused connection or too many redirects.

How to fix. Load the URL yourself to confirm. Check DNS, firewall or bot-protection rules that may block crawlers, and how long the server takes to answer.

Internal redirect (3xx)

WarningLow priorityresponse_codes.internal_3xx

The crawled URL redirects to another URL. Redirects are fine for moved content, but each one costs a request and dilutes crawl budget when internal links keep pointing at them.

How to fix. Keep the redirect for external visitors, but point internal links straight at the final URL.

Redirect chain

WarningMedium priorityresponse_codes.redirect_chain

Reaching the final URL takes more than one redirect hop. Every hop adds latency, and search engines stop following long chains.

How to fix. Redirect the original URL straight to the final destination in a single hop, and update links to point at the final URL.

Redirect loop

IssueHigh priorityresponse_codes.redirect_loop

The URL's redirects lead back to a URL already in the chain, so the page can never load.

How to fix. Find the rule that sends the last URL in the loop back to the first (often HTTP/HTTPS or trailing-slash rules fighting) and break the cycle.

Meta refresh redirect

WarningMedium priorityresponse_codes.meta_refresh

The page uses <meta http-equiv="refresh"> to send visitors elsewhere. Search engines treat it as a weak redirect, and it disorients screen-reader users.

How to fix. Replace the meta refresh with a server-side 301 (permanent) or 302 (temporary) redirect.

Redirect to an error page

IssueHigh priorityresponse_codes.redirect_to_error

The URL redirects, and the destination answers with a 4xx or 5xx status. The redirect sends visitors to a dead end.

How to fix. Point the redirect at a live page, or fix the destination.

Blocked by robots.txt

WarningLow priorityresponse_codes.blocked_by_robots

robots.txt disallows this URL, so it was recorded but not fetched. Search engines will not crawl it either, though they can still index the bare URL if other pages link to it.

How to fix. If the page should rank, remove the Disallow rule that matches it. If it should stay out of search, use noindex instead and let it be crawled.

URLs 10

Non-ASCII characters in URL

WarningLow priorityurl.non_ascii

The URL path contains characters outside ASCII (accented letters, symbols, other scripts). Browsers show them fine, but they are percent-encoded when copied, shared or logged, which makes the URL long and unreadable.

How to fix. Use plain ASCII slugs (e.g. "cafe" rather than "café") for new URLs. Change existing ones only with a 301 redirect from the old address.

Underscores in URL

OpportunityLow priorityurl.underscores

The URL path uses underscores. Search engines treat hyphens as word separators but may read underscores as joining words, so "red_shoes" can be read as one word.

How to fix. Use hyphens in new URLs. Renaming existing URLs is rarely worth it on its own; if you do, 301-redirect the old ones.

Uppercase characters in URL

WarningLow priorityurl.uppercase

The URL path contains uppercase letters. Paths are case-sensitive on most servers, so /Page and /page can be two URLs with the same content.

How to fix. Use lowercase paths, and 301-redirect uppercase variants to the lowercase URL.

URL has query parameters

OpportunityLow priorityurl.parameters

The URL carries query parameters. Parameters for sorting, filtering or tracking can multiply one page into many crawlable URLs.

How to fix. Keep parameters out of internal links where a clean path works, and set a canonical to the parameter-free version on filtered or sorted views.

URL over 115 characters

OpportunityLow priorityurl.over_115_chars

The URL is longer than 115 characters. Long URLs are truncated in search results, hard to share and often a sign of deep nesting or stacked parameters.

How to fix. Shorten the slug and flatten unnecessary folder levels for new pages. Redirect existing long URLs only when you restructure.

Multiple slashes in URL

WarningLow priorityurl.multiple_slashes

The URL path contains a double slash (//). It usually comes from a template joining paths badly, and can create duplicate URLs for one page.

How to fix. Fix the template or link that produces the double slash, and 301-redirect the variant to the single-slash URL.

Repetitive path segment

WarningLow priorityurl.repetitive_path

A segment repeats in the URL path (e.g. /shop/shoes/shop/shoes). This is typically a relative-link bug that lets crawlers generate endless URLs.

How to fix. Make the offending links absolute or root-relative (starting with /), and return 404 or redirect for the generated paths.

Space in URL

WarningLow priorityurl.contains_space

The URL path contains an encoded space (%20 or +). Spaces break when URLs are pasted into emails or chat, and look untidy in search results.

How to fix. Use hyphens instead of spaces in file and page names, and redirect the old URLs.

Trailing-slash variant served

WarningMedium priorityurl.trailing_slash_variant

This URL answers 200, but its canonical is the same path with the trailing slash added or removed. Both variants are live, so links and signals are split between two URLs.

How to fix. Pick one form, 301-redirect the other to it, and link internally only to the chosen form.

Page titles 10

Missing page title

IssueHigh prioritypage_titles.missing

The page has no <title>, or only an empty one. The title is the headline of a search result and the text of a browser tab; without it, search engines write their own.

How to fix. Add a unique, descriptive <title> inside <head> that names what the page offers.

Duplicate page title

IssueMedium prioritypage_titles.duplicate

Another crawled page has exactly the same title. Identical titles make pages hard to tell apart in search results and suggest duplicate or templated content.

How to fix. Give each page a title that describes its own content. If the pages really are duplicates, consolidate them or set a canonical.

Title over 60 characters

WarningLow prioritypage_titles.over_60_chars

The title is longer than 60 characters, about where search results start to cut titles off.

How to fix. Put the most important words first and trim the rest so the meaning survives truncation.

Title over 70 characters

WarningMedium prioritypage_titles.over_70_chars

The title is longer than 70 characters and will almost certainly be truncated in search results, losing whatever comes after the cut.

How to fix. Shorten the title to under 60 characters. Drop filler, repeated keywords and long brand suffixes first.

Title under 30 characters

OpportunityLow prioritypage_titles.under_30_chars

The title is shorter than 30 characters. Short titles often miss the words people search for and leave space in the result unused.

How to fix. Expand the title with the page's main topic and a distinguishing detail, staying under 60 characters.

Title over 561 pixels

WarningLow prioritypage_titles.over_561_px

The title's estimated width in a desktop search result is over 561 pixels, the point at which titles are usually truncated. Wide characters (W, M, capitals) hit the limit before the character count does.

How to fix. Shorten the title or use fewer capitals and wide characters until it fits.

Title under 200 pixels

OpportunityLow prioritypage_titles.under_200_px

The title's estimated width in a desktop search result is under 200 pixels: a very short headline that uses little of the space available.

How to fix. Add descriptive words that match what people search for.

Title same as H1

OpportunityLow prioritypage_titles.same_as_h1

The title is identical to the page's first H1. That is not wrong, but it misses a chance to use a second phrasing of the topic.

How to fix. Consider writing the title for the search result and the H1 for the reader already on the page, with different wording.

Multiple title elements

IssueMedium prioritypage_titles.multiple

The page has more than one <title>. Search engines use one of them, not necessarily the one you intended.

How to fix. Keep a single <title> in <head>. Look for a template or plugin adding a second one.

Title outside <head>

IssueMedium prioritypage_titles.outside_head

A <title> element sits in the <body>. Search engines expect it in <head> and may ignore it where it is.

How to fix. Move the <title> into <head>. If a script or widget writes it into the body, fix that output.

Meta descriptions 7

Missing meta description

WarningMedium prioritymeta_description.missing

The page has no meta description, or an empty one. Search engines then build the snippet from page text, which is often a menu or cookie notice.

How to fix. Add a <meta name="description"> in <head>: one or two sentences, 70–155 characters, saying what the page offers and why to click.

Duplicate meta description

WarningMedium prioritymeta_description.duplicate

Another crawled page has exactly the same meta description. Repeated snippets make results from your site look interchangeable.

How to fix. Write a description for each page from its own content. For large templated sections, generate it from page-specific fields.

Meta description over 155 characters

WarningLow prioritymeta_description.over_155_chars

The description is longer than 155 characters, so search results will usually cut it off mid-sentence.

How to fix. Lead with the key message and trim to under 155 characters.

Meta description under 70 characters

OpportunityLow prioritymeta_description.under_70_chars

The description is shorter than 70 characters. A very short snippet wastes space that could sell the click.

How to fix. Expand it with what the page offers and a reason to choose it, staying under 155 characters.

Meta description over 985 pixels

WarningLow prioritymeta_description.over_985_px

The description's estimated width in a desktop search result is over 985 pixels, about where snippets are truncated.

How to fix. Shorten the description until it fits; wide characters and capitals use space fastest.

Multiple meta descriptions

WarningMedium prioritymeta_description.multiple

The page has more than one meta description tag. Search engines pick one, not necessarily the right one.

How to fix. Keep one description tag. Check for a theme and an SEO plugin both writing one.

Meta description outside <head>

WarningMedium prioritymeta_description.outside_head

A meta description tag sits in the <body>, where search engines may ignore it.

How to fix. Move the tag into <head>, or fix the template or script that writes it into the body.

Meta keywords 1

Meta keywords tag present

OpportunityLow prioritymeta_keywords.present

The page carries a <meta name="keywords"> tag. Google and Bing ignore it for ranking; its only effect is publishing your target keywords to competitors.

How to fix. Remove the tag from the template or SEO plugin settings.

H1 6

Missing H1

IssueMedium priorityh1.missing

The page has no <h1>. The main heading tells readers and search engines what the page is about, and screen-reader users jump to it first.

How to fix. Add one <h1> near the top of the main content that names the page's topic.

Duplicate H1

WarningLow priorityh1.duplicate

Another crawled page uses exactly the same H1. Identical main headings make pages look interchangeable.

How to fix. Make each H1 describe its own page; if the pages are duplicates, consolidate them.

H1 over 70 characters

WarningLow priorityh1.over_70_chars

An H1 is longer than 70 characters. Long main headings are hard to scan and often carry a paragraph's worth of keywords.

How to fix. Shorten the heading to the essential topic and move detail into the opening paragraph.

Multiple H1s

WarningLow priorityh1.multiple

The page has more than one <h1>. It is valid HTML, but a single main heading gives the clearest outline.

How to fix. Keep one H1 for the main topic and turn the others into H2s. Check for a logo or widget wrapped in an H1.

H1 matches another page's title

WarningLow priorityh1.matches_other_title

This page's H1 is the exact title of a different page on the site. The two pages may be competing for the same query.

How to fix. Differentiate the heading, or merge the pages if they cover the same thing.

Empty H1

IssueMedium priorityh1.empty

An <h1> has no text, often an image without alt text or a heading left behind by a template.

How to fix. Give the heading text, or give the image inside it alt text that names the page.

H2 6

Missing H2

OpportunityLow priorityh2.missing

The page has no <h2>. Section headings break content into scannable parts and give search engines and screen readers an outline.

How to fix. Add H2s for the main sections of the content. Short pages with one idea may not need any.

Duplicate H2

OpportunityLow priorityh2.duplicate

This page's first H2 is the same as on other crawled pages, usually a template heading ("Related products", "Contact us") in the first slot.

How to fix. Make the first section heading specific to the page, or move shared template headings below the page's own sections.

H2 over 70 characters

WarningLow priorityh2.over_70_chars

An H2 is longer than 70 characters, which reads like a sentence rather than a heading.

How to fix. Shorten the heading and move the detail into the section's first paragraph.

Identical H2s on one page

WarningLow priorityh2.repeated_on_page

The same H2 text appears more than once on the page, so the outline has two sections with the same name.

How to fix. Rename the sections so each heading says what is different about it.

Heading levels out of order

WarningLow priorityh2.non_sequential

An <h3> appears before the first <h2>. Skipping a level breaks the document outline that screen-reader users navigate by.

How to fix. Use headings in order (H1, then H2, then H3), and style them with CSS rather than picking a level for its size.

Empty H2

WarningLow priorityh2.empty

An <h2> has no text, usually a leftover from a template or an icon-only heading.

How to fix. Give the heading text or remove the empty element.

Content 12

Low word count

WarningMedium prioritycontent.low_word_count

The page has fewer than 200 words of visible text. Thin pages rarely answer a query well enough to rank, unless their job is something else (a contact form, a gallery).

How to fix. Expand pages meant to rank with useful, specific content. Leave utility pages alone, or keep them out of the index.

Exact duplicate content

IssueMedium prioritycontent.exact_duplicate

Another crawled page has exactly the same visible text. Search engines pick one version to show and may pick the wrong one.

How to fix. Consolidate the pages with a 301 redirect, or point the copies at the main version with rel=canonical.

Near-duplicate content

WarningMedium prioritycontent.near_duplicate

Another crawled page's text is almost identical to this one (a similarity fingerprint within 3 bits). Typical causes: location or product variants with only a word or two changed.

How to fix. Give each page enough unique content to stand alone, or canonicalise the variants to one main page.

Difficult to read

OpportunityLow prioritycontent.readability_difficult

The English text scores below 50 on the Flesch reading-ease scale: long sentences and long words. That is college level, harder than most visitors want to read.

How to fix. Shorten sentences, prefer common words, and break long paragraphs up with headings and lists.

Placeholder text

IssueMedium prioritycontent.placeholder_text

The page contains placeholder text such as "lorem ipsum", "coming soon" or "under construction". It reads as unfinished to visitors and search engines.

How to fix. Replace the placeholder with real content, or keep the page out of the index until it is ready.

Possible soft 404

WarningMedium prioritycontent.soft_404

The page answers 200 OK but looks like an error page: a "not found" title, or almost no content. Search engines treat it as a 404 and may also distrust the site's real 200s.

How to fix. Return a real 404 or 410 status for missing pages, or add real content if the page should exist.

Low text-to-HTML ratio

OpportunityLow prioritycontent.low_text_ratio

Visible text is under 10% of the HTML. The page is mostly markup, scripts and inline styles, which slows it down without adding anything to read.

How to fix. Move inline scripts and styles into cached files, trim unused markup, and check the page has real content.

Missing lang attribute

WarningLow prioritycontent.missing_lang

The <html> element has no lang attribute. Screen readers then guess the pronunciation, and browsers cannot offer the right translation.

How to fix. Set the page language on the root element, e.g. <html lang="en"> or <html lang="fr-CA">.

Character encoding not declared

WarningMedium prioritycontent.charset_missing

Neither the Content-Type header nor the HTML declares a character encoding. Browsers then guess, and accented characters can come out garbled.

How to fix. Send charset=utf-8 in the Content-Type header, and add <meta charset="utf-8"> as the first element in <head>.

Character encoding is not UTF-8

WarningLow prioritycontent.charset_not_utf8

The page declares an encoding other than UTF-8 (e.g. ISO-8859-1 or Windows-1252). UTF-8 is the web standard; other encodings break on characters they cannot represent.

How to fix. Save templates and content as UTF-8 and declare charset=utf-8 in the header and <meta charset>.

Says the same thing as another page

WarningMedium prioritysemanticcontent.semantic_duplicate

This page's text means nearly the same as another page's (cosine similarity of their embeddings 0.95 or more), even if the wording differs. Search engines pick one and may ignore the other, and the two compete for the same queries. The evidence shows the other URL and the score.

How to fix. Merge the two pages and 301 the weaker one to the stronger, or rewrite one so each answers a distinct question; a canonical works when both must stay.

Off-topic for the site

OpportunityLow prioritysemanticcontent.off_topic

This page's text is among the 5 % furthest from what the site as a whole is about (distance from the average of all embedded pages). It may be stray, outdated or thin content that dilutes the site's topical focus.

How to fix. Check whether the page belongs: bring it closer to the site's subject, link it into a relevant section, or remove or noindex it.

Images 11

Image missing alt attribute

IssueMedium priorityimages.missing_alt

An <img> has no alt attribute at all. Screen readers then read out the file name, and search engines lose the image's description. An empty alt="" is fine for decorative images; a missing one is not.

How to fix. Add alt text that says what the image shows or does. Use alt="" only for purely decorative images.

Alt text over 100 characters

WarningLow priorityimages.alt_over_100_chars

An image's alt text is longer than 100 characters. Long alt text is tedious to listen to and often stuffed with keywords.

How to fix. Describe the image in one short phrase. Put longer explanations in a caption or the surrounding text.

Image missing width or height

OpportunityLow priorityimages.missing_size_attributes

An image has no width or height attribute, so the browser cannot reserve its space and the layout jumps when it loads (Cumulative Layout Shift).

How to fix. Add width and height attributes with the image's intrinsic size; CSS can still scale it responsively.

Broken image

IssueHigh priorityimages.broken

An image on the page answers with an error status, so visitors see a broken-image icon or an empty gap.

How to fix. Fix the image's path, restore the file, or remove the reference.

Image over 100 KB

OpportunityMedium priorityimages.over_100kb

An image on the page weighs more than 100 KB. Heavy images are the most common reason pages load slowly on mobile.

How to fix. Resize the image to the size it is displayed at, compress it, and serve WebP or AVIF.

Alt text is the file name

WarningLow priorityimages.alt_equals_filename

An image's alt text just repeats its file name (e.g. "IMG 0423" or "hero banner"), which describes nothing to a screen-reader user.

How to fix. Write alt text that describes what the image shows.

Over 50 images on the page

OpportunityLow priorityimages.over_50_images

The page loads more than 50 images. Even lazy-loaded, that is a lot of requests and decoding work, especially on mobile.

How to fix. Paginate long galleries, use thumbnails, and check for repeated decorative images that could be CSS.

Offscreen images not lazy-loaded

WarningLow priorityimages.not_lazy_loaded

Images further down the page (after the first three) load immediately instead of when the visitor scrolls to them, competing with the content on screen.

How to fix. Add loading="lazy" to images below the fold.

First image is lazy-loaded

WarningLow priorityimages.first_image_lazy

The first image on the page has loading="lazy". If it is the hero or main image, lazy-loading delays the Largest Contentful Paint.

How to fix. Remove loading="lazy" from images visible on first load; consider fetchpriority="high" on the main image.

Large image without srcset

OpportunityLow priorityimages.missing_srcset

An image 400 pixels or wider (or with no declared width) offers a single file for every screen, so phones download the desktop-size image.

How to fix. Provide srcset with several widths and a sizes attribute, or use your framework's responsive image component.

Image not in a next-gen format

OpportunityLow priorityimages.not_next_gen_format

A JPEG, PNG or GIF is served with no WebP or AVIF alternative. Modern formats are typically 25–50% smaller at the same quality.

How to fix. Serve WebP or AVIF, either directly or through a <picture> element with a JPEG/PNG fallback.

Canonicals 10

Missing canonical

WarningLow prioritycanonicals.missing

The page declares no canonical URL, in the HTML or a Link header. Without one, parameter and tracking variants of the page compete with it.

How to fix. Add <link rel="canonical" href="…"> in <head>, usually pointing at the page's own clean URL.

Canonicalised to another URL

WarningMedium prioritycanonicals.canonicalised

The page's canonical points at a different URL, so it asks search engines to index that URL instead of this one. That is right for duplicates and variants, and a mistake anywhere else.

How to fix. Check the target is the intended main version. If this page should rank on its own, make the canonical self-referencing.

Multiple canonicals

IssueMedium prioritycanonicals.multiple

The page declares more than one rel=canonical. Search engines may ignore all of them when they disagree.

How to fix. Keep one canonical. Look for a theme and a plugin (or a CMS and a CDN) each adding one.

Canonical points at a redirect

IssueMedium prioritycanonicals.to_redirect

The canonical target redirects elsewhere. It sends mixed signals, and search engines may disregard it.

How to fix. Point the canonical straight at the final URL the redirect leads to.

Canonical points at an error page

IssueHigh prioritycanonicals.to_error

The canonical target answers 4xx or 5xx. You are asking search engines to index a page that does not work.

How to fix. Point the canonical at a live page, usually this page's own URL.

Canonical points at a noindex page

IssueHigh prioritycanonicals.to_noindex

The canonical target carries noindex. One says "index that page", the other says "do not index it", so neither may end up indexed.

How to fix. Canonicalise to an indexable page, or remove noindex from the target if it should be indexed.

Relative canonical URL

WarningLow prioritycanonicals.relative

The canonical is a relative URL (e.g. /page). It is allowed, but a base-tag or protocol mistake turns it into the wrong address.

How to fix. Use the full absolute URL, including https:// and the host.

Canonical header and HTML disagree

IssueMedium prioritycanonicals.header_html_mismatch

The Link response header and the HTML declare different canonical URLs. Search engines may ignore both.

How to fix. Declare the canonical in one place, or make both point at the same URL.

Canonical outside <head>

IssueMedium prioritycanonicals.outside_head

A rel=canonical link sits in the <body>. Google ignores canonicals outside <head>.

How to fix. Move the canonical into <head>, or fix the script that injects it into the body.

HTTPS page canonicalised to HTTP

IssueMedium prioritycanonicals.to_http_from_https

This HTTPS page's canonical points at an http:// URL, asking search engines to prefer the insecure version.

How to fix. Change the canonical to the https:// URL.

Directives 13

Noindex

WarningHigh prioritydirectives.noindex

The page tells search engines not to index it (meta robots or X-Robots-Tag). Right for thank-you pages, internal search and staging; costly when it is on a page you want found.

How to fix. If the page should appear in search, remove noindex from the meta tag and the X-Robots-Tag header. Otherwise, nothing to do.

Nofollow

WarningMedium prioritydirectives.nofollow

The page tells search engines not to follow any of its links, so none of them pass signals or lead to discovery.

How to fix. Remove page-level nofollow unless you have a specific reason. To discount individual links, put rel="nofollow" on those links instead.

Robots "none"

WarningHigh prioritydirectives.none

The page uses the "none" directive, shorthand for noindex and nofollow together.

How to fix. Check this is intended. For a page that should rank, remove the directive.

Noarchive

WarningLow prioritydirectives.noarchive

The page asks search engines not to keep a cached copy. It does not affect ranking.

How to fix. Usually fine as is. Remove it if you have no reason to hide cached copies.

Nosnippet

WarningMedium prioritydirectives.nosnippet

The page forbids text snippets and video previews in search results, which usually lowers click-through. It also keeps the page's text out of AI overviews.

How to fix. Remove nosnippet unless the content must not be quoted. Use data-nosnippet on specific passages instead.

Max-snippet limit

WarningLow prioritydirectives.max_snippet

The page limits how many characters search engines may show in a snippet. A low limit shortens or removes the description shown in results.

How to fix. Check the limit is deliberate; max-snippet:-1 means no limit.

Noimageindex

WarningLow prioritydirectives.noimageindex

The page asks search engines not to index its images, so they will not appear in image search from this page.

How to fix. Remove it if image search traffic is useful to you.

Notranslate

WarningLow prioritydirectives.notranslate

The page asks search engines not to offer a translation of it in results.

How to fix. Remove it unless translation would genuinely mislead readers.

Unavailable_after

WarningLow prioritydirectives.unavailable_after

The page carries an expiry date after which search engines should drop it from results.

How to fix. Check the date is right and the page really should disappear then, e.g. an event or offer page.

Noindex with a canonical to another page

IssueHigh prioritydirectives.noindex_canonical_conflict

The page says noindex and also names another URL as its canonical. Google warns the two signals conflict, and the canonical may be ignored.

How to fix. Use one: a canonical for a duplicate that should pass its signals, or noindex for a page that should simply stay out of search.

Noindex page in the sitemap

IssueHigh prioritydirectives.noindex_in_sitemap

The page is listed in the XML sitemap but carries noindex. The sitemap says "index this" and the page says "do not".

How to fix. Remove noindex pages from the sitemap, or remove noindex if the page belongs in search.

Meta robots outside <head>

IssueHigh prioritydirectives.outside_head

A meta robots or googlebot tag sits in the <body>, where search engines may not honour it.

How to fix. Move the tag into <head>, or fix the script that injects it into the body.

X-Robots-Tag and meta robots disagree

IssueMedium prioritydirectives.header_meta_conflict

The X-Robots-Tag header and the meta robots tag give different index or follow instructions. Search engines apply the most restrictive one, which may not be the one you meant.

How to fix. Set the directive in one place, or make the header and the tag say the same thing.

XML sitemaps 8

Sitemap URLs not crawled

WarningLow prioritysitemaps.url_not_crawled

The sitemap lists URLs this crawl never reached, because the URL limit or time limit stopped it, or because robots.txt or scope rules kept them out.

How to fix. Raise the crawl limit or check those URLs. A sitemap should list only live, indexable pages on the site.

Indexable page missing from the sitemap

OpportunityLow prioritysitemaps.page_not_in_sitemap

This page answers 200, is indexable and self-canonical, but the sitemap does not list it. Search engines may find it later, or not at all.

How to fix. Add the page to the sitemap, or check your sitemap generator includes this section of the site.

Non-indexable URL in the sitemap

WarningMedium prioritysitemaps.non_indexable_listed

The sitemap lists a URL that is noindex or canonicalised to another page. A sitemap should list only the URLs you want indexed.

How to fix. Remove the URL from the sitemap, or make the page indexable and self-canonical.

Redirect in the sitemap

WarningMedium prioritysitemaps.redirect_listed

The sitemap lists a URL that redirects. Search engines are asked to crawl an address that is not the real page.

How to fix. List the final destination URL instead of the redirecting one.

Error page in the sitemap

IssueMedium prioritysitemaps.error_listed

The sitemap lists a URL that answers 4xx or 5xx. Too many errors make search engines trust the sitemap less.

How to fix. Remove dead URLs from the sitemap, or restore the pages.

No XML sitemap found

WarningMedium prioritysitemaps.missing

The crawl found no XML sitemap, neither declared in robots.txt nor at /sitemap.xml. Search engines then rely on links alone to discover pages.

How to fix. Publish an XML sitemap of your indexable pages and declare it in robots.txt with a Sitemap: line.

Sitemap over 50,000 URLs

IssueMedium prioritysitemaps.too_large

A sitemap file lists more than 50,000 URLs, the protocol's limit per file. Search engines may reject it.

How to fix. Split it into several files of at most 50,000 URLs (and 50 MB uncompressed) and list them in a sitemap index.

Sitemap not declared in robots.txt

OpportunityLow prioritysitemaps.not_in_robots

A sitemap exists, but robots.txt has no Sitemap: line pointing to it. Declaring it helps every search engine find it, not only those you submit it to.

How to fix. Add Sitemap: https://your-site/sitemap.xml to robots.txt.

Security 11

Page served over HTTP

IssueHigh prioritysecurity.http_url

The page is served over plain HTTP, without encryption. Browsers label it "Not secure", and HTTPS is a ranking signal.

How to fix. Serve the site over HTTPS and 301-redirect every http:// URL to its https:// equivalent.

Mixed content

IssueHigh prioritysecurity.mixed_content

This HTTPS page loads resources (images, scripts, styles, frames) over http://. Browsers block or warn about them, which can break the page.

How to fix. Load every resource over https://, or from your own domain with relative URLs.

Form submits over HTTP

IssueHigh prioritysecurity.form_on_http

A form on the page submits to an http:// URL, so whatever the visitor types travels unencrypted. Browsers warn before submitting it.

How to fix. Point the form's action at an https:// URL.

External link opens without noopener

WarningLow prioritysecurity.unsafe_target_blank

A link opens another site in a new tab without rel="noopener". Older browsers let the opened page control yours ("reverse tabnabbing").

How to fix. Add rel="noopener" (or rel="noopener noreferrer") to links with target="_blank".

Missing HSTS header

WarningMedium prioritysecurity.missing_hsts

The HTTPS response has no Strict-Transport-Security header, so a visitor's first request can still be downgraded to HTTP.

How to fix. Send Strict-Transport-Security: max-age=31536000; includeSubDomains once the whole site works over HTTPS.

Missing Content-Security-Policy

WarningLow prioritysecurity.missing_csp

The response has no Content-Security-Policy header, the main browser defence against injected scripts.

How to fix. Add a Content-Security-Policy. Start in report-only mode to see what a strict policy would block.

Missing X-Content-Type-Options

WarningLow prioritysecurity.missing_x_content_type_options

The response lacks X-Content-Type-Options: nosniff, so browsers may guess a file's type and run something that should not run.

How to fix. Send X-Content-Type-Options: nosniff on every response.

Missing clickjacking protection

WarningLow prioritysecurity.missing_x_frame_options

Neither X-Frame-Options nor a CSP frame-ancestors rule stops other sites from framing this page (clickjacking).

How to fix. Send X-Frame-Options: SAMEORIGIN, or Content-Security-Policy: frame-ancestors 'self'.

Missing Referrer-Policy

WarningLow prioritysecurity.missing_referrer_policy

The response sets no Referrer-Policy, leaving how much of the URL is shared with other sites to the browser default.

How to fix. Send Referrer-Policy: strict-origin-when-cross-origin, or a stricter policy.

Protocol-relative resource URL

WarningLow prioritysecurity.protocol_relative_resource

The page loads resources with //host/path URLs. On HTTPS they work, but the pattern is obsolete and loads over HTTP wherever the page itself is HTTP.

How to fix. Use explicit https:// URLs.

HTML served with the wrong Content-Type

WarningMedium prioritysecurity.bad_content_type

The page is HTML, but the Content-Type header is missing or names another type. Browsers and crawlers may not render it as a web page.

How to fix. Send Content-Type: text/html; charset=utf-8 for HTML pages.

hreflang 12

Hreflang language does not match the page

WarningLow priorityhreflang.inconsistent_language

An alternate is annotated as one language, but that page's own lang attribute declares another. One of the two is wrong.

How to fix. Check which language the target page is really in, then fix its lang attribute or the hreflang value.

Hreflang points at a non-200 page

IssueMedium priorityhreflang.target_not_200

An hreflang alternate redirects or returns an error. Search engines drop annotations to URLs that are not live.

How to fix. Point the annotation at the final live URL of the alternate.

Hreflang alternate not linked from the site

WarningLow priorityhreflang.unlinked_target

An hreflang alternate is not reachable through the site's links; only the annotation points to it.

How to fix. Link to language versions visibly, e.g. with a language switcher, so visitors and crawlers can reach them.

Missing self-referencing hreflang

WarningMedium priorityhreflang.missing_self_reference

The page lists alternates but not itself. Each page in a set should include an hreflang annotation for its own URL.

How to fix. Add an hreflang entry for this page's own language pointing at its own URL.

Hreflang to a non-canonical URL

WarningMedium priorityhreflang.not_using_canonical

An alternate's URL is not that page's canonical. Search engines may ignore annotations to URLs they do not index.

How to fix. Use each alternate's canonical URL in hreflang.

Invalid hreflang code

IssueMedium priorityhreflang.invalid_code

An hreflang value is not a valid ISO 639-1 language code, optionally followed by an ISO 3166-1 region. Common mistakes: "en-uk" instead of "en-gb", or a region on its own.

How to fix. Use language-region values such as en-gb, fr-ca or es-419, or x-default for the fallback page.

One hreflang value points at several URLs

WarningMedium priorityhreflang.multiple_entries_for_language

The same hreflang value is assigned to more than one URL, so search engines cannot tell which one to show.

How to fix. Keep one URL per language-region value.

Missing x-default

OpportunityLow priorityhreflang.missing_x_default

The page has hreflang annotations but no x-default, the page shown to visitors whose language matches none of the alternates.

How to fix. Add an hreflang="x-default" entry, usually pointing at a language selector or the main-market page.

Hreflang outside <head>

IssueMedium priorityhreflang.outside_head

Hreflang <link> elements sit in the <body>, where search engines do not read them.

How to fix. Move the annotations into <head>, or declare them in the XML sitemap instead.

Hreflang points at a noindex page

IssueMedium priorityhreflang.target_noindex

An alternate carries noindex, so it cannot appear in search for its language however it is annotated.

How to fix. Remove noindex from the alternate, or remove it from the hreflang set.

No hreflang on a multilingual site

OpportunityLow priorityhreflang.missing_on_multilingual_site

The crawl found pages in more than one language, but this page has no hreflang annotations, so search engines must guess which version to show to whom.

How to fix. Annotate each page with its language alternates (and x-default), in <head>, a Link header or the sitemap.

Pagination 6

Pagination link to a non-200 page

WarningMedium prioritypagination.target_not_200

A rel="next" or rel="prev" link points at a page that redirects or errors, so the series is broken at that step.

How to fix. Point pagination links at live pages, and update them when a series gets shorter.

Pagination sequence error

WarningLow prioritypagination.sequence_error

The pages' rel="next" and rel="prev" links do not agree: page 2 says next is page 3, but page 3 does not say prev is page 2.

How to fix. Make every next/prev pair reciprocal, usually by generating both from the same page number in the template.

Pagination URL not linked in the page

WarningLow prioritypagination.url_not_linked

The page declares a rel="next" or rel="prev" URL that no visible link on the page points to. Crawlers that ignore the tags cannot reach the next page.

How to fix. Add ordinary <a href> links to the previous and next pages, e.g. in a pager.

Multiple next or prev links

WarningLow prioritypagination.multiple

The page declares more than one rel="next" or rel="prev" link, so the series has no single order.

How to fix. Keep one next and one prev per page.

Pagination links outside <head>

WarningLow prioritypagination.outside_head

rel="next"/"prev" <link> elements sit in the <body>, where they are not read.

How to fix. Move the <link> elements into <head>.

Paginated page canonicalised to the first page

WarningMedium prioritypagination.canonicalised_to_first

A later page in a series (it has a rel="prev") names another URL, typically page 1, as its canonical. Search engines may then never index the items listed on pages 2 and beyond.

How to fix. Give each page in the series a self-referencing canonical, or offer a view-all page and canonicalise to that.

Structured data 29

JSON-LD parse error

IssueMedium prioritystructured_data.jsonld_parse_error

A <script type="application/ld+json"> block is not valid JSON, so search engines ignore all of it. The usual culprits: a trailing comma, an unescaped quote, a template variable left empty.

How to fix. Validate the block with a JSON linter or the Rich Results Test, and fix the template that produces it.

Incomplete microdata

WarningLow prioritystructured_data.microdata_unparsable

The page has microdata that cannot be read as items: an itemscope with no itemtype, or itemprop attributes outside any itemscope.

How to fix. Give every itemscope an itemtype from schema.org and keep each itemprop inside its item's itemscope. Or switch to JSON-LD.

No structured data

OpportunityLow prioritystructured_data.none

The page has no JSON-LD or microdata. Structured data helps search engines and AI assistants understand what the page describes, such as a business, product, article or event.

How to fix. Add JSON-LD for the page's main entity. At minimum, Organization or LocalBusiness on the homepage and the matching type on content pages.

Non-schema.org vocabulary

WarningLow prioritystructured_data.non_schema_org

An item uses a vocabulary other than schema.org (e.g. the retired data-vocabulary.org). Search engines only support schema.org.

How to fix. Rewrite the markup with schema.org types and a "@context": "https://schema.org";.

Duplicate JSON-LD blocks

WarningLow prioritystructured_data.duplicate_blocks

Two or more JSON-LD blocks on the page are identical, usually a theme and a plugin both emitting the same markup.

How to fix. Output each block once; disable the duplicate source.

Organization: missing required properties

IssueMedium prioritystructured_data.organization.missing_required

A Organization item lacks properties it must have (name, url). Without them the item is not eligible for Organization rich results.

How to fix. Add the missing properties to the Organization markup. Google's structured data documentation for Organization lists them; test the page with the Rich Results Test.

LocalBusiness: missing required properties

IssueMedium prioritystructured_data.local_business.missing_required

A LocalBusiness item lacks properties it must have (name, address). Without them the item is not eligible for LocalBusiness rich results.

How to fix. Add the missing properties to the LocalBusiness markup. Google's structured data documentation for LocalBusiness lists them; test the page with the Rich Results Test.

Product: missing required properties

IssueMedium prioritystructured_data.product.missing_required

A Product item lacks properties it must have (name, offers). Without them the item is not eligible for Product rich results.

How to fix. Add the missing properties to the Product markup. Google's structured data documentation for Product lists them; test the page with the Rich Results Test.

Article: missing required properties

IssueMedium prioritystructured_data.article.missing_required

A Article item lacks properties it must have (headline, author, datePublished). Without them the item is not eligible for Article rich results.

How to fix. Add the missing properties to the Article markup. Google's structured data documentation for Article lists them; test the page with the Rich Results Test.

FAQPage: missing required properties

IssueMedium prioritystructured_data.faq_page.missing_required

A FAQPage item lacks properties it must have (mainEntity). Without them the item is not eligible for FAQPage rich results.

How to fix. Add the missing properties to the FAQPage markup. Google's structured data documentation for FAQPage lists them; test the page with the Rich Results Test.

BreadcrumbList: missing required properties

IssueMedium prioritystructured_data.breadcrumb_list.missing_required

A BreadcrumbList item lacks properties it must have (itemListElement). Without them the item is not eligible for BreadcrumbList rich results.

How to fix. Add the missing properties to the BreadcrumbList markup. Google's structured data documentation for BreadcrumbList lists them; test the page with the Rich Results Test.

WebSite: missing required properties

IssueMedium prioritystructured_data.website.missing_required

A WebSite item lacks properties it must have (name, url). Without them the item is not eligible for WebSite rich results.

How to fix. Add the missing properties to the WebSite markup. Google's structured data documentation for WebSite lists them; test the page with the Rich Results Test.

Event: missing required properties

IssueMedium prioritystructured_data.event.missing_required

A Event item lacks properties it must have (name, startDate, location). Without them the item is not eligible for Event rich results.

How to fix. Add the missing properties to the Event markup. Google's structured data documentation for Event lists them; test the page with the Rich Results Test.

Recipe: missing required properties

IssueMedium prioritystructured_data.recipe.missing_required

A Recipe item lacks properties it must have (name, image). Without them the item is not eligible for Recipe rich results.

How to fix. Add the missing properties to the Recipe markup. Google's structured data documentation for Recipe lists them; test the page with the Rich Results Test.

VideoObject: missing required properties

IssueMedium prioritystructured_data.video_object.missing_required

A VideoObject item lacks properties it must have (name, thumbnailUrl, uploadDate). Without them the item is not eligible for VideoObject rich results.

How to fix. Add the missing properties to the VideoObject markup. Google's structured data documentation for VideoObject lists them; test the page with the Rich Results Test.

JobPosting: missing required properties

IssueMedium prioritystructured_data.job_posting.missing_required

A JobPosting item lacks properties it must have (title, description, datePosted, hiringOrganization, jobLocation or applicantLocationRequirements). Without them the item is not eligible for JobPosting rich results.

How to fix. Add the missing properties to the JobPosting markup. Google's structured data documentation for JobPosting lists them; test the page with the Rich Results Test.

Review: missing required properties

IssueMedium prioritystructured_data.review.missing_required

A Review item lacks properties it must have (itemReviewed, author, reviewRating). Without them the item is not eligible for Review rich results.

How to fix. Add the missing properties to the Review markup. Google's structured data documentation for Review lists them; test the page with the Rich Results Test.

HowTo: missing required properties

IssueMedium prioritystructured_data.how_to.missing_required

A HowTo item lacks properties it must have (name, step). Google no longer shows HowTo rich results, but other consumers still read valid markup.

How to fix. Add the missing properties to the HowTo markup. Google's structured data documentation for HowTo lists them; test the page with the Rich Results Test.

Validation 6

Missing doctype

WarningMedium priorityvalidation.missing_doctype

The document does not start with <!DOCTYPE html>, so browsers render it in quirks mode, with legacy layout rules that differ between browsers.

How to fix. Make <!DOCTYPE html> the very first line of every page.

Body element inside <head>

IssueHigh priorityvalidation.invalid_head_element

The <head> contains an element that belongs in the body (a <div>, <img>, <a>…). Parsers end the <head> at that point, so every meta, canonical and hreflang tag after it is treated as body content and may be ignored.

How to fix. Move the element into <body>. Third-party snippets that inject markup into <head> are the usual cause.

<body> before <head>

IssueMedium priorityvalidation.body_before_head

A <body> tag appears in the source before the <head>. Everything in the head is then parsed as body content.

How to fix. Fix the template so the document is <html>, then <head>, then <body>.

Multiple <html>, <head> or <body> tags

IssueMedium priorityvalidation.multiple_html_or_body

The source contains more than one <html>, <head> or <body> start tag, usually from templates or includes nested inside each other.

How to fix. Make sure only the outer layout emits the document skeleton; partials should output fragments.

<head> is not the first element

WarningLow priorityvalidation.head_not_first

Something comes between <html> and <head>. Parsers then create an implied head, and the real one is mis-parsed.

How to fix. Put <head> immediately after the opening <html> tag.

Missing viewport meta tag

WarningMedium priorityvalidation.missing_viewport

The page has no <meta name="viewport">, so phones render it at desktop width, zoomed out. Search engines index the mobile version first.

How to fix. Add <meta name="viewport" content="width=device-width, initial-scale=1"> to <head>.

JavaScript 13

Content only in the rendered page

WarningHigh priorityNeeds renderingjavascript.content_only_rendered

A substantial share of the page's text appears only after JavaScript runs. Google renders pages in a second pass that can lag the first by days; AI crawlers such as GPTBot and ClaudeBot do not run JavaScript at all and never see it.

How to fix. Render the main content on the server (SSR or static generation) so it is in the HTML response. Keep JavaScript for interaction, not for the copy itself.

Title changed by JavaScript

WarningMedium priorityNeeds renderingjavascript.title_changed

The <title> in the rendered page is different from the one in the HTML response, or exists only after rendering. Bots that do not render, and Google before it renders, index the original.

How to fix. Send the final title in the HTML response. In single-page apps, set it during server rendering rather than on the client.

Meta description changed by JavaScript

WarningLow priorityNeeds renderingjavascript.meta_description_changed

The meta description in the rendered page is different from the one in the HTML response, or exists only after rendering.

How to fix. Send the final meta description in the HTML response rather than setting it from a script.

H1 changed by JavaScript

WarningMedium priorityNeeds renderingjavascript.h1_changed

The first <h1> in the rendered page is different from the one in the HTML response, or exists only after rendering.

How to fix. Render the page's main heading on the server so every crawler reads the same one.

Canonical changed by JavaScript

IssueHigh priorityNeeds renderingjavascript.canonical_changed

The rel=canonical in the rendered page points somewhere other than the one in the HTML response, or is added by script. Google says to keep the canonical in the HTML and not to change it with JavaScript; conflicting signals may see both ignored.

How to fix. Put the correct canonical in the server HTML and remove the script that rewrites or injects it.

noindex in the original HTML only

IssueHigh priorityNeeds renderingjavascript.noindex_only_original

The HTML response carries noindex and JavaScript removes it. Google does not render pages it is told not to index, so the page stays out of the index whatever the script does.

How to fix. If the page should be indexed, remove noindex from the server HTML. Never rely on JavaScript to lift a noindex.

noindex added by JavaScript

IssueHigh priorityNeeds renderingjavascript.noindex_only_rendered

The HTML response is indexable but the rendered page carries noindex. Crawlers that do not render will index it; Google drops it after rendering. Either way the signal is mixed.

How to fix. Decide whether the page should be indexed and say so in the server HTML. Remove the script that adds the robots meta tag.

JavaScript redirect

WarningMedium priorityNeeds renderingjavascript.js_redirect

The page navigates to another URL from a script after it loads. Crawlers that do not render never follow it, and Google treats it as a weaker signal than an HTTP redirect.

How to fix. Replace the script redirect with a server-side 301 (permanent) or 302 (temporary).

Old AJAX crawling scheme (#!)

IssueMedium priorityjavascript.ajax_crawling_scheme

The page's URL or its links use hashbang (#!) URLs from Google's AJAX crawling scheme, which Google deprecated in 2015 and no longer supports. Everything after the # is ignored by crawlers.

How to fix. Move to real URLs with the History API (pushState) and render their content on the server; redirect the old #! URLs.

Rendered page has no text

IssueHigh priorityNeeds renderingjavascript.rendered_word_count_zero

After JavaScript ran, the page had no visible text at all: the app failed to render, rendered only after a user action, or needs a browser feature the renderer does not have.

How to fix. Open the page with JavaScript errors visible (DevTools console) and fix what stops the content rendering. Check the console errors finding for the same URL.

JavaScript console errors

WarningLow priorityNeeds renderingjavascript.console_errors

The page logged errors to the console, or threw uncaught exceptions, while it rendered. Errors can stop content or links from rendering for search engines as well as visitors.

How to fix. Open the page in a browser with DevTools, read the console, and fix the errors from the first one down. Failed resource loads appear here too.

Page looks client-rendered: crawl with rendering

OpportunityMedium priorityjavascript.enable_rendering

The HTML response has no internal links and almost no text, which is what a page built by JavaScript looks like before it runs. This crawl did not render pages, so what the page shows after JavaScript was not checked.

How to fix. Run the crawl again with rendering on (Thin pages is enough) to see the rendered content, links and the JavaScript findings.

Accessibility 89

Accesskey attribute value should be unique

IssueHigh priorityNeeds renderingaccessibility.accesskeys

Ensure every accesskey attribute value is unique. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "accesskeys") in the rendered page.

How to fix. Open the page, find the elements axe reports for "accesskeys", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/accesskeys

Active <area> elements must have alternative text

IssueHigh priorityNeeds renderingaccessibility.area_alt

Ensure <area> elements of image maps have alternative text. WCAG success criteria: 2.4.4, 4.1.2. Checked by axe-core 4.11.4 (rule "area-alt") in the rendered page.

How to fix. Open the page, find the elements axe reports for "area-alt", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/area-alt

Elements must only use supported ARIA attributes

IssueHigh priorityNeeds renderingaccessibility.aria_allowed_attr

Ensure an element's role supports its ARIA attributes. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-allowed-attr") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-allowed-attr", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-allowed-attr

ARIA role should be appropriate for the element

OpportunityLow priorityNeeds renderingaccessibility.aria_allowed_role

Ensure role attribute has an appropriate value for the element. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "aria-allowed-role") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-allowed-role", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-allowed-role

Aria-braille attributes must have a non-braille equivalent

IssueHigh priorityNeeds renderingaccessibility.aria_braille_equivalent

Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-braille-equivalent") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-braille-equivalent", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-braille-equivalent

ARIA commands must have an accessible name

IssueHigh priorityNeeds renderingaccessibility.aria_command_name

Ensure every ARIA button, link and menuitem has an accessible name. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-command-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-command-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-command-name

ARIA attributes must be used as specified for the element's role

IssueHigh priorityNeeds renderingaccessibility.aria_conditional_attr

Ensure ARIA attributes are used as described in the specification of the element's role. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-conditional-attr") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-conditional-attr", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-conditional-attr

Deprecated ARIA roles must not be used

OpportunityLow priorityNeeds renderingaccessibility.aria_deprecated_role

Ensure elements do not use deprecated roles. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-deprecated-role") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-deprecated-role", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-deprecated-role

ARIA dialog and alertdialog nodes should have an accessible name

IssueHigh priorityNeeds renderingaccessibility.aria_dialog_name

Ensure every ARIA dialog and alertdialog node has an accessible name. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "aria-dialog-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-dialog-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-dialog-name

Aria-hidden="true" must not be present on the document body

IssueHigh priorityNeeds renderingaccessibility.aria_hidden_body

Ensure aria-hidden="true" is not present on the document body. WCAG success criteria: 1.3.1, 4.1.2. Checked by axe-core 4.11.4 (rule "aria-hidden-body") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-hidden-body", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-hidden-body

ARIA hidden element must not be focusable or contain focusable elements

IssueHigh priorityNeeds renderingaccessibility.aria_hidden_focus

Ensure aria-hidden elements are not focusable nor contain focusable elements. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-hidden-focus") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-hidden-focus", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-hidden-focus

ARIA input fields must have an accessible name

IssueHigh priorityNeeds renderingaccessibility.aria_input_field_name

Ensure every ARIA input field has an accessible name. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-input-field-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-input-field-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-input-field-name

ARIA meter nodes must have an accessible name

IssueHigh priorityNeeds renderingaccessibility.aria_meter_name

Ensure every ARIA meter node has an accessible name. WCAG success criteria: 1.1.1. Checked by axe-core 4.11.4 (rule "aria-meter-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-meter-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-meter-name

ARIA progressbar nodes must have an accessible name

IssueHigh priorityNeeds renderingaccessibility.aria_progressbar_name

Ensure every ARIA progressbar node has an accessible name. WCAG success criteria: 1.1.1. Checked by axe-core 4.11.4 (rule "aria-progressbar-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-progressbar-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-progressbar-name

Elements must only use permitted ARIA attributes

IssueHigh priorityNeeds renderingaccessibility.aria_prohibited_attr

Ensure ARIA attributes are not prohibited for an element's role. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-prohibited-attr") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-prohibited-attr", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-prohibited-attr

Required ARIA attributes must be provided

IssueHigh priorityNeeds renderingaccessibility.aria_required_attr

Ensure elements with ARIA roles have all required ARIA attributes. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-required-attr") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-required-attr", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-required-attr

Certain ARIA roles must contain particular children

IssueHigh priorityNeeds renderingaccessibility.aria_required_children

Ensure elements with an ARIA role that require child roles contain them. WCAG success criteria: 1.3.1. Checked by axe-core 4.11.4 (rule "aria-required-children") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-required-children", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-required-children

Certain ARIA roles must be contained by particular parents

IssueHigh priorityNeeds renderingaccessibility.aria_required_parent

Ensure elements with an ARIA role that require parent roles are contained by them. WCAG success criteria: 1.3.1. Checked by axe-core 4.11.4 (rule "aria-required-parent") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-required-parent", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-required-parent

ARIA roles used must conform to valid values

IssueHigh priorityNeeds renderingaccessibility.aria_roles

Ensure all elements with a role attribute use a valid value. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-roles") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-roles", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-roles

"role=text" should have no focusable descendants

IssueHigh priorityNeeds renderingaccessibility.aria_text

Ensure role="text" is used on elements with no focusable descendants. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "aria-text") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-text", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-text

ARIA toggle fields must have an accessible name

IssueHigh priorityNeeds renderingaccessibility.aria_toggle_field_name

Ensure every ARIA toggle field has an accessible name. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-toggle-field-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-toggle-field-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-toggle-field-name

ARIA tooltip nodes must have an accessible name

IssueHigh priorityNeeds renderingaccessibility.aria_tooltip_name

Ensure every ARIA tooltip node has an accessible name. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-tooltip-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-tooltip-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-tooltip-name

ARIA treeitem nodes should have an accessible name

IssueHigh priorityNeeds renderingaccessibility.aria_treeitem_name

Ensure every ARIA treeitem node has an accessible name. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "aria-treeitem-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-treeitem-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-treeitem-name

ARIA attributes must conform to valid names

IssueHigh priorityNeeds renderingaccessibility.aria_valid_attr

Ensure attributes that begin with aria- are valid ARIA attributes. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-valid-attr") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-valid-attr", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-valid-attr

ARIA attributes must conform to valid values

IssueHigh priorityNeeds renderingaccessibility.aria_valid_attr_value

Ensure all ARIA attributes have valid values. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "aria-valid-attr-value") in the rendered page.

How to fix. Open the page, find the elements axe reports for "aria-valid-attr-value", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/aria-valid-attr-value

Autocomplete attribute must be used correctly

IssueHigh priorityNeeds renderingaccessibility.autocomplete_valid

Ensure the autocomplete attribute is correct and suitable for the form field. WCAG success criteria: 1.3.5. Checked by axe-core 4.11.4 (rule "autocomplete-valid") in the rendered page.

How to fix. Open the page, find the elements axe reports for "autocomplete-valid", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/autocomplete-valid

Inline text spacing must be adjustable with custom stylesheets

IssueHigh priorityNeeds renderingaccessibility.avoid_inline_spacing

Ensure that text spacing set through style attributes can be adjusted with custom stylesheets. WCAG success criteria: 1.4.12. Checked by axe-core 4.11.4 (rule "avoid-inline-spacing") in the rendered page.

How to fix. Open the page, find the elements axe reports for "avoid-inline-spacing", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/avoid-inline-spacing

Buttons must have discernible text

IssueHigh priorityNeeds renderingaccessibility.button_name

Ensure buttons have discernible text. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "button-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "button-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/button-name

Page must have means to bypass repeated blocks

IssueHigh priorityNeeds renderingaccessibility.bypass

Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content. WCAG success criteria: 2.4.1. Checked by axe-core 4.11.4 (rule "bypass") in the rendered page.

How to fix. Open the page, find the elements axe reports for "bypass", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/bypass

Elements must meet minimum color contrast ratio thresholds

IssueHigh priorityNeeds renderingaccessibility.color_contrast

Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds. WCAG success criteria: 1.4.3. Checked by axe-core 4.11.4 (rule "color-contrast") in the rendered page.

How to fix. Open the page, find the elements axe reports for "color-contrast", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/color-contrast

<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements

IssueHigh priorityNeeds renderingaccessibility.definition_list

Ensure <dl> elements are structured correctly. WCAG success criteria: 1.3.1. Checked by axe-core 4.11.4 (rule "definition-list") in the rendered page.

How to fix. Open the page, find the elements axe reports for "definition-list", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/definition-list

<dt> and <dd> elements must be contained by a <dl>

IssueHigh priorityNeeds renderingaccessibility.dlitem

Ensure <dt> and <dd> elements are contained by a <dl>. WCAG success criteria: 1.3.1. Checked by axe-core 4.11.4 (rule "dlitem") in the rendered page.

How to fix. Open the page, find the elements axe reports for "dlitem", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/dlitem

Documents must have <title> element to aid in navigation

IssueHigh priorityNeeds renderingaccessibility.document_title

Ensure each HTML document contains a non-empty <title> element. WCAG success criteria: 2.4.2. Checked by axe-core 4.11.4 (rule "document-title") in the rendered page.

How to fix. Open the page, find the elements axe reports for "document-title", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/document-title

IDs used in ARIA and labels must be unique

IssueHigh priorityNeeds renderingaccessibility.duplicate_id_aria

Ensure every id attribute value used in ARIA and in labels is unique. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "duplicate-id-aria") in the rendered page.

How to fix. Open the page, find the elements axe reports for "duplicate-id-aria", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/duplicate-id-aria

Headings should not be empty

OpportunityLow priorityNeeds renderingaccessibility.empty_heading

Ensure headings have discernible text. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "empty-heading") in the rendered page.

How to fix. Open the page, find the elements axe reports for "empty-heading", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/empty-heading

Table header text should not be empty

OpportunityLow priorityNeeds renderingaccessibility.empty_table_header

Ensure table headers have discernible text. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "empty-table-header") in the rendered page.

How to fix. Open the page, find the elements axe reports for "empty-table-header", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/empty-table-header

Form field must not have multiple label elements

WarningMedium priorityNeeds renderingaccessibility.form_field_multiple_labels

Ensure form field does not have multiple label elements. WCAG success criteria: 3.3.2. Checked by axe-core 4.11.4 (rule "form-field-multiple-labels") in the rendered page.

How to fix. Open the page, find the elements axe reports for "form-field-multiple-labels", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/form-field-multiple-labels

Frames with focusable content must not have tabindex=-1

IssueHigh priorityNeeds renderingaccessibility.frame_focusable_content

Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1. WCAG success criteria: 2.1.1. Checked by axe-core 4.11.4 (rule "frame-focusable-content") in the rendered page.

How to fix. Open the page, find the elements axe reports for "frame-focusable-content", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/frame-focusable-content

Frames should be tested with axe-core

IssueHigh priorityNeeds renderingaccessibility.frame_tested

Ensure <iframe> and <frame> elements contain the axe-core script. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "frame-tested") in the rendered page.

How to fix. Open the page, find the elements axe reports for "frame-tested", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/frame-tested

Frames must have an accessible name

IssueHigh priorityNeeds renderingaccessibility.frame_title

Ensure <iframe> and <frame> elements have an accessible name. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "frame-title") in the rendered page.

How to fix. Open the page, find the elements axe reports for "frame-title", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/frame-title

Frames must have a unique title attribute

IssueHigh priorityNeeds renderingaccessibility.frame_title_unique

Ensure <iframe> and <frame> elements contain a unique title attribute. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "frame-title-unique") in the rendered page.

How to fix. Open the page, find the elements axe reports for "frame-title-unique", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/frame-title-unique

Heading levels should only increase by one

WarningMedium priorityNeeds renderingaccessibility.heading_order

Ensure the order of headings is semantically correct. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "heading-order") in the rendered page.

How to fix. Open the page, find the elements axe reports for "heading-order", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/heading-order

<html> element must have a lang attribute

IssueHigh priorityNeeds renderingaccessibility.html_has_lang

Ensure every HTML document has a lang attribute. WCAG success criteria: 3.1.1. Checked by axe-core 4.11.4 (rule "html-has-lang") in the rendered page.

How to fix. Open the page, find the elements axe reports for "html-has-lang", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/html-has-lang

<html> element must have a valid value for the lang attribute

IssueHigh priorityNeeds renderingaccessibility.html_lang_valid

Ensure the lang attribute of the <html> element has a valid value. WCAG success criteria: 3.1.1. Checked by axe-core 4.11.4 (rule "html-lang-valid") in the rendered page.

How to fix. Open the page, find the elements axe reports for "html-lang-valid", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/html-lang-valid

HTML elements with lang and xml:lang must have the same base language

WarningMedium priorityNeeds renderingaccessibility.html_xml_lang_mismatch

Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page. WCAG success criteria: 3.1.1. Checked by axe-core 4.11.4 (rule "html-xml-lang-mismatch") in the rendered page.

How to fix. Open the page, find the elements axe reports for "html-xml-lang-mismatch", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/html-xml-lang-mismatch

Images must have alternative text

IssueHigh priorityNeeds renderingaccessibility.image_alt

Ensure <img> elements have alternative text or a role of none or presentation. WCAG success criteria: 1.1.1. Checked by axe-core 4.11.4 (rule "image-alt") in the rendered page.

How to fix. Open the page, find the elements axe reports for "image-alt", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/image-alt

Alternative text of images should not be repeated as text

OpportunityLow priorityNeeds renderingaccessibility.image_redundant_alt

Ensure image alternative is not repeated as text. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "image-redundant-alt") in the rendered page.

How to fix. Open the page, find the elements axe reports for "image-redundant-alt", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/image-redundant-alt

Input buttons must have discernible text

IssueHigh priorityNeeds renderingaccessibility.input_button_name

Ensure input buttons have discernible text. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "input-button-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "input-button-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/input-button-name

Image buttons must have alternative text

IssueHigh priorityNeeds renderingaccessibility.input_image_alt

Ensure <input type="image"> elements have alternative text. WCAG success criteria: 1.1.1, 4.1.2. Checked by axe-core 4.11.4 (rule "input-image-alt") in the rendered page.

How to fix. Open the page, find the elements axe reports for "input-image-alt", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/input-image-alt

Form elements must have labels

IssueHigh priorityNeeds renderingaccessibility.label

Ensure every form element has a label. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "label") in the rendered page.

How to fix. Open the page, find the elements axe reports for "label", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/label

Form elements should have a visible label

IssueHigh priorityNeeds renderingaccessibility.label_title_only

Ensure that every form element has a visible label and is not solely labeled using hidden labels, or the title or aria-describedby attributes. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "label-title-only") in the rendered page.

How to fix. Open the page, find the elements axe reports for "label-title-only", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/label-title-only

Banner landmark should not be contained in another landmark

WarningMedium priorityNeeds renderingaccessibility.landmark_banner_is_top_level

Ensure the banner landmark is at top level. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-banner-is-top-level") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-banner-is-top-level", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-banner-is-top-level

Aside should not be contained in another landmark

WarningMedium priorityNeeds renderingaccessibility.landmark_complementary_is_top_level

Ensure the complementary landmark or aside is at top level. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-complementary-is-top-level") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-complementary-is-top-level", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-complementary-is-top-level

Contentinfo landmark should not be contained in another landmark

WarningMedium priorityNeeds renderingaccessibility.landmark_contentinfo_is_top_level

Ensure the contentinfo landmark is at top level. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-contentinfo-is-top-level") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-contentinfo-is-top-level", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-contentinfo-is-top-level

Main landmark should not be contained in another landmark

WarningMedium priorityNeeds renderingaccessibility.landmark_main_is_top_level

Ensure the main landmark is at top level. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-main-is-top-level") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-main-is-top-level", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-main-is-top-level

Document should not have more than one banner landmark

WarningMedium priorityNeeds renderingaccessibility.landmark_no_duplicate_banner

Ensure the document has at most one banner landmark. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-no-duplicate-banner") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-no-duplicate-banner", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-no-duplicate-banner

Document should not have more than one contentinfo landmark

WarningMedium priorityNeeds renderingaccessibility.landmark_no_duplicate_contentinfo

Ensure the document has at most one contentinfo landmark. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-no-duplicate-contentinfo") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-no-duplicate-contentinfo", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-no-duplicate-contentinfo

Document should not have more than one main landmark

WarningMedium priorityNeeds renderingaccessibility.landmark_no_duplicate_main

Ensure the document has at most one main landmark. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-no-duplicate-main") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-no-duplicate-main", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-no-duplicate-main

Document should have one main landmark

WarningMedium priorityNeeds renderingaccessibility.landmark_one_main

Ensure the document has a main landmark. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-one-main") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-one-main", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-one-main

Landmarks should have a unique role or role/label/title (i.e. accessible name) combination

WarningMedium priorityNeeds renderingaccessibility.landmark_unique

Ensure landmarks are unique. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "landmark-unique") in the rendered page.

How to fix. Open the page, find the elements axe reports for "landmark-unique", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/landmark-unique

<ul> and <ol> must only directly contain <li>, <script> or <template> elements

IssueHigh priorityNeeds renderingaccessibility.list

Ensure that lists are structured correctly. WCAG success criteria: 1.3.1. Checked by axe-core 4.11.4 (rule "list") in the rendered page.

How to fix. Open the page, find the elements axe reports for "list", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/list

<li> elements must be contained in a <ul> or <ol>

IssueHigh priorityNeeds renderingaccessibility.listitem

Ensure <li> elements are used semantically. WCAG success criteria: 1.3.1. Checked by axe-core 4.11.4 (rule "listitem") in the rendered page.

How to fix. Open the page, find the elements axe reports for "listitem", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/listitem

<marquee> elements are deprecated and must not be used

IssueHigh priorityNeeds renderingaccessibility.marquee

Ensure <marquee> elements are not used. WCAG success criteria: 2.2.2. Checked by axe-core 4.11.4 (rule "marquee") in the rendered page.

How to fix. Open the page, find the elements axe reports for "marquee", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/marquee

Delayed refresh under 20 hours must not be used

IssueHigh priorityNeeds renderingaccessibility.meta_refresh

Ensure <meta http-equiv="refresh"> is not used for delayed refresh. WCAG success criteria: 2.2.1. Checked by axe-core 4.11.4 (rule "meta-refresh") in the rendered page.

How to fix. Open the page, find the elements axe reports for "meta-refresh", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/meta-refresh

Zooming and scaling must not be disabled

WarningMedium priorityNeeds renderingaccessibility.meta_viewport

Ensure <meta name="viewport"> does not disable text scaling and zooming. WCAG success criteria: 1.4.4. Checked by axe-core 4.11.4 (rule "meta-viewport") in the rendered page.

How to fix. Open the page, find the elements axe reports for "meta-viewport", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/meta-viewport

Users should be able to zoom and scale the text up to 500%

OpportunityLow priorityNeeds renderingaccessibility.meta_viewport_large

Ensure <meta name="viewport"> can scale a significant amount. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "meta-viewport-large") in the rendered page.

How to fix. Open the page, find the elements axe reports for "meta-viewport-large", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/meta-viewport-large

Interactive controls must not be nested

IssueHigh priorityNeeds renderingaccessibility.nested_interactive

Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "nested-interactive") in the rendered page.

How to fix. Open the page, find the elements axe reports for "nested-interactive", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/nested-interactive

<video> or <audio> elements must not play automatically

WarningMedium priorityNeeds renderingaccessibility.no_autoplay_audio

Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio. WCAG success criteria: 1.4.2. Checked by axe-core 4.11.4 (rule "no-autoplay-audio") in the rendered page.

How to fix. Open the page, find the elements axe reports for "no-autoplay-audio", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/no-autoplay-audio

<object> elements must have alternative text

IssueHigh priorityNeeds renderingaccessibility.object_alt

Ensure <object> elements have alternative text. WCAG success criteria: 1.1.1. Checked by axe-core 4.11.4 (rule "object-alt") in the rendered page.

How to fix. Open the page, find the elements axe reports for "object-alt", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/object-alt

Page should contain a level-one heading

WarningMedium priorityNeeds renderingaccessibility.page_has_heading_one

Ensure that the page, or at least one of its frames contains a level-one heading. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "page-has-heading-one") in the rendered page.

How to fix. Open the page, find the elements axe reports for "page-has-heading-one", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/page-has-heading-one

Elements marked as presentational should be consistently ignored

OpportunityLow priorityNeeds renderingaccessibility.presentation_role_conflict

Ensure elements marked as presentational do not have global ARIA or tabindex so that all screen readers ignore them. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "presentation-role-conflict") in the rendered page.

How to fix. Open the page, find the elements axe reports for "presentation-role-conflict", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/presentation-role-conflict

All page content should be contained by landmarks

WarningMedium priorityNeeds renderingaccessibility.region

Ensure all page content is contained by landmarks. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "region") in the rendered page.

How to fix. Open the page, find the elements axe reports for "region", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/region

[role="img"] elements must have alternative text

IssueHigh priorityNeeds renderingaccessibility.role_img_alt

Ensure [role="img"] elements have alternative text. WCAG success criteria: 1.1.1. Checked by axe-core 4.11.4 (rule "role-img-alt") in the rendered page.

How to fix. Open the page, find the elements axe reports for "role-img-alt", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/role-img-alt

Scope attribute should be used correctly

WarningMedium priorityNeeds renderingaccessibility.scope_attr_valid

Ensure the scope attribute is used correctly on tables. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "scope-attr-valid") in the rendered page.

How to fix. Open the page, find the elements axe reports for "scope-attr-valid", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/scope-attr-valid

Scrollable region must have keyboard access

IssueHigh priorityNeeds renderingaccessibility.scrollable_region_focusable

Ensure elements that have scrollable content are accessible by keyboard in Safari. WCAG success criteria: 2.1.1, 2.1.3. Checked by axe-core 4.11.4 (rule "scrollable-region-focusable") in the rendered page.

How to fix. Open the page, find the elements axe reports for "scrollable-region-focusable", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/scrollable-region-focusable

Select element must have an accessible name

IssueHigh priorityNeeds renderingaccessibility.select_name

Ensure select element has an accessible name. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "select-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "select-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/select-name

Server-side image maps must not be used

OpportunityLow priorityNeeds renderingaccessibility.server_side_image_map

Ensure that server-side image maps are not used. WCAG success criteria: 2.1.1. Checked by axe-core 4.11.4 (rule "server-side-image-map") in the rendered page.

How to fix. Open the page, find the elements axe reports for "server-side-image-map", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/server-side-image-map

Summary elements must have discernible text

IssueHigh priorityNeeds renderingaccessibility.summary_name

Ensure summary elements have discernible text. WCAG success criteria: 4.1.2. Checked by axe-core 4.11.4 (rule "summary-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "summary-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/summary-name

<svg> elements with an img role must have alternative text

IssueHigh priorityNeeds renderingaccessibility.svg_img_alt

Ensure <svg> elements with an img, graphics-document or graphics-symbol role have accessible text. WCAG success criteria: 1.1.1. Checked by axe-core 4.11.4 (rule "svg-img-alt") in the rendered page.

How to fix. Open the page, find the elements axe reports for "svg-img-alt", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/svg-img-alt

Elements should not have tabindex greater than zero

IssueHigh priorityNeeds renderingaccessibility.tabindex

Ensure tabindex attribute values are not greater than 0. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "tabindex") in the rendered page.

How to fix. Open the page, find the elements axe reports for "tabindex", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/tabindex

Tables should not have the same summary and caption

OpportunityLow priorityNeeds renderingaccessibility.table_duplicate_name

Ensure the <caption> element does not contain the same text as the summary attribute. An axe-core best practice, not a WCAG requirement. Checked by axe-core 4.11.4 (rule "table-duplicate-name") in the rendered page.

How to fix. Open the page, find the elements axe reports for "table-duplicate-name", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/table-duplicate-name

Table cell headers attributes must refer to other <th> elements in the same table

IssueHigh priorityNeeds renderingaccessibility.td_headers_attr

Ensure that each cell in a table that uses the headers attribute refers only to other <th> elements in that table. WCAG success criteria: 1.3.1. Checked by axe-core 4.11.4 (rule "td-headers-attr") in the rendered page.

How to fix. Open the page, find the elements axe reports for "td-headers-attr", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/td-headers-attr

Table headers in a data table must refer to data cells

IssueHigh priorityNeeds renderingaccessibility.th_has_data_cells

Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe. WCAG success criteria: 1.3.1. Checked by axe-core 4.11.4 (rule "th-has-data-cells") in the rendered page.

How to fix. Open the page, find the elements axe reports for "th-has-data-cells", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/th-has-data-cells

Lang attribute must have a valid value

IssueHigh priorityNeeds renderingaccessibility.valid_lang

Ensure lang attributes have valid values. WCAG success criteria: 3.1.2. Checked by axe-core 4.11.4 (rule "valid-lang") in the rendered page.

How to fix. Open the page, find the elements axe reports for "valid-lang", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/valid-lang

<video> elements must have captions

IssueHigh priorityNeeds renderingaccessibility.video_caption

Ensure <video> elements have captions. WCAG success criteria: 1.2.2. Checked by axe-core 4.11.4 (rule "video-caption") in the rendered page.

How to fix. Open the page, find the elements axe reports for "video-caption", and fix each one. Deque's guide to this rule, with examples: https://dequeuniversity.com/rules/axe/4.11/video-caption

Mobile 4

Content wider than the screen

IssueMedium priorityNeeds renderingmobile.content_wider_than_viewport

On a phone-width screen the page is wider than the viewport, so visitors scroll sideways. Google indexes the mobile version of pages, and this is one of the problems its mobile-friendliness guidance names.

How to fix. Find the element that overflows (fixed widths, wide images or tables, long unbroken strings) and make it fit: max-width: 100%, flexible layouts, overflow-x: auto on tables.

Font size too small for mobile

WarningMedium priorityNeeds renderingmobile.font_too_small

The body text's computed size is under 12 px on a phone-width screen, which most visitors cannot read without zooming.

How to fix. Set the base font size to at least 16 px and size other text relative to it (rem). Check that the viewport meta tag is present, or the page is shown zoomed out.

Tap targets too close together

WarningLow priorityNeeds renderingmobile.tap_targets_too_close

Links or buttons smaller than 24 × 24 px sit within 24 px of another target, so a finger easily hits the wrong one (WCAG 2.2 success criterion 2.5.8, target size).

How to fix. Make small targets at least 24 × 24 px (48 px is the comfortable size), or add spacing between them.

Lighthouse mobile usability audit failed

WarningMedium priorityNeeds a Lighthouse runmobile.lighthouse_usability_low

The page's mobile PageSpeed run failed one of Lighthouse's mobile usability audits: a viewport meta tag that does not fit the page to the device width, or (on Lighthouse versions that still report them) legible font sizes and tap target spacing. The evidence names the failing audits.

How to fix. Add <meta name="viewport" content="width=device-width, initial-scale=1"> and keep it free of fixed widths and user-scalable=no. For font size and tap targets, use body text of at least 12 px and give links and buttons at least 24 × 24 px with space between them, then run PageSpeed again.

Spelling 3

Spelling mistakes

WarningLow prioritySpell checkspelling.misspellings

Words in the page's visible text that are not in the dictionary for its language (from <html lang>). Names and product terms show up here too until they are added to the accepted words.

How to fix. Correct the misspelled words. Add brand names, product names and other correct terms to your accepted words so they are not reported again.

More than 5 spelling mistakes

WarningMedium prioritySpell checkspelling.over_5_misspellings

More than five different words on the page are not in the dictionary. At that count it is usually an unproofread page, a page in a different language than its lang attribute says, or a run of names that should be accepted words.

How to fix. Proofread the page. If the words are correct, check that <html lang> matches the page's language and add the terms to your accepted words.

Language not spell-checked

OpportunityLow prioritySpell checkspelling.unsupported_language

The page's language is not one the spell check covers (English, French and German), so its text was not checked.

How to fix. Nothing to fix on the page. Check its text with a spell checker for its language before publishing.

Performance 25

Render-blocking resources

OpportunityHigh priorityNeeds a Lighthouse runperformance.render_blocking_resources

Stylesheets or scripts in the <head> hold up the first paint until they have downloaded and run. From the page's Lighthouse run.

How to fix. Inline the CSS the first screen needs and load the rest asynchronously; add defer or async to scripts that do not have to run before the page shows.

Unused CSS

OpportunityMedium priorityNeeds a Lighthouse runperformance.unused_css

The page downloads CSS rules it never applies, which delays rendering and wastes bytes. From the page's Lighthouse run.

How to fix. Remove unused rules or split stylesheets per page or component, and load non-critical CSS later.

Unused JavaScript

OpportunityMedium priorityNeeds a Lighthouse runperformance.unused_javascript

The page downloads JavaScript that never runs during the load, which costs bytes and main-thread time. From the page's Lighthouse run.

How to fix. Split bundles so each page loads only its own code, and defer code that is not needed until a user interacts.

Unminified CSS

OpportunityLow priorityNeeds a Lighthouse runperformance.unminified_css

Stylesheets are served with whitespace and comments a minifier would remove. From the page's Lighthouse run.

How to fix. Minify CSS in the build step (most bundlers do it in production mode).

Unminified JavaScript

OpportunityLow priorityNeeds a Lighthouse runperformance.unminified_javascript

Scripts are served with whitespace and comments a minifier would remove. From the page's Lighthouse run.

How to fix. Minify JavaScript in the build step and check that production builds are what the server sends.

Images without explicit width and height

OpportunityMedium priorityNeeds a Lighthouse runperformance.unsized_images

Images without width and height attributes make the layout jump as they load, which counts against Cumulative Layout Shift. From the page's Lighthouse run.

How to fix. Give every <img> width and height attributes (or a CSS aspect-ratio) matching its intrinsic size.

Offscreen images loaded up front

OpportunityMedium priorityNeeds a Lighthouse runperformance.offscreen_images

Images below the fold are downloaded during the initial load, competing with what the visitor sees first. Lighthouse 13 no longer reports this audit; the rule fires only on runs that include it. From the page's Lighthouse run.

How to fix. Add loading="lazy" to images below the fold, and never to the main image at the top.

Images not efficiently encoded

OpportunityMedium priorityNeeds a Lighthouse runperformance.efficiently_encode_images

Images could be compressed further without visible loss of quality. On Lighthouse 13 this reads the image delivery insight, which also covers sizing and format. From the page's Lighthouse run.

How to fix. Re-encode images at a sensible quality (around 80 for JPEG and WebP) or serve them through an image CDN that does it for you.

Images larger than displayed

OpportunityMedium priorityNeeds a Lighthouse runperformance.properly_size_images

Images are downloaded at a larger size than the page displays them, wasting bytes on phones in particular. From the page's Lighthouse run.

How to fix. Serve responsive images with srcset and sizes so each screen downloads the size it shows.

Images not in a next-gen format

OpportunityLow priorityNeeds a Lighthouse runperformance.next_gen_image_formats

JPEG and PNG images that would be smaller as WebP or AVIF. From the page's Lighthouse run.

How to fix. Serve WebP or AVIF, with a <picture> fallback for older browsers, or let an image CDN negotiate the format.

Text not compressed

OpportunityHigh priorityNeeds a Lighthouse runperformance.text_compression

HTML, CSS or JavaScript is served without gzip or Brotli compression. From the page's Lighthouse run.

How to fix. Turn on Brotli (or gzip) for text responses at the server or CDN.

Short cache lifetimes for static assets

OpportunityMedium priorityNeeds a Lighthouse runperformance.efficient_cache_policy

Static files are served with a short or missing Cache-Control lifetime, so repeat visitors download them again. From the page's Lighthouse run.

How to fix. Serve fingerprinted static assets with Cache-Control: max-age=31536000, immutable.

Multiple page redirects

OpportunityHigh priorityNeeds a Lighthouse runperformance.multiple_redirects

The page is reached through redirects, each adding a round trip before anything loads. From the page's Lighthouse run.

How to fix. Link directly to the final URL and collapse redirect chains into a single hop.

Server response over 600 ms

OpportunityHigh priorityNeeds a Lighthouse runperformance.server_response_over_600ms

The document took more than 600 ms to start arriving (time to first byte), which delays everything after it. From the page's Lighthouse run.

How to fix. Cache rendered pages at the server or CDN, speed up slow database or API calls, and check hosting capacity.

Missing preconnect to required origins

OpportunityLow priorityNeeds a Lighthouse runperformance.preconnect_required_origins

The page fetches critical resources from other origins without opening those connections early. From the page's Lighthouse run.

How to fix. Add <link rel="preconnect"> for the one or two third-party origins the first screen depends on.

Excessive DOM size

OpportunityMedium priorityNeeds a Lighthouse runperformance.excessive_dom_size

The page has a very large number of elements, which slows style calculation, layout and every interaction. From the page's Lighthouse run.

How to fix. Paginate or virtualise long lists, remove hidden markup, and flatten deeply nested wrappers.

Long JavaScript execution time

OpportunityMedium priorityNeeds a Lighthouse runperformance.javascript_execution_time

Parsing, compiling and running scripts takes a long time on a mid-range phone. From the page's Lighthouse run.

How to fix. Ship less JavaScript, defer non-critical scripts, and audit third-party tags.

Too much main-thread work

OpportunityMedium priorityNeeds a Lighthouse runperformance.main_thread_work

The browser's main thread is busy for a long time during load, so the page responds late to input. From the page's Lighthouse run.

How to fix. Reduce JavaScript, break long tasks up, and move heavy work off the main thread.

Large network payload

OpportunityMedium priorityNeeds a Lighthouse runperformance.large_network_payload

The page downloads a large total number of bytes, which is slow and costly on mobile connections. From the page's Lighthouse run.

How to fix. Compress and resize images, drop unused code and fonts, and lazy-load what is below the fold.

Largest Contentful Paint over 2.5 s

OpportunityHigh priorityNeeds a Lighthouse runperformance.lcp_over_2_5s

The main content element took more than 2.5 seconds to render in the lab run. Google's "good" threshold is 2.5 s. From the page's Lighthouse run.

How to fix. Speed up the server response, preload the LCP image, and remove render-blocking resources in front of it.

Cumulative Layout Shift over 0.1

OpportunityHigh priorityNeeds a Lighthouse runperformance.cls_over_0_1

Content moved around while the page loaded. Google's "good" threshold is 0.1. From the page's Lighthouse run.

How to fix. Reserve space for images, ads and embeds, and avoid inserting content above what is already on screen.

Interaction to Next Paint over 200 ms

OpportunityHigh priorityNeeds a Lighthouse runperformance.inp_over_200ms

Real visitors (Chrome UX Report field data) waited more than 200 ms for the page to respond to their input. Only reported when PSI returns field data for the page. From the page's Lighthouse run.

How to fix. Break up long JavaScript tasks, defer work that runs on input, and keep event handlers small.

First Contentful Paint over 1.8 s

OpportunityMedium priorityNeeds a Lighthouse runperformance.fcp_over_1_8s

The first text or image took more than 1.8 seconds to appear in the lab run. Google's "good" threshold is 1.8 s. From the page's Lighthouse run.

How to fix. Cut server response time and remove render-blocking CSS and scripts.

Total Blocking Time over 200 ms

OpportunityMedium priorityNeeds a Lighthouse runperformance.tbt_over_200ms

Long main-thread tasks blocked input for more than 200 ms in total during load. From the page's Lighthouse run.

How to fix. Split long tasks, defer non-critical JavaScript, and remove unused third-party scripts.

Speed Index over 3.4 s

OpportunityLow priorityNeeds a Lighthouse runperformance.speed_index_over_3_4s

The page's visible content filled in slowly in the lab run. Lighthouse's "good" threshold on mobile is 3.4 s. From the page's Lighthouse run.

How to fix. Improve the first render: server response, render-blocking resources and the size of what loads first.

robots.txt 2

Draft robots.txt would block this URL

OpportunityLow priorityrobots.would_block

The live robots.txt lets crawlers fetch this URL; the custom robots.txt you are testing would disallow it. Search engines would stop crawling it once the draft is published, and a page they cannot crawl can drop out of results.

How to fix. If the page should stay crawlable, change or remove the Disallow line shown in the evidence before publishing the draft. If blocking it is the intent, nothing to do.

Draft robots.txt would allow this URL

OpportunityLow priorityrobots.would_allow

The live robots.txt keeps crawlers out of this URL; the custom robots.txt you are testing would let them in. The crawl obeyed the live file, so the page itself was not fetched.

How to fix. If the URL should stay out of search, keep a matching Disallow line in the draft. If opening it up is the intent, publish the draft and crawl again to audit the page.

Custom extraction and search 2

Custom extractor found nothing

OpportunityLow priorityextraction.empty

One or more of your custom extractors returned no value on this page, while another extractor did. The page looks like the ones you wrote the extractors for, but this field is missing: a product without a price, an article without an author or date, a page without its social tags.

How to fix. Open the page and check whether the value is really absent or only marked up differently. If it is absent, add it to the page. If it is there, widen the extractor's selector, XPath or pattern so it matches this template too.

Custom search matched

WarningMedium prioritysearch.match

One of your custom searches found its text or pattern in this page's source. The evidence lists each search that matched and how many times. Searches are yours to define, so a match means whatever you set them up to catch: a staging host, an old tracking tag, a placeholder left in a template.

How to fix. Review the matches on this page. If the search is looking for something that should not ship, remove it from the page or its template and crawl again. If a match is expected here, narrow the search or exclude the page.

Search Console 6

Indexable page with no Search Console impressions

OpportunityLow prioritygscgsc.indexed_zero_impressions

The page can be indexed — it returns 200, is not noindex and is its own canonical — but Search Console recorded no impressions for it in the last 28 days. Google either has not indexed it or never shows it for any search.

How to fix. Inspect the URL in Search Console to see whether it is indexed. If it is not, link to it from relevant pages and add it to the sitemap. If it is indexed but never shown, the page may duplicate another or answer no query: improve its content, merge it, or noindex it.

Noindex page still getting clicks

IssueHigh prioritygscgsc.traffic_noindex

The page carries noindex, but Search Console recorded clicks to it in the last 28 days. Either the noindex is recent and the page is about to drop out of search, or it was added by mistake to a page people find through Google.

How to fix. Check whether the noindex is intended. If not, remove it from the meta robots tag or the X-Robots-Tag header. If it is, expect the traffic to stop and make sure an indexable page serves those searches.

Blocked for Google by robots.txt

IssueHigh prioritygsc_inspectiongsc.blocked_for_google

URL Inspection reports that Google's robots.txt check disallows this page, so Googlebot will not crawl it. This is what Google sees, which can differ from the robots.txt the crawler read.

How to fix. If the page should be in search, remove or narrow the Disallow rule that matches it, then re-test the URL in Search Console.

Google chose a different canonical

WarningMedium prioritygsc_inspectiongsc.google_canonical_differs

The canonical Google selected for this page is not the one the page declares (or the page itself when it declares none). Google is consolidating it into another URL; the evidence shows both.

How to fix. Make the signals agree: canonical tag, internal links, sitemap and redirects should all point at the URL you want indexed. If Google's choice is right, update your canonical.

AMP 6

Invalid AMP page

IssueHigh priorityampamp.invalid

The official AMP validator reports errors on this page. Invalid AMP is not served from the AMP cache and loses AMP-only search features. The evidence shows the error count and the first three messages.

How to fix. Fix each validator error (the AMP validator browser extension shows them in place), then re-crawl.

AMP page without a canonical

IssueHigh priorityamp.missing_canonical

An AMP page must carry <link rel="canonical"> pointing at its regular version, or at itself when it has none. Without it the AMP page is invalid.

How to fix. Add a canonical link to the regular (non-AMP) URL of this content.

AMP canonical does not point back

IssueMedium priorityamp.canonical_mismatch

This page links to an AMP version, but that AMP page's canonical names a different URL. The pair should point at each other: amphtml one way, canonical the other.

How to fix. Set the AMP page's canonical to this page's URL, or link this page to the AMP version that belongs to it.

Regular page linked as AMP

IssueMedium priorityamp.non_amp_linked_as_amp

This page's rel=amphtml link points at a URL that is not an AMP document (no <html amp> or <html ⚡>). Search engines ignore the link.

How to fix. Point rel=amphtml at the real AMP version, or remove the link.

AMP page not in the sitemap

OpportunityLow priorityamp.not_in_sitemap

This AMP page is not listed in the XML sitemap. AMP pages are found through their regular page's rel=amphtml link, so this is optional; listing them helps when you want them recrawled faster.

How to fix. If the AMP pages matter to you, add them to the sitemap, or a separate AMP sitemap.

AI prompts 2

AI suggests a different title

OpportunityLow priorityaiai.suggested_title_differs

The crawl's "suggest title and description" prompt proposed a title that differs from the page's current one. It is a suggestion, not a defect: compare the two and keep whichever describes the page better for searchers.

How to fix. Read the suggestion on the Extraction tab next to the current title, and adopt it, adapt it or ignore it.

Grammar or spelling issues found by AI

WarningMedium priorityaiai.grammar_issues

The crawl's grammar prompt listed mistakes in this page's visible text. The evidence shows how many and the first one; the full list is on the Extraction tab. AI can be wrong, so check each one.

How to fix. Correct the confirmed mistakes in the page copy, then re-crawl.