Can Google even get through?
What a crawler cannot reach, render and take in cannot rank. Crawling, indexing and loading behaviour are checked, meaning the layer that decides whether your pages are in the race at all.
Service · SEO Audit
An SEO audit systematically checks the technical setup, content, links and structure of your website for what blocks rankings and organic traffic in Google search. At the end there is no list of errors, but an action list sorted by impact and effort.
Request an SEO audit Run the business case →
In search since 2016 · technical SEO at scale · projects up to around 20 million pages
Avg. Google position in the core market for a B2C comparison portal, at around 190,000 clicks (+10 %)
Case study · 6 monthsThe trigger is rarely technical curiosity, but a business problem: organic traffic is falling, a competitor is pulling ahead, a relaunch has cost rankings, or the content budget no longer works. An audit separates cause from symptom, instead of patching at the surface.
The yardstick here is not the curve of a visibility tool, but the pipeline. A ranking on a page nobody needs brings nothing. A ranking on your most important offer page changes revenue. That is why I sort every metric along this line. Anyone who also wants to measure the AI layer will find it in the GEO audit.
Each field answers its own question, and none wins a ranking on its own.
What a crawler cannot reach, render and take in cannot rank. Crawling, indexing and loading behaviour are checked, meaning the layer that decides whether your pages are in the race at all.
Ranking follows search intent. A how-to article does not rank on a purchase query, and two of your own pages on the same query weaken each other. I check whether page type and intent match and where content overlaps.
Two levels, internal and external. Internal linking is the lever in your hand: it steers where your link equity lands. The external backlink profile shows which signals carry weight and which are more of a burden.
Structure is a ranking and a conversion factor at once. Click depth, URL logic and category structure decide whether Google and your buyers find the right page.
Google does not see your design, but the floor plan of your website. If one step of that floor plan breaks, the chain ends before the ranking.
| Check point | Question | If it is missing |
|---|---|---|
| Crawling | Does the Googlebot reach your pages, or does it get lost in parameter URLs, filters and crawl traps? Does robots.txt block the wrong thing? | Pages are never seen |
| Indexing | Do noindex, wrong canonicals or soft 404s prevent inclusion in the index? | Pages are seen, but not included |
| Status codes, crawl budget | How many 404 chains, redirect chains and 5xx are in the logfile, and how much crawl budget do they burn? | Google wastes time on dead pages |
| XML sitemap | Is the sitemap complete, up to date and free of non-indexable URLs? | Google finds new pages late or not at all |
| Rendering | Is the content in the server HTML or does it only appear after JavaScript? | What renders late is assessed late or incompletely |
| Core Web Vitals | Are LCP, INP and CLS green in the field data, not just in the lab value? | A precondition, but a drag |
| Mobile | Is there parity between the mobile and desktop version for mobile-first indexing? | Google assesses the weaker version |
No single point wins a ranking on its own. But each one can prevent it.
For every important query, exactly one URL should be responsible. If two of your own pages compete for the same keyword, they share the signals and neither ranks well.
I go through four axes. Search intent: does the page type match the intent behind the query? Keyword mapping and cannibalization: one URL per query, otherwise your own pages weaken each other. How to resolve that cleanly is described in my article on keyword research and SEO strategy.
On top of that, duplicate content from variant URLs, parameters and copied manufacturer texts, and the meta elements: title and description are not a direct ranking factor, but they decide the click in the search result. Above all sits the view of the content inventory: outdated articles, pages without an impression, pages with impressions but no click. From this comes the decision whether a page is updated, merged or switched off.
Five steps, two working weeks.
The first step decides all the others: without a defined business goal and named money pages there is no prioritization. A ranking on the wrong page is a nice number, not revenue. That is why we first define which pages earn your money, and only then sort.
Business goal, money pages, competitors and access. Without a goal there is no prioritization.
Screaming Frog, Search Console, backlink data and, where available, the server logfiles.
Technical, content, links and information architecture, each field checked on its own.
The findings move into the prioritization matrix, sorted by impact and effort.
Results presentation and action plan that your team or an agency can pick up and continue directly.
Not a PDF that gathers dust on the drive after three weeks, but three concrete artifacts:
Every finding sorted by impact and effort. A wrongly set canonical is done this week, backlink building runs over months. You see at a glance what comes first.
Every technical finding with the location, the affected set of URLs and the check step, concrete enough that your developers get started without follow-up questions. That is the difference from an automated SEO report.
Rankings of your money pages, impressions, clicks and index coverage as a zero measurement. From here on, every change is measurable instead of a feeling, and every number holds up in the boardroom.
Proven · Anonymized client example
An excerpt from a real SEO audit, client anonymized. 25 pages, 9 chapters: competition, 2,500 content-gap keywords in 20 clusters, a crawl over around 206 URLs, and from that a technical to-do with 32 tasks across 212 URLs, each with location, solution and status. Concrete enough for a team to work through, not generalities.
REAL CLIENT PROJECT · ANONYMIZED · AS OF 2025
These four pages are an excerpt. The full ticket backlog lists each of the 32 tasks with affected URLs, solution and status – workable without follow-up questions.
Exactly the table from the backlog above, written out here: 32 tasks across 212 URLs, sorted by priority, each with affectedness, solution and status. This is how I hand it over to your developers.
EXCERPT · CLIENT ANONYMIZED · 212 URLS · AS OF 2025
| # | Task | URLs | Solution |
|---|---|---|---|
| 01 | X-Frame-Options header missing | 205 · 96.7 % | Set the header server-side (SAMEORIGIN), protects against clickjacking. |
| 02 | HSTS header missing | 205 · 96.7 % | Set Strict-Transport-Security with max-age, prevents man-in-the-middle. |
| 03 | Title over 561 px↳ Client request: pause this month, titles are being rewritten. | 53 · 25.98 % | Shorten titles to under 60 characters, keyword to the front. |
| 04 | H1 missing | 53 · 25.98 % | Add one unique H1 with the target keyword per page. |
| 05 | Duplicate H1 | 46 · 21.8 % | Word the H1 uniquely per page, page-specific keywords. |
| 06 | Meta description missing↳ Client request: pause this month. | 42 · 19.9 % | Write a description of 150–160 characters with keyword and CTA. |
| # | Task | URLs | Solution |
|---|---|---|---|
| 07 | Duplicate meta descriptions | 37 · 17.5 % | A unique description with a USP per page. |
| 08 | Duplicate titles | 35 · 16.6 % | Pattern "Keyword | Addition | Brand" per page. |
| 09 | Alt attributes missing | 33 · 15.6 % | Give images descriptive alt text. |
| 10 | Canonical issues | 31 · 14.7 % | Set a correct canonical to the 200 URL. |
| 11 | H2 missing | 30 · 14.2 % | Add logical H2s with secondary keywords. |
| 12 | Duplicate H2 | 25 · 11.8 % | Vary H2s per section. |
| 13 | H3 missing | 24 · 11.4 % | Add H3s for detail sections and long-tail. |
| 14 | Meta description too short | 22 · 10.4 % | Extend to 150–160 characters. |
| 15 | Duplicate H3 | 20 · 9.5 % | Make H3s uniquely context-specific. |
| 16 | H4 missing | 19 · 9.0 % | Add H4s for specifications. |
| 17 | Duplicate H4 | 18 · 8.5 % | Word H4s page-specifically. |
| 18 | H5 missing | 17 · 8.1 % | Add H5s for very detailed sections. |
| 19 | Duplicate H5 | 16 · 7.6 % | Make H5s unique per page. |
| 22 | Titles too short | 13 · 6.2 % | Extend to 50–60 characters, add the brand. |
| 23 | Empty H1 | 10 · 4.7 % | Insert a meaningful H1 with the target keyword. |
| 24 | H1 only whitespace | 9 · 4.3 % | Replace the blank H1, check the HTML for hidden characters. |
| # | Task | URLs | Solution |
|---|---|---|---|
| 25 | Meta description over 985 px | 5 · 2.5 % | Shorten to 150–160 characters, key part to the front. |
| 26 | Unsafe cross-origin links | 12 · 5.7 % | Add rel="noopener" with target="_blank". |
| 29 | H1 not in first position | 1 · 0.5 % | Set the H1 as the first heading, check the hierarchy. |
| 30 | H2 out of order | 5 · 2.5 % | Correct the H2 order after the H1. |
| 31 | Internal redirects | 7 · 3.3 % | Point internal links directly to the target URL. |
| 32 | Non-indexable with search data | 7 · 3.3 % | Check robots.txt and meta tags, decide on indexability. |
Five checks you do yourself in an hour, with nothing but Google Search Console and a free crawl. That hour finds the obvious errors. What it does not deliver is root-cause attribution across several factors and prioritization by business value. That is exactly where the work begins for which you bring someone in.
Both measure visibility, but in different spaces. Only around 12 % of the URLs cited by ChatGPT and Perplexity rank in Google's top 10 (Ahrefs), while around 94 % of AI Overview answers hang on the top 20 of classic search (seoClarity).
| SEO audit | GEO audit | |
|---|---|---|
| Checks | the results list on Google | the generated AI answer |
| Basis of measurement | rankings, impressions, clicks | citation rate and citation share per engine |
| Data source | Search Console, crawl, logfile | prompt measurement across five engines |
| Answers | Why do we not rank? | Why are we not cited? |
Anyone mainly missing from the AI Overviews starts with the SEO audit. Anyone missing from ChatGPT, Perplexity or Claude needs the prompt measurement from the GEO audit.
A fixed package, fixed terms that depend on the size of the website and the number of markets, which I quote you on request. If you want to estimate the business lever up front, the business case calculates three scenarios in two minutes at eullrich.com/en/business-case.
Two working weeks from access and kickoff. The timeframe is fixed and is agreed bindingly at the kickoff.
Driven by events rather than the calendar: before a relaunch, after a major Google update, when traffic breaks, or when a competitor overtakes you. A full audit every quarter is a waste for most websites.
You will find the obvious errors with Google Search Console and a free crawl in an hour, the five steps are above. The limit is at root-cause attribution and prioritization by business value, when several factors interact.
An automated SEO check lists symptoms: missing meta tags, slow pages, duplicate titles. That is a useful first look. But it does not tell you which three of the 100 items move your revenue and in what order. That attribution is the actual work of an audit.
Screaming Frog for the crawl, Google Search Console for the real user data, Ahrefs or Sistrix for backlinks and competition, plus logfiles and Python for large inventories. The tools deliver the data, the diagnosis comes from me.
An SEO audit checks the ranking factors of the classic results list on Google. A GEO audit checks whether your brand is mentioned and cited in the generated AI answer. With chat engines the coupling between the two is weak (around 12 percent), with Google AI Overview strong (around 94 percent).
No. An SEO audit concerns organic search. Paid ads and social channels follow a different logic and do not belong in this scope.
Write to me about what you observe. I will get back to you with the terms for your website scope and your markets.