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.