Home Site audit Client reporting WordPress plugin Pricing Docs News Sign in

Every audit finding, and what to do about it

Every rule a crawl can report is listed below. The wording here is the wording the audit page and the WordPress plugin show, because all three read one table.

Every rule a crawl can report is listed below. The wording here is the wording the audit page and the WordPress plugin show, because all three read one table.

What a finding carries

A severity. Critical, high, medium, low or info. Severity is about how bad the consequence is if you do nothing.

A weight. How much money the fault stands in front of. This is what the health score uses, and it is deliberately not the same as severity: a missing meta title is weight 8 because it decides whether a result gets clicked, and an empty alt attribute with no decorative marker is weight 1 because almost nobody will ever notice.

A category. Technical, content, speed or WooCommerce. Each category is capped at 25 points of the score, so one systematic fault cannot hide everything else.

An effort. Quick, medium or longer. Written from the point of view of somebody doing it once, not somebody doing it for the four hundredth time.

Whether the plugin can close it. Some findings can be fixed from wp-admin on a paired WordPress site, and the catalogue says which.

How to work through a list

Sort by weight, not by count. Forty low-weight findings on one template are one fix. One broken canonical on your highest-earning page is a different morning.

Look for the cause, not the instances. Almost every long list is three or four systematic problems. A missing description on 40 pages is one template. Forty images with no alt text is usually one gallery block.

Read the URL before you act. This is the habit that matters most, and it is how we found that most of the problems on our own site were not problems. Fifteen open codes became four once we read which addresses each one pointed at.

Mute what is intentional. A contact page with 40 words on it is thin content by measurement and complete by intent. A muted finding does not count against the score, and the mute records the reason so the next person does not undo it.

What happens after you fix something

A finding resolves on the next crawl that no longer sees it, and the resolution is recorded with the crawl that did it. You can answer "did we fix that, and when" without remembering.

On a paired WordPress site, a fix applied through the plugin re-reads the page immediately and resolves the finding in seconds rather than at the next crawl. What the plugin reports is what it read back, not what it intended to write.

Where these rules come from

One definition, in docs/API-CONTRACT.md, read by three codebases: the crawler that grades your site from outside, the hub that grades ours, and the WordPress plugin that grades a page in the editor. Each of the three carries a test that fails its own build if its numbers drift from that file.

That is why a page scored in wp-admin and the same page scored by the crawler give the same verdict. Before it, a description written by our own content pack could run to 160 characters and then be reported as too long by our own audit.

What the rules will not do

Grade a page on markup it does not have. A rule that reads HTML runs only on an HTML response. Your sitemap, your feed and any JSON your site serves are fetched, recorded and left ungraded.

Report correct markup as a fault. An empty alt attribute is the right answer on a decorative image, and only a missing one is reported. An empty alt with no decorative marker is a separate low priority note, so a product photo with a blank alt still surfaces.

Grade a page on how it would look in a search result it asked to stay out of. A page carrying noindex is exempt from the meta description, canonical, title length, thin content and duplicate title rules. Everything else still applies: a noindex page can be slow, broken, uncached or orphaned, and you still want to know.

Count one page as several. Known parameter families collapse to one address, so a form reached through eight different links is one page rather than eight thin duplicates.

Crawl infrastructure it cannot act on. A CDN's own paths are never entered.

The catalogue

Technical rules

Page returns a server error

A 5xx means the page did not load at all. Google drops pages that keep failing, and a shopper who hits one usually leaves rather than retrying.

Fix Check the server error log for the exact URL, fix the fault, then request indexing for the page once it returns 200.

Redirect loop

The page can never load. Nothing indexes it and no visitor reaches it.

Fix Find the two rules pointing at each other and remove or repoint one of them.

A page in the sitemap asks not to be indexed

A page in the sitemap that tells Google not to index it is a contradiction Google resolves against you.

Fix Decide which is right. If the page should rank, remove noindex in the SEO plugin. If it should not, take it out of the sitemap.

A page redirects to a file that is not a page

A page redirecting to an image or a PDF loses every ranking it had.

Fix Find the redirect rule sending this URL to the file and delete it, then confirm the page serves its own HTML again.

Important page is set to noindex

A noindex tag tells Google to leave the page out of search entirely. On a category or product page that is usually an accident, and it removes the page from every result it used to hold.

Fix Remove the noindex robots meta tag or header, then request indexing.

Page has no title tag

The title is the headline in search results and the strongest single on-page signal. Without one Google writes its own, usually from the navigation.

Fix Write a title of roughly 50 to 60 characters that names the thing and the brand.

robots.txt blocks a page you want indexed

A blocked URL cannot be crawled, so Google cannot see the content, the canonical or the noindex on it.

Fix Remove the matching Disallow rule, or narrow it so it stops covering this path.

A category page does not serve

Category pages returning 404 or redirecting to a file tell Google those pages are gone.

Fix Save the permalink settings to rebuild the URL rules, then open the category page and confirm it returns 200. If a redirect plugin is sending it elsewhere, remove that rule.

The www address still serves the site

Two copies of the site compete with each other, and whatever ranking strength the pages have is split between them.

Fix Pick one address, with www or without, and 301 redirect the other to it for every path. Set the same address as the WordPress site URL.

The insecure address still serves the site

Two copies of the site compete with each other.

Fix Add a permanent 301 redirect from http to https for every path, either in the host control panel or at the CDN, and confirm http://yoursite/ answers 301.

The canonical points at another site

A canonical pointing at another host hands the ranking away.

Fix Change the canonical to this site. If the address is a staging domain, run a search and replace over the database for the old domain.

The page has no mobile viewport tag

Google indexes the mobile page, and a page with no viewport is unreadable on one.

Fix Add the viewport meta tag to the theme header so the page scales to the device width.

Canonical points at a different page

The page is telling Google to index something else instead, so it will not rank on its own.

Fix Point the canonical at this URL unless the page really is a duplicate.

A sitemap does not serve

Google cannot read the list of pages you want indexed.

Fix Open the sitemap URL in a browser and confirm what it returns. On WordPress, go to Settings then Permalinks and press Save with no other change, which rebuilds the URL rules, then reload the sitemap.

Internal link points at a missing page

A link from your own site to a 404 wastes the crawl budget Google spends on you and sends visitors to a dead end.

Fix Either repair the link to point at the live page, or redirect the old URL to its replacement with a 301.

A filter or sort URL can be indexed

Sort and filter URLs that index themselves flood the index with near-duplicates.

Fix Set the canonical on filtered and sorted URLs to the clean category URL, and add noindex to them in the SEO plugin.

A link points at a page that does not serve

A dead link wastes crawl budget and loses the visitor.

Fix Edit the linking page and point the link at the current URL, or redirect the old URL to its replacement.

Page loads an asset over plain HTTP

Browsers block or warn on insecure assets inside a secure page, which can break layout and scares shoppers off a checkout.

Fix Change the asset URL to https, or host the asset yourself.

The canonical points at a URL that does not serve the page

The canonical names a URL that does not serve the page.

Fix Point the canonical at the URL that returns 200, usually the page itself. Check the trailing slash and the http or https prefix match the live address.

Nothing on the site links to this page

A page nothing links to gets almost none of the site's ranking strength.

Fix Link to the page from a relevant category, menu or article. If it is not worth linking to, unpublish it.

The page has no structured data of the kind it needs

No structured data means no rich result.

Fix Switch on the matching schema type in the SEO plugin, then test the URL in the Google Rich Results Test.

The page has no canonical link

Without a canonical, Google picks which copy of a page to keep.

Fix Switch on canonical output in the SEO plugin so every page names itself, and confirm the tag appears in the page source.

The page takes more than one redirect to reach

Each hop loses a little ranking signal and a little speed.

Fix Replace the chain with one redirect straight from the first URL to the final one, and delete the rules in between.

Sitemap lists a URL that returns 404

A sitemap full of dead URLs lowers the trust Google places in the whole file, so real new pages get found slower.

Fix Regenerate the sitemap so it only lists live, indexable URLs.

No XML sitemap found

A sitemap is how a new or deep page gets found quickly. Without one, discovery depends entirely on internal links.

Fix Publish an XML sitemap, submit it in Search Console, and reference it from robots.txt.

The page declares the wrong country

An Australian store declaring United States English works against it in the only market it sells to.

Fix In WordPress, set Settings then General then Site Language to English (Australia), then confirm the page HTML carries lang="en-AU".

Search Console is not connected

Without Search Console nobody can see which searches show the site or which pages Google refuses to index.

Fix Verify the property in Google Search Console, submit the sitemap, then connect it in SolSEO under the site settings.

A language alternate does not point back

A one-way language link is ignored, so the alternates never group.

Fix Make every page in the set list every other page, including itself, with the same hreflang values on both sides.

The product has no rating in its structured data

Competitors show gold stars in the results page and take the click.

Fix Leave WooCommerce reviews switched on and email past buyers asking for one. Stars appear once real reviews exist.

The home page does not link to this page

Link weight flows to what the homepage points at, and these pages get none of it.

Fix Add the category to the main menu or to a category grid on the home page.

Content rules

The page has no search title

Google writes its own snippet, so the result reads as a raw page name with no reason to click.

Fix Write a title of 60 characters or fewer in the SEO plugin, leading with what the page sells and ending with the brand.

Theme demo content is published

Demo posts tell Google the site is partly about something it does not sell.

Fix Delete the demo posts and pages, then publish real articles about what you sell in their place.

The page has almost no text on it

A page with nothing on it cannot rank and cannot sell.

Fix Write a few paragraphs covering what the page is for and who it is for, or unpublish the page if it is not finished.

Several pages share one search title

Two pages claiming the same search result compete with each other.

Fix Open the listed URLs and give each one a title naming what only that page covers, or merge the pages if they cover the same thing.

Two or more pages share a title

Duplicate titles make the pages compete with each other, and the result Google shows is often not the one you would have chosen.

Fix Give each page its own title, usually by adding what makes it different: the variant, the category or the location.

Page duplicates another page on the site

Two pages with the same text compete for the same searches, and Google usually indexes only one of them.

Fix Merge the pages and redirect one, or rewrite one so the two answer different questions.

The page has no H1 heading

The heading is the strongest on-page statement of what a page is about.

Fix Add one H1 to the template carrying the page name, such as the category name at the top of a category page.

Images on the page have no alt text

Image search sends no traffic to pictures it cannot read, and alt text is what tells Google what the photo shows.

Fix Write alt text describing what each photo shows, starting with the featured images. Leave alt empty only on decorative graphics, and mark those with aria-hidden so this check knows you meant it.

Images have no alt text

Alt text is what a screen reader announces and what image search reads. On a product page it is also the only description of the photo.

Fix Describe what the image shows in a short phrase. Leave alt empty only for purely decorative images.

A leftover demo page is still published

Another thin page telling Google the site is unfinished.

Fix Delete the page. If something still links to it, redirect it to the nearest real page.

The page has no search description

Google writes the sentence under your link itself, usually out of the first text it finds on the page, so the result gives nobody a reason to click.

Fix Write a description of 120 to 155 characters in the SEO plugin, naming the product or the service and one reason to click.

The page has more than one H1 heading

Several competing headings blur what the page is about.

Fix Keep one H1 for the page name and change the others to H2.

Title is longer than the results page shows

Anything past roughly 60 characters is cut off, so the end of the title is written for nobody.

Fix Put the words that matter first and trim to about 60 characters.

Content score is below the pass mark

The score is the sum of the small things: the keyword in the heading, a description that is the right length, enough links, readable sentences. Each is minor and together they decide whether the page competes.

Fix Open the page in the editor and work through the failing checks. Most are a one-line fix.

The search title is too long to show in full

The title is cut mid word in the results page.

Fix Shorten the title to 60 characters or fewer, keeping the words people search for first.

Page has fewer than three internal links out

Internal links are how ranking strength moves around the site. A page that links nowhere is a dead end for both a reader and a crawler.

Fix Add links to related products, the parent category and any guide that supports the page.

Several pages share one search description

A repeated snippet tells Google the pages are interchangeable.

Fix Write a description per page. If the repetition comes from a site wide template in the SEO plugin, change the template to use the page title.

Images are marked as having nothing to describe

An empty alt is correct on a decoration and a lost search listing on a product photo, and from outside the page the two look the same.

Fix Open the listed images. If one is decorative, add aria-hidden="true" and this stops being reported. If it shows the product, describe it.

No focus keyword set for the page

Without a focus keyword there is nothing to score the page against, so the editor cannot tell you what is missing.

Fix Set the phrase this page should win, then check the heading, the first paragraph and the title against it.

The search description is too long to show in full

The offer and the call to action never reach the reader.

Fix Shorten the description to 155 characters or fewer. If the SEO plugin is falling back to the first paragraph, write a real one instead.

Woo rules

Product page has no image

A product with no photograph converts at a fraction of one that has, and it cannot appear in image or shopping results at all.

Fix Add at least one image, on a plain background, large enough to zoom.

Product page has no product structured data

Without product schema the result shows no price, no stock state and no stars, so it loses clicks to the ones that do.

Fix Output Product schema with name, image, price, currency, availability and any review data you hold.

An out-of-stock product stays indexed

An out-of-stock product page that stays indexed sends buyers to a dead end and Google to a page that cannot convert.

Fix Restock the item, or redirect the page to the nearest product in stock, or set it to noindex and take it out of the sitemap.

Out of stock product is still indexed and linked

A shopper who lands on a sold-out page usually leaves the site rather than browsing. At scale it drags the whole shop down.

Fix Keep the page, but show the nearest alternative above the fold, and stop featuring it in category listings while it is out.

Filter URLs multiply one category into thousands of pages

Filter URLs multiply one category into thousands of near-identical pages and eat the crawl budget.

Fix Disallow the filter parameters in robots.txt, add noindex and a canonical back to the clean category, and stop the theme linking to filter combinations.

Filter and sort URLs are indexable

Faceted URLs multiply: a shop with five filters can generate thousands of near-identical pages, and they eat the crawl budget the real pages need.

Fix Set a canonical to the clean category URL on filtered views, and block the parameter patterns that add nothing.

Structured data price differs from the page price

Google cross-checks the two. A mismatch gets the rich result removed and can flag the item in Merchant Center.

Fix Make the schema read the same price object the page renders, including any sale price.

Variable product does not describe its variations

A variable product with one flat price hides the range a shopper is searching on, and variant-level results are where the specific searches land.

Fix Emit a ProductGroup with a variant for each purchasable variation, each with its own SKU, price and availability.

Several products share one title

Two products fighting for the same search result means neither wins it.

Fix Merge the products into one with variations, or rename each so the title names the difference a buyer is searching for.

A variable product publishes one parent-level offer

A variable product with one parent-level offer or a parent-level availability hides every price and stock state Google could have shown.

Fix Switch the product schema to a ProductGroup with one variant per variation, each carrying its own price and availability, then test the URL in the Rich Results Test.

Product has no SKU

The SKU is how Merchant Center, feed tools and your own reporting identify the item. Without it a product is hard to match anywhere.

Fix Set a SKU on the product and on every variation.

Category page has no description

A category page with only a grid of products has no text to match a search, so it loses to competitors who wrote two paragraphs.

Fix Write a short introduction that says what the category covers and who it is for. Put it above or below the grid, not hidden behind a toggle.

A category page has no description

Category pages are what rank for the searches that name a whole range, and an empty one tells Google nothing about the range.

Fix Write two or three paragraphs in the category description covering what the range holds and who buys it, and make sure the theme prints it above the products.

Cart or checkout page is indexable

These pages have no search value and can expose session URLs. They also waste crawl budget on a shop with thousands of products.

Fix Set noindex on cart, checkout and account pages.

Product photos have no alt text

Product photos are where shoppers browse, and Google cannot read a photo without alt text.

Fix Write alt text on the featured image first, then the gallery, naming the product and what the shot shows.

Speed rules

Largest Contentful Paint is slow

LCP is how long the main thing on screen takes to appear. Past 2.5 seconds a measurable share of visitors leave before it does.

Fix Find what the largest element is, usually the hero image, and serve it smaller, in a modern format, and without waiting on a script.

The page takes too long to answer

A slow page is a ranking negative and a bounce cause, and Google crawls fewer of your pages per visit.

Fix Switch on object caching, cut the plugins that run on every request, and if the figure stays high on a cached page, move to a faster host plan.

Server takes too long to respond

Time to first byte is the floor under every other speed number. Nothing on the page can be fast if the server is slow to start.

Fix Add page caching, check the slowest database queries, and look at any plugin that runs on every request.

Full page caching is switched off

Every visit waits on PHP, Google crawls fewer pages per visit, and shoppers leave before the page paints.

Fix Turn on full page caching at the WordPress and CDN layer so repeat requests are served without running PHP. Leave cart, checkout and account pages excluded.

The page takes too long to answer

A slow page is a ranking negative and a bounce cause, and Google crawls fewer of your pages per visit.

Fix Switch on object caching, cut the plugins that run on every request, and if the figure stays high on a cached page, move to a faster host plan.

The site is slow to answer

Every visit that is not already cached waits on this, Google crawls fewer of your pages per visit, and a slow first response makes every other speed fix look smaller than it is.

Fix Switch on object caching, cut the plugins that run on every request, and if the figure stays high once caching is on, move to a faster host plan.

Layout shifts while the page loads

Content that jumps makes people tap the wrong thing, which on a product page means adding the wrong variant to the cart.

Fix Set explicit width and height on images and reserve space for anything that loads late, including banners and embeds.

Interaction to Next Paint is slow

INP measures how long the page takes to respond to a tap. A slow one feels broken even when everything eventually works.

Fix Cut the JavaScript that runs on interaction, and break long tasks so the main thread can answer the tap.

Images are far larger than they are displayed

A 3000 pixel photograph rendered at 400 pixels costs the visitor the whole download for none of the detail. On mobile data that is the page.

Fix Serve sized variants and a modern format, and let the browser pick with srcset.

Stylesheets or scripts block the first render

The browser will not paint anything until these finish, so every one of them is added directly to how long the page looks blank.

Fix Defer scripts that are not needed for the first screen, and inline only the small amount of CSS that is.