SEO

Technical SEO audit: the 15 checks that matter

A technical audit is only worth something if it says what to fix first. Here are the fifteen checks that decide whether Google can crawl, understand and show your pages, with how to verify and fix each one.

  • technical SEO
  • site audit
  • crawling
  • Core Web Vitals

In short

A technical SEO audit first checks that your pages are reachable (robots.txt, HTTP status, noindex, JavaScript rendering), then that they do not compete with each other (canonical, duplicates), that they describe themselves well (title, description, H1, language, viewport, alt, JSON-LD) and that they are linked and fast (internal links, sitemaps, Core Web Vitals). Fix the errors affecting the most pages first, then crawl again to confirm.

On this page
  1. How to read this audit
  2. Access and indexing
  3. 1. robots.txt and crawler access
  4. 2. HTTP status
  5. 3. The noindex directive
  6. 4. JavaScript rendering
  7. 5. Canonical URL
  8. 6. Duplicate content
  9. Page tags and content
  10. 7. The title tag
  11. 8. Meta description
  12. 9. The H1 heading
  13. 10. Language and hreflang
  14. 11. The viewport tag
  15. 12. Image alt text
  16. Structure, data and performance
  17. 13. JSON-LD structured data
  18. 14. Internal links, orphan pages and sitemaps
  19. 15. Core Web Vitals
  20. Summary table
  21. How the health score is computed
  22. What the crawl does not check page by page
  23. Checking by hand
  24. Prioritise, fix, verify
  25. Frequently asked questions

How to read this audit

Each check below says why it matters, how to verify it and how to fix it, then gives the code the NeoRank Engine shows when it detects it. The crawler identifies itself as NeoRankBot/1.0 (+https://neorank.ai/bot), honours your robots.txt and its Crawl-delay, and reads the served HTML without executing JavaScript. A quick crawl reads 12 pages; details are in the audit documentation.

The fifteen checks form three families, and the order matters: a page crawlers cannot read makes the other thirteen checks pointless for it. So start with access and indexing, move on to tags, then to structure and performance.

Access and indexing

1. robots.txt and crawler access

An overly broad Disallow rule stops whole sections from being crawled. Google reminds us that robots.txt manages crawling, not indexing. Read the file rule by rule and test your key paths. Check the firewall or CDN too: a crawler blocked at network level never reaches robots.txt. This check is read at site level: the Robots directives view reads your robots.txt for eight AI crawlers, with no per-page code (AI crawler access).

2. HTTP status

A page answering 404 or 500 will not be indexed, and Google handles each family of status codes differently. Fix the link, restore the page or redirect to its equivalent. Code: HTTP_ERROR, for any status of 400 or above.

3. The noindex directive

A noindex left behind by a template or a staging environment silently removes pages from the index. Check every flagged page: is it intended? Code: NOINDEX, a notice, because the directive is sometimes deliberate.

4. JavaScript rendering

Google can execute JavaScript, but later and with limits; a crawler that does not execute JavaScript, such as the NeoRank Engine, sees only the served HTML. If the main content appears only after execution, move to server rendering or static generation. Code: CLIENT_RENDERED.

5. Canonical URL

The canonical names the version to index when several URLs show the same content. Every indexable page should declare one, absolute, pointing to itself or to the original. Codes: CANONICAL_MISSING, CANONICAL_INVALID (unreadable) and CANONICAL_CROSS_ORIGIN (pointing to another domain, to confirm).

6. Duplicate content

Two identical pages compete for the same query and split their links. Merge them, differentiate them or declare a canonical. Common sources: URL parameters, http / https or www and non-www variants, printable versions. Code: CONTENT_EXACT_DUPLICATE, which flags content identical to another crawled page.

Page tags and content

7. The title tag

The title is the main source of the title link in results. Make it unique and descriptive, naming the topic before the brand. Codes: TITLE_MISSING, TITLE_LENGTH and TITLE_DUPLICATE. The 15 to 65 character range is NeoRank's threshold, not a Google rule.

8. Meta description

Google may use it for the snippet when it describes the page better than the body text. Write one per page, specific to it. Codes: META_DESCRIPTION_MISSING and META_DESCRIPTION_LENGTH, outside 50 to 170 characters — again a NeoRank threshold.

9. The H1 heading

The H1 announces the topic to the reader and structures the page. One clear H1 per page is enough. Codes: H1_MISSING (warning) and H1_MULTIPLE (notice).

10. Language and hreflang

The lang attribute declares the language; hreflang annotations connect translated versions, each pointing to the others and to itself. Codes: HTML_LANG_MISSING, HREFLANG_INVALID and HREFLANG_DUPLICATE.

11. The viewport tag

Google indexes the mobile version first. Without a viewport tag, the page renders like a shrunken desktop screen. Code: VIEWPORT_MISSING.

12. Image alt text

Alt text serves accessibility and helps Google understand the image. Describe meaningful images; leave the alt empty for decorative ones. Code: IMAGE_ALT_MISSING.

Structure, data and performance

13. JSON-LD structured data

Structured data describes the entity and the content of the page. A block that does not parse is ignored. Code: JSON_LD_INVALID, a syntax check, not a Schema.org conformance check. The full method is in our JSON-LD guide.

Google discovers pages through crawlable links and sitemaps. The NeoRank Engine follows the sitemaps declared in robots.txt and /sitemap.xml, up to five files. Codes: INTERNAL_LINKS_MISSING (a page with no crawlable internal link) and ORPHAN_PAGE_CANDIDATE (in the sitemap, with no internal link observed pointing to it).

15. Core Web Vitals

Core Web Vitals measure loading, responsiveness and visual stability. NeoRank reads them through PageSpeed Insights: real-user CrUX data when Google has it, otherwise a Lighthouse lab measurement, with the URL and the date. When capture is not enabled, the card shows “Not measured”, never an invented score (Core Web Vitals in NeoRank).

Summary table

CheckNeoRank codesSeverity
HTTP statusHTTP_ERRORError
NoindexNOINDEXNotice
JavaScript renderingCLIENT_RENDEREDWarning
CanonicalCANONICAL_MISSING, CANONICAL_INVALID, CANONICAL_CROSS_ORIGINWarning, error, warning
DuplicatesCONTENT_EXACT_DUPLICATEWarning
TitleTITLE_MISSING, TITLE_LENGTH, TITLE_DUPLICATEError, warning
Meta descriptionMETA_DESCRIPTION_MISSING, META_DESCRIPTION_LENGTHWarning, notice
H1H1_MISSING, H1_MULTIPLEWarning, notice
Language and hreflangHTML_LANG_MISSING, HREFLANG_INVALID, HREFLANG_DUPLICATENotice, warning
ViewportVIEWPORT_MISSINGWarning
Image altIMAGE_ALT_MISSINGWarning
JSON-LDJSON_LD_INVALIDError
Internal linkingINTERNAL_LINKS_MISSING, ORPHAN_PAGE_CANDIDATENotice

How the health score is computed

Each page starts at 100 and loses 15 points per error, 8 per warning and 3 per notice, never going below 0. The site's score is the rounded average of its pages: 80 and above is healthy, 50 to 79 needs watching, under 50 is critical (score details).

What the crawl does not check page by page

To be precise: redirect chains, broken internal links, click depth and per-page blocking of an AI crawler are not crawl findings. For redirects and missing pages, Search Console's page indexing report shows the pages Google did not index and the reason it gives; click depth needs a tool that measures it. A tool that claimed to measure everything without doing so would have you fix imaginary problems and ignore real ones.

Checking by hand

  • Served HTML: view the page source (not the browser inspector) to see what a crawler without JavaScript receives.
  • HTML rendered by Google: Search Console's URL Inspection tool shows the page as Googlebot processed it.
  • JSON-LD: Google's Rich Results Test and the Schema.org validator, alongside NeoRank's syntax check.
  • Performance: PageSpeed Insights for one specific URL, telling real-user data apart from lab measurements.

Prioritise, fix, verify

  1. Sort by severity, then by number of pages affected: a template error is fixed once for hundreds of URLs.
  2. Open the issue's resolution: why, where, before / after and the list of pages.
  3. Fix and publish.
  4. Run the crawl again (paid plans): the issue disappears when the new crawl no longer finds it.

Frequently asked questions

How often should I run a technical SEO audit?
After every release that touches templates, navigation or rendering, and at least once a month on a site that publishes regularly. A one-off audit goes stale quickly.
Do I need to fix every notice?
No. A notice flags something to check, such as a deliberate noindex or several H1s on a long page. Deal with errors first, then with the warnings that affect many pages.
Why is my site flagged as client-rendered?
The NeoRank Engine reads the served HTML without executing JavaScript. If the main content is not in it, crawlers that do not execute JavaScript see an empty page; server rendering fixes the problem.
Are the title and description lengths Google rules?
No. Google sets no official length. The 15 to 65 and 50 to 170 character ranges are NeoRank thresholds for spotting titles and descriptions that are probably truncated or too thin.
Does a health score of 100 guarantee good rankings?
No. The score measures the absence of detected technical defects, not the quality or relevance of the content. It removes obstacles to crawling and understanding; rankings then depend on what your pages actually give their readers.

See where your site stands

Run the free analysis to see what the NeoRank Engine finds on your site.

Start the free analysis

Sources

  1. Introduction to robots.txt
  2. How HTTP status codes, and network and DNS errors affect Google Search
  3. Block Search indexing with noindex
  4. Understand JavaScript SEO basics
  5. How to specify a canonical URL with rel=canonical and other methods
  6. Influencing your title links in search results
  7. Control your snippets in search results
  8. Tell Google about localized versions of your page
  9. Mobile site and mobile-first indexing best practices
  10. Google Images SEO best practices
  11. Introduction to structured data markup in Google Search
  12. Link best practices for Google
  13. Learn about sitemaps
  14. Web Vitals
  15. About PageSpeed Insights

Share