SEO audits
All 44 SEO audit checks Bluprent runs
Last checked
Bluprent crawls a client's site and runs 44 checks across four categories, then turns the findings into a 0 to 100 score you can track month over month. This page is the whole list, copied from the audit's own check registry, with the fix Bluprent gives for each. It also publishes the scoring formula, which most audit tools keep to themselves.
Use it as a checklist on any site, with or without Bluprent. If you run care plans, the care-plan guide shows where a monthly audit fits. To fix what the audit finds with an AI assistant, read the free guide.
How the score is calculated
Each check that fires becomes one issue, no matter how many pages it affects. An issue has a severity, and each severity costs its category a fixed number of points:
| Severity | Points taken off the category |
|---|---|
| Critical | 15 |
| Warning | 5 |
| Info | 0 |
A category starts at 100 and cannot go below 0. Technical, Content and Mobile & metadata work this way. Performance is the average PageSpeed Insights performance score across the pages tested. The overall score is a weighted average:
| Category | Weight | Checks |
|---|---|---|
| Technical | 30% | 21 |
| Content | 30% | 14 |
| Performance | 25% | 5 |
| Mobile & metadata | 15% | 4 |
If a category has no score, for example performance when no PageSpeed result came back, the remaining weights are rescaled so the missing category does not drag the total down. Worked example: Technical 75, Content 100, Performance 80, Mobile & metadata 100 gives (75 × 0.30 + 100 × 0.30 + 80 × 0.25 + 100 × 0.15) = 87.5, which rounds to 88.
Two things follow. One critical issue costs as much as three warnings. And fixing one check on 40 pages moves the score exactly as much as fixing it on one page, so fix by severity, not by page count.
How the crawl works
The crawler starts at the homepage and follows internal links, seeded by the site's sitemap. It audits up to 50 pages by default and never more than 200. It follows robots.txt. Details, and how to block it, are on the crawler page.
Technical (21)
| Check | The fix |
|---|---|
| Broken internal links | Fix or remove links pointing at pages that return a 404. |
| Broken outbound links | Update or remove outbound links that no longer resolve. |
| Redirect chains longer than 1 hop | Point links directly at the final destination URL to avoid multi-hop redirect chains. |
| Redirect loops | Fix the redirect rules so each URL resolves to real content — looping URLs are completely inaccessible to both users and search engines. |
| Pages returning server errors | Investigate the server-side failure — 5xx pages are dropped from search indexes if they persist. |
| Pages buried deep in the site structure | Link important pages from higher-level pages — deeply buried content is crawled less often and ranks worse. |
| Dead-end pages | Add navigation or contextual links — dead-end pages strand both visitors and crawlers. |
| Conflicting canonical declarations | Make the HTML <link rel="canonical"> tag and the HTTP Link header agree (or remove one) — conflicting signals let search engines pick either. |
| Orphan pages | Link orphaned pages from relevant site navigation or content — pages reachable only via the sitemap get far less crawl attention and no internal link equity. |
| Internal links point at redirecting URLs | Update internal links to point directly at the destination URL instead of through a redirect. |
| Mixed content on HTTPS pages | Update image/script/stylesheet URLs to use https:// so browsers don't block or warn about mixed content. |
| Missing canonical tag | Add a self-referencing <link rel="canonical"> tag to each page. |
| Canonical tag points elsewhere unexpectedly | Verify the canonical target is correct — an unintended canonical can remove a page from search results. |
| robots.txt not found | Add a robots.txt file, even a permissive one, to give crawlers explicit guidance and to declare your sitemap location. |
| robots.txt failed to parse | Review robots.txt for syntax errors. |
| sitemap.xml not found | Generate a sitemap.xml and reference it from robots.txt to help search engines discover all pages. |
| sitemap.xml failed to parse | Validate the sitemap's XML structure. |
| Sitemap references broken URLs | Remove or fix sitemap entries that no longer resolve successfully. |
| HTTP does not redirect to HTTPS | Add a server-level redirect from http:// to https:// for every page. |
| www / non-www canonicalization inconsistent | Pick one host (www or apex) and 301-redirect the other to it consistently. |
| 404 page does not return a 404 status | Configure the server/CMS to return a real 404 status code for nonexistent pages. |
Content (14)
| Check | The fix |
|---|---|
| Missing title tag | Add a unique, descriptive <title> tag (30-60 characters) to every page. |
| Title tag length outside 30-60 characters | Rewrite the title to fall between 30 and 60 characters so it doesn't get truncated in search results. |
| Duplicate title tags | Give each page a unique title that reflects its specific content. |
| Missing meta description | Add a unique meta description (70-160 characters) summarizing the page for search results. |
| Meta description length outside 70-160 characters | Rewrite the meta description to fall between 70 and 160 characters. |
| Duplicate meta descriptions | Write a unique meta description for each page. |
| Missing H1 heading | Add exactly one H1 heading that describes the page's main topic. |
| Multiple H1 headings | Use a single H1 per page; demote additional headings to H2 or lower. |
| Heading levels skip a level | Keep heading levels sequential (H1 -> H2 -> H3) so the document outline stays logical for assistive tech and search engines. |
| Low image alt text coverage | Add descriptive alt text to every meaningful image; use alt="" only for purely decorative images. |
| Thin content | Expand the page with substantive, unique content, or noindex it if it's not meant to rank. |
| No structured data detected | Add relevant JSON-LD structured data (e.g. Organization, Article, Product) to help search engines understand the content. |
| Invalid structured data | Fix the JSON syntax in the page's <script type="application/ld+json"> block(s). |
| Duplicate page content | Consolidate duplicate pages, or mark the copies with a canonical tag pointing at the primary version. |
Performance (5)
| Check | The fix |
|---|---|
| Slow server response | Investigate server response time (caching, database queries, hosting resources) — slow first bytes drag down every other performance metric. |
| Low PageSpeed performance score | Review the PageSpeed Insights report for specific opportunities (image sizing, render-blocking resources, etc.). |
| Poor Largest Contentful Paint (LCP) | Optimize the largest above-the-fold element (usually a hero image) — compress it, preload it, and remove render-blocking resources. |
| Poor Cumulative Layout Shift (CLS) | Reserve space for images/ads/embeds and avoid injecting content above existing content after load. |
| Poor Interaction to Next Paint (INP) | Break up long JavaScript tasks and reduce main-thread work triggered by user interactions. |
Mobile & metadata (4)
| Check | The fix |
|---|---|
| Pages flagged noindex | Confirm this is intentional — noindexed pages are excluded from search results entirely. |
| Favicon missing | Add a favicon so the site displays a brand icon in browser tabs and bookmarks. |
| Open Graph tags missing on homepage | Add og:title, og:description, og:image, and og:url so shared links preview correctly on social platforms. |
| Twitter card tags missing on homepage | Add twitter:card and related tags so links preview correctly when shared on X/Twitter. |
Running it on every client site
Bluprent re-runs the audit on a schedule, keeps the history, and turns any issue into a task with one click. Monthly audits are on every plan, including Free; weekly schedules start on Studio. See pricing for the limits, or read how a website maintenance CRM ties audits to the client record.