Website audits · Data · Dental lab

A read-only audit that measured every page, click and redirect.

Built for Carlos Ceramics Dental Lab before its website was rebuilt. Nothing on the live site was changed to make it.

88addresses found and followed
4screen widths per page
114changes listed for the rebuild
37pages in the before-and-after PDF

Websites, at work.

See the websites services

Built
A set of scripts that crawl, photograph, press, measure and report on a website
Stack
PythonNode.jsHeadless ChromeLighthousePillow
Timeline
October 2 to 4, 2026
Status
Delivered. Reused to measure the rebuild
Scale
Every page of the site, plus 8 other labs
The problem

"Update the website" is not a brief.

A sticky note reading

The lab's owner wanted the website updated. Before anyone could say what to change, someone had to know what was there: how many pages, which old addresses still mattered, how heavy each page was on a phone, what every button did.

Guessing would have meant a redesign that looked better and broke things. So the first job was a measurement, done without touching the live site.

What we built

Fourteen small scripts in four stages.

Each script does one job and writes its results to a file. The report is built only from those files, so every number in it can be traced to a measurement.

FIND1discover.pySitemap and publiccontent API2http_check.pyWhat the server answers,every redirectLOOK3capture.mjsChrome at desktop,tablet, phone, 1100 px4interact.mjsPresses every menu, tab,pop-up4bstates.mjsJavaScript off, reducedmotion onMEASURE5analyze +linkcheckTotals and every link6media.pyReal size, shown size,weight7LighthouseGoogle's speed testPROTECT AND WRITE7bscrub.pyMasks a key the old siteexposed7cwalkthrough.pyCuts pages into sections,marks problems8build_report.pyWrites the reportThe live siteRead only. Never types orsubmitsCompetitorsThe same capture for 8other labsHTML reportEvery page, click andnumber, in one documentBefore and after PDF37 pages for the owner
How it fits together. Find, look, measure, then write. The live site is only ever read. One step exists purely to protect it: the old site exposed a Maps key in its own pages, and the audit masks it before anything is saved.
1. Find

Every address

The sitemap and the site's public content API list the pages. Then every address is requested to record what the server answers and where each redirect lands.

2. Look

Every page, every width

Chrome loads each page at desktop, tablet, phone and 1100 px, scrolls it and stitches full-length pictures. Then it presses every menu, tab and pop-up, and loads again with JavaScript off and reduced motion on.

3. Measure

Weight, links, speed

Totals per page, every link checked, every picture's real size against the size it is shown at, and Google's Lighthouse test.

4. Write

One report

The 13 menu pages are cut into sections with problems marked, and the HTML report and PDF are built from the measured files plus written notes.

Guardrails

What the audit will never do.

It behaves like a careful visitor, not a tester with a hammer.

NeverWhy
Type into a fieldNo test data lands in the business's inbox or database
Submit a formNo fake enquiries, no emails sent on the owner's behalf
Follow a link off the siteThe audit stays on the site it was asked to measure
Change anythingThe live site keeps working exactly as before
Keep a secret it findsAn exposed key is masked before any file is saved
What it found

The baseline the rebuild had to beat.

MeasuredOld siteWhat it meant
Addresses in use88Every one needs a home on the new site, or links break
Home page weight8.1 MBSlow on a phone, on any connection
Home page requests134Too many separate files for one page
Phone speed score19 of 100Google's own test, on a phone profile
FormsSome asked for patient detailsA lab website has no reason to hold them
A key in the page sourceExposedMasked in the audit, flagged for the owner
How it runs

One command after the captures.

A grid of web page screenshots at four widths, desktop to phone, laid out like contact prints on a light table.
  • Captures firstThe desktop and phone captures run, then one finishing script runs everything else in order: stitching, close-ups, phone clicks, scripts off, other widths, Lighthouse, totals, links, pictures and the report.
  • Check the connectionA full pass downloads several hundred megabytes from the site, so it is not run on a phone hotspot.
  • Notes kept apart from numbersWritten judgements live in their own files. Everything measured comes from the data folder, so a rerun updates the numbers without touching the opinions.
  • Run again afterwardsThe same tools measured the rebuilt site, which is how the before-and-after figures were made.
What changed

A rebuild with a list, not a hunch.

The audit's 114 changes became the rebuild's checklist. By October 6, 71 were done. The redirect map came straight from its address list, and the new site measured with the same tools went from a phone speed score of 19 to 92. See the rebuild.

Illustration: a website laid out page by page and measured, with a checklist of changes beside it
What we'd reuse

The same check-up works on any website.

Nothing in the scripts is about dental labs. Point them at a restaurant's site before a menu redesign, a law firm's before a move to a new platform, an online store's before a theme change, a nonprofit's before a donation drive. You get the same report, about your site.

Do you know what your site weighs on a phone?

Send us the address. On a free call we will tell you what a full measurement would cover.