Before you change anything
Treat each audit finding as a hypothesis. A tool reports what it saw at one moment from one location; a cookie wall, a bot filter or a temporary server error can produce a finding that visitors and Google never see.
- Confirm the issue on the live page in a normal browser and in the page source.
- Fix the template or CMS setting that produces the issue, not each page by hand.
- Change one thing at a time and write down the date, so you can link later changes in Search Console to a cause.
- When you test on a staging site, make sure its
noindexand robots.txt rules do not travel to production with the next deploy.
1. Missing or duplicated title
Google's title link guidelines ask for a title in the <title> element on every page, descriptive and concise, and explain that Google uses several sources to build the title link. A page without a usable title often gets a heading or a menu label as its title link.
| Step | What to do |
|---|---|
| Observed symptom | Results show only the site name, "Home" or a navigation label; the audit lists several pages with the same title. |
| How to confirm | Search the page source (not the DevTools element tree) for <title> and check whether a plugin prints a second one. The meta tag checker shows the title as fetched. |
| Safe fix | Write one unique title per page that names the subject first and the brand last, for example Emergency boiler repair in Leeds | Example Heating. Set it in the CMS SEO field, not by editing theme files per page. |
| Re-test | Fetch the page again and confirm exactly one <title>. The title link in Google changes only after a recrawl. |
| Caveats | Google may still choose another title link if it finds yours unhelpful. Keyword lists and the same boilerplate on every page make that more likely. |
2. Wrong canonical
Google's canonicalization guide lists redirects and rel="canonical" as strong signals and sitemap inclusion as a weak one. A wrong canonical is therefore a strong signal in the wrong direction.
| Step | What to do |
|---|---|
| Observed symptom | Every page declares the homepage as canonical, or https://example.com/shoes/ declares https://staging.example.com/shoes/. |
| How to confirm | Run the canonical & hreflang checker on the URL, then compare the user-declared and Google-selected canonical in Search Console URL Inspection. |
| Safe fix | Give each indexable page a self-referencing canonical with an absolute URL; Google recommends absolute over relative paths. Point true duplicates, such as tracking-parameter versions, to the main URL. Fix it in the template. |
| Re-test | Check that the canonical target returns 200, is indexable and does not redirect. |
| Caveats | Google advises against using robots.txt or the URL removal tool for canonicalization, and against declaring one canonical in the sitemap and another in the tag. |
3. Crawling disallowed in robots.txt
robots.txt controls crawling, not indexing. Google's robots.txt introduction says a blocked URL can still appear in results, without a description, when other pages link to it.
| Step | What to do |
|---|---|
| Observed symptom | The Page indexing report lists URL blocked by robots.txt or Indexed, though blocked by robots.txt, or a whole section disappears after a relaunch. |
| How to confirm | Open https://example.com/robots.txt and look for Disallow: / or a rule that matches the affected paths. Inspect one affected URL in Search Console. |
| Safe fix | Remove the rule for pages you want in Google. To keep a page out of Google, allow crawling and use noindex instead: Google explains that a crawler blocked by robots.txt never sees the noindex rule. |
| Re-test | Run a live test in URL Inspection, then follow the Page indexing report over the next weeks. |
| Caveats | Keep deliberate rules for cart, checkout or internal search results. The common accident is a staging Disallow: / deployed to production. |
4. Internal link to a 404 page
A 404 for a page you removed on purpose is normal. Google does not index URLs that return 4xx codes and stops using previously indexed ones over time. The issue is your own menu, footer or articles still sending visitors there.
| Step | What to do |
|---|---|
| Observed symptom | The audit lists internal links to https://example.com/old-offer/ that return 404. |
| How to confirm | Check the status code with curl -I https://example.com/old-offer/ or the DevTools Network tab, and find every page that links there. |
| Safe fix | Update the links to the correct live URL. Add a 301 redirect only when a real replacement page exists; sending every missing URL to the homepage helps nobody. |
| Re-test | Fetch the pages that contained the link and confirm the new target returns 200. |
| Caveats | Do not answer a missing page with status 200 and a "not found" message. Search Console reports pages whose content suggests an error as soft 404s. |
5. Unnecessary redirect chain
Each hop adds a request before the page starts loading. Google's crawlers follow up to 10 redirect hops by default, and the same Google documentation notes that Google's inspection tools do not follow redirects, so URL Inspection must be run on the final URL.
| Step | What to do |
|---|---|
| Observed symptom | http://example.com/page → https://example.com/page → https://www.example.com/page → https://www.example.com/page/. |
| How to confirm | curl -sIL http://example.com/page | grep -i "^location\|^HTTP" prints every hop and its status code. |
| Safe fix | Send every old variant to the final URL in one permanent (301 or 308) redirect. Update internal links, canonicals and the sitemap to the final URL so no redirect is needed at all. |
| Re-test | Run the same command: one redirect at most, then 200. |
| Caveats | Keep redirect rules in one place, either the server or the CMS, to avoid loops between them. |
6. Missing H1
This is mainly a clarity and accessibility fix. Google's SEO starter guide says headings in semantic order help screen readers, but that from a Google Search perspective it does not matter if they are out of order.
| Step | What to do |
|---|---|
| Observed symptom | No <h1> on the page, or several, often because the theme wraps the logo in an H1 on every page. |
| How to confirm | Search the page source for <h1 and compare it with the visible main heading. |
| Safe fix | Mark up the visible main heading as the single H1 and keep the logo as a plain link or image. Change it in the template for that page type. |
| Re-test | Fetch again: one H1 that matches the page topic and the title. |
| Caveats | Never add a hidden H1 just to satisfy an audit. Do not expect ranking changes from heading tags alone. |
7. Two pages with the same search intent
Two pages written for the same search, such as /seo-services/ and /seo-agency/, split internal links and leave Google to choose between them. This is a content decision, not a tag problem.
| Step | What to do |
|---|---|
| Observed symptom | Both URLs get impressions for the same query and neither ranks well, or the ranking URL keeps switching. |
| How to confirm | In the Search Console Performance report, filter by the query and open the Pages tab. Then compare the two pages: same audience, same offer, same questions? |
| Safe fix | Merge the stronger content into one page, 301-redirect the other URL to it and update internal links. If each page has a distinct job, rewrite them so each answers a different question and link them to each other. |
| Re-test | After a recrawl, the query should show one main URL in the Pages tab. |
| Caveats | A canonical tag is meant for duplicate or very similar pages. For two different pages with the same goal, merging is the cleaner fix. |
8. Slow LCP caused by a heavy hero image
web.dev's LCP optimization guide splits LCP into four subparts: time to first byte, resource load delay, resource load duration and element render delay. A heavy hero image usually shows up as a long load delay or load duration.
| Step | What to do |
|---|---|
| Observed symptom | PageSpeed shows mobile LCP above 2.5 s and names the hero image or slider as the LCP element. |
| How to confirm | In PageSpeed Insights, open the Largest Contentful Paint element diagnostic and read the breakdown. Compare the file size with the displayed size. |
| Safe fix | Serve the hero at its displayed width with srcset, in WebP or AVIF, do not lazy-load it and add fetchpriority="high". Replace a multi-slide slider with one image. |
| Re-test | Run PageSpeed several times on mobile and compare the LCP breakdown, not only the score. Real-user data in the Core Web Vitals report follows more slowly. |
| Caveats | A smaller image does not help when the long subpart is server response time or a render-blocking script. Fix the subpart that is actually long. |
9. Non-reciprocal hreflang
Google's hreflang guidelines require each language version to list itself and all other versions, and state that if two pages do not both point to each other, the tags are ignored.
| Step | What to do |
|---|---|
| Observed symptom | https://example.com/en/pricing/ lists https://example.com/de/preise/ as its German version, but the German page lists nothing or points to the German homepage. |
| How to confirm | Run the canonical & hreflang checker. It fetches the alternates and reports missing return references. Confirm the alternate URLs are absolute and return 200. |
| Safe fix | Generate hreflang from one shared mapping in the template, so every version outputs the same complete set including a self-reference, with full https:// URLs. |
| Re-test | Run the checker on every language version, not only the one you edited. |
| Caveats | List each version under the URL it declares as canonical. An alternate that redirects or canonicalizes elsewhere sends mixed signals. |
10. Incorrect structured data
Google's structured data guidelines say not to mark up content that is not visible to readers, and correct markup only makes a page eligible for a rich result; Google decides whether to show one.
| Step | What to do |
|---|---|
| Observed symptom | Invalid JSON-LD, missing required properties, or markup for reviews, prices or questions the page does not show. |
| How to confirm | Test the URL in the Rich Results Test and the Schema Markup Validator, then compare each marked-up value with the visible page. |
| Safe fix | Fill the markup from the same CMS fields that render the page, so they cannot drift apart, and remove markup for content that is not on the page. The structured data guide has a tested example. |
| Re-test | Run the Rich Results Test on the live URL, then watch the matching report in Search Console. |
| Caveats | Misleading markup can earn a structured data manual action. Google says such an action affects eligibility for rich results, not how the page ranks in web search. |
Which fixes to do first
Order the work by the damage an issue can do. First anything that keeps pages out of the index: robots.txt rules, stray noindex, wrong canonicals, redirect loops. Then broken internal links and pages competing for the same intent. Then speed. Titles, headings and structured data come last unless they are broken on every page.
Many findings come from templates, so the same issue repeats on every page of that type. Check one page of each type (home, service or category, product or article, contact) before you assume a finding is isolated. The free analysis checks one URL; the paid Site Report checks up to 20 key pages of one site.
Frequently asked questions
Should I fix every issue an SEO audit reports?
No. Fix what blocks indexing or hurts visitors first. Some findings do not apply to your page, such as a missing hreflang on a site with one language.
Can fixing audit issues hurt my rankings?
Yes, when a fix is wrong. A canonical pointing to the wrong page, a robots.txt rule copied from staging or a redirect loop can take pages out of Google. Change one thing at a time and re-test.
How do I know a fix worked?
Re-test the page with the same tool, then confirm with Google's own tools: URL Inspection for indexing and canonical, the Rich Results Test for structured data and the Core Web Vitals report for real-user speed.
Do 404 errors hurt my site?
Not by themselves. Google drops URLs that return 404 over time. Broken internal links waste your visitors' clicks, so fix the links rather than every old URL.
Free SEO tools
Check your own site in about a minute
The free analysis measures the points from this guide on your URL and shows what to fix first.