Site audit

A technical SEO audit that renders JavaScript.

A technical SEO audit crawls your website like a search engine and reports what stops pages from being found, indexed or shown well. Serpel runs 94 checks in 18 categories, renders JavaScript when a page needs it and measures Core Web Vitals. Every issue says why it matters and how to fix it.

  • 94 checks
  • JavaScript rendering
  • Core Web Vitals
  • Crawl comparison

What the site audit covers

  • An issue catalogue

    11 error, 43 warning and 40 notice checks. Each one comes with the reason it matters and a fix.

  • JavaScript rendering

    Pages that arrive almost empty are rendered in a headless browser and audited as visitors see them. Choose automatic, always or never per project.

  • Core Web Vitals

    LCP, INP and CLS for the start page and key pages on mobile and desktop, with lab and field values.

  • Crawl comparison

    Compare two crawls to see new, fixed and changed issues, and the score before and after.

  • AI search checks

    Your robots.txt is tested against 13 AI crawlers, and Serpel looks for an llms.txt file.

  • A polite crawler

    SerpelBot respects robots.txt and crawl-delay, keeps its request rate low and identifies itself with its own user agent.

What does a technical SEO audit check?

A technical SEO audit looks at the parts of a site that search engines and AI crawlers depend on: whether pages respond, whether they can be indexed, whether titles and headings are in place, how pages link to each other and how fast they load. Serpel’s audit is a crawl of your own domain that starts at your start URL and follows internal links up to the page limit you set, within the maximum of your plan.

People also call this a website SEO checker. The difference to a one-page checker is scope: Serpel covers the whole site and reports issues by type, with the number of affected URLs.

GroupChecksWhat it finds
Availability and redirects10Client and server errors, unreachable URLs, soft 404s, redirect loops and redirect chains.
Links10Broken internal and external links, orphan pages and pages buried deep in the site.
Titles, descriptions and headings12Missing, duplicate, too long or too short titles and descriptions, and missing or repeated H1s.
Indexing and crawling16noindex, canonical conflicts, robots.txt and sitemap problems, and blocked search crawlers.
Content and images7Duplicate and thin content, a missing page language, missing alt text and image dimensions.
HTTPS, mobile and speed9Missing HTTPS, mixed content, a missing viewport tag, slow responses and oversized pages.
Structured data, social and international13Invalid structured data, missing Open Graph and Twitter cards, and hreflang errors.
JavaScript rendering8Content, links or meta tags that only exist after JavaScript runs, and pages that fail to render.
Core Web Vitals7LCP, INP and CLS values that need improvement or are poor.
AI search2Blocked AI search crawlers and a missing llms.txt.

15 of the checks are heuristics, such as title length or thin content. They are marked “heuristic” in the results, so you can tell a rule of thumb from a confirmed error.

How does Serpel audit JavaScript websites?

Serpel first fetches the HTML your server delivers. If a page arrives almost empty but shows traces of a JavaScript framework, it renders the page in a headless browser and audits the result. It compares the delivered HTML with the rendered page, so it can flag content, links, titles, canonicals and robots directives that only exist after JavaScript runs.

  • Automatic for empty pages: the default. Only pages delivered almost empty are rendered.
  • Always render: every page is rendered.
  • Never render: only the delivered HTML is audited.

Rendering is capped per crawl, and a page that can’t be rendered is reported as such, so the audit never claims more than it measured. Change the mode in the project settings or with serpel projects update <project-id> --render-mode always.

How does Serpel measure Core Web Vitals?

At the end of a crawl, Serpel measures the start page and key pages on mobile and desktop with Google PageSpeed Insights and rates LCP, INP and CLS against Google’s thresholds.

MetricGoodPoor
Largest Contentful Paint (LCP)Up to 2,500 msAbove 4,000 ms
Interaction to Next Paint (INP)Up to 200 msAbove 500 ms
Cumulative Layout Shift (CLS)Up to 0.1Above 0.25

You get lab values from a test run and, where Google has enough data, field values from real users over the last 28 days. INP exists only as a field value.

How big a crawl can you run, and what does it cost?

PlanMaximum pages per crawl
Free250
Starter1,000
Pro1,000

New projects crawl up to 100 pages by default, and you can raise the limit up to your plan’s maximum, for example with serpel projects update <project-id> --max-pages 500. A crawl costs 1 credit per 20 pages, so 100 pages cost 5 credits and 1,000 pages cost 50 credits, or €0.50. Reading the results is free, and crawls can also run weekly on a schedule. See pricing for plans and credit packs.

What happens after the audit?

  • Score and issues: a score from 0 to 100, plus issues grouped by severity with the affected URLs, the reason and the fix.
  • Tasks: create a task from any issue with serpel tasks create --project <project-id> --issue title_missing. The next crawl rechecks it.
  • Comparison: serpel crawl compare lists new, fixed and changed issues between two crawls.
  • Exports and API: download issues as CSV or JSON, or read them through the REST API.
  • Search data: read the audit next to Search Console and Bing data in the same project.

Run your first audit

  1. Create a project

    Add your domain. Serpel uses it as the start URL for the crawl.

    Terminal
    serpel projects create --domain example.com --country US --language en
  2. Start a crawl

    The crawl runs in the background. With --wait, the command ends with a summary of pages and issues.

    Terminal
    serpel crawl start --project <project-id> --wait
  3. Read the errors first

    List the issues of the latest crawl, starting with errors.

    Terminal
    serpel audit issues --project <project-id> --severity error
  4. Fix, crawl again and compare

    After your fixes, run another crawl and compare it with the previous one.

    Terminal
    serpel crawl compare --project <project-id>

Frequently asked questions

Is Serpel a website SEO checker?

Yes. Create a project for your domain and start a crawl. You get a score from 0 to 100, issues grouped by severity and a fix for each. The crawl covers the whole site up to the page limit you set, within your plan’s maximum, not a single page.

Does the audit work for single-page apps and server-rendered sites?

Yes. Pages delivered almost empty are rendered in a headless browser, and Serpel reports differences between the delivered HTML and the rendered page. Server-rendered pages are audited from their HTML.

How is the audit score calculated?

The score starts at 100 and loses points for each issue type, weighted by severity and by the share of HTML pages affected. Site-wide issues count in full. Compare two crawls to see how a fix changed the score.

Does the crawler respect robots.txt?

Yes. SerpelBot follows robots.txt and crawl-delay, keeps its request rate low and identifies itself with its own user agent. The crawler is described on the Serpel crawler page.

Updated 10 Oct 2026

Keep reading