Sitebulb crawls a site from my own machine and returns something other than a table: a ranked report. Every finding arrives with a severity label, the share of URLs affected, and an explanation already written for you. That ranking is why my audit crawler changed hands, and it is the one place where the tool has to be resisted.
On an online shop of 1,700 URLs, the loudest finding of the crawl affected 100% of the pages. It was wrong on all 1,700.
1. The problem it solves for me
A new engagement always opens on the same client question: where do we start. A raw crawl table does not answer that. It lines up columns, and the sorting is left entirely to me at the exact moment I know the site least well.
Sitebulb pre-processes over 300 checks and returns each one with its label, from Critical down to Low, and the percentage of URLs affected. The vendor sets this out on its prioritised hints page. I open a site I have never seen and I have the shape of the job in 15 lines. No raw table gives me that.
2. What I actually pull out of it
On that shop of 1,700 URLs, measurement had dropped out twice: once on the shopping events, and again the day the tag itself was pulled from the site. I ran a crawl to map the pages with no measurement code, using browser rendering and with third-party resource blocking switched off, so that the tag container would actually load.
The finding came back on 100% of the URLs. A live check on three templates, the home page, a category and a product page: measurement fired on each one, with a collection request going out on every page load.
The vendor spells out why. This check looks for the Google Analytics code independently of Google Tag Manager: the crawler will not fire the tag container to go and find it, and the documentation for that check states outright that this may lead to false positives. The same page files the check under ‘Insight’, which is neither an issue nor an opportunity.
Two rules came out of it, and they hold on any site whose tags run through a container. For coverage, I read the tag container check, not the analytics one. To know whether measurement really fires, I look at what the browser sends, not at what the server wrote.
3. What I never ask it for
To decide what goes into the deliverable. A severity label is a property of the type of finding, never of the site: nothing in it knows which pages earn the money. A duplicate title across 40 pages with no impressions at all, and the same duplicate title across the three pages carrying most of the clicks, arrive with the same label. A crawl that trips 60 checks is not an action plan.
To reassure me. An empty list is not a green light. When a counter reports affected URLs and the matching list comes back empty, it is the filter that is wrong, not the site that is clean. In the same way, a score of zero means ‘not measured in this crawl’, and a check missing from a report may mean its whole category never ran.
To settle what belongs to the client. Merging product pages, unpublishing a section, rebuilding a site structure: that is editorial and commercial ground. I supply the finding and the scale in countable volume; the call stays with whoever sells.
4. What I run alongside it
The cross-check that makes the report worth paying for does not come from the crawl. I take the URLs behind the top findings and match them against the pages that earn the clicks and impressions: what I ask Search Console for sets the order, the crawl only sets the contents of the list. A page that performs and sits on noindex, or five clicks deep, jumps straight to the top.
The other crawler stayed on the machine for a different job: Screaming Frog pulls one precise column across every URL of a site, with no ranking and no commentary. Neither replaces the other.
The crawl is the first move on my SEO engagements, and the tag coverage check feeds straight into my analytics work. On what browser-side measurement now misses, I have written what GA4 can no longer see and the GA4 migration guide for marketers.
5. What it costs at my scale
The first cost is a rhythm. An audit crawl is only worth anything next to the previous one: a site under monthly retainer needs a crawl before every report, plus one after every notable release. The most profitable crawl of all is the one that follows a deployment, because it catches the noindex that appeared, the canonical that turned, and the titles a template emptied, before Google takes any of them seriously.
The second cost is the sly one. The vendor states that every explanation is written to be lifted straight into your own report: one sentence for the finding, one for what it may cause. That is comfortable, and it is a trap. An audit made of those sentences is one the client can produce alone for the price of a licence. What I sell starts where the report stops.
A ranking is not a priority
The crawl turns a site into a list, and the list arrives already sorted. It then has to be sorted a second time, in revenue order. Between the most severe finding and the most expensive one lies the gap no label measures.
Do you know what broke at your last release?
I crawl the site, compare it with the previous crawl, and hand back what changed, sorted by what it costs. That is the first move on my SEO engagements and my analytics work.
Request a free audit