← All case studies · Education · Tutorial publisher · Audit & fixes

Auditing and fixing a 1,000-article publisher

A spreadsheet-tutorial publisher with more than 1,000 guides, free calculators and a paid template service was worried about lost traffic. I audited the whole site, traced the crawl errors, and shipped the server-side fixes myself.

The audit overview spreadsheet: 19 checks, one tab each
The audit overview spreadsheet: 19 checks, one tab each · client name hidden

01The business

Big library, shaky foundations

Industry
Education · Excel & Google Sheets tutorials
Market
Global · English
Site
WordPress, 1,000+ posts, calculators, paid template services
Scope
Full SEO audit, traffic-recovery investigation, hands-on technical fixes

With a library this large, one template problem repeats on every page, and one server problem can hide hundreds of URLs from Google. The brief was to find out exactly what was holding the site back, then fix what could be fixed without risking the live site.

02The audit

19 checks, every finding with a fix

Everything went into one shared spreadsheet: an overview of 19 checks, then a tab per check listing every affected URL, with a comment on how to fix it.

Audit overview spreadsheet with 19 checks and remarks, from domain versions to UI/UX
Audit overview · 19 checks, one tab per check · client name hidden
  • 1,023URLs with layout-shift and slow-loading issues
  • 197Page titles over 60 characters
  • 100Duplicate URLs from tracking parameters
  • 60 pages, including key category and service pages, had no meta description.
  • 48 images had no alt text and 8 were over 100 KB.
  • Two canonical tags pointed to the wrong version of the page, and the www version of the domain loaded a broken layout.
  • Embedded videos had no watch pages, and 37% of crawl requests were spent on font files.
  • No author profiles on posts, and a missing H1 on the About page: weak signals for trust (E-E-A-T).
Meta title tab: URLs with title length and pixel width, domain blurred
Meta title tab · 197 titles over the limit, each with length and pixel width

03Traffic recovery

Why Google could not reach hundreds of pages

A separate crawl looked for the cause of the traffic concern. 384 URLs returned no response at all and 157 returned "429 Too Many Requests": the server was turning crawlers away. There were no indexability problems and no sign of a spam or keyword hack.

  • 384URLs with no server response
  • 157URLs blocked with error 429
  • 0Hacks or indexing blocks found
Traffic recovery spreadsheet listing URLs with status code 0, connection refused
Traffic recovery sheet · every failing URL listed with its status code

04What I fixed

Six fixes, shipped in a week

1

One domain version

Redirect rules so every www and http version points to one canonical address.

2

Domain-level Search Console

A Domain property set up so every version and subdomain is tracked in one place.

3

Automatic WebP images

A small PHP snippet converts every new JPG or PNG upload to WebP, so pages stay light.

4

Rate limiting tuned

Firewall rules that throttle abusive traffic but never rate-limit verified Google crawlers.

5

Leaner analytics

A heavy analytics plugin removed and GA4 added directly, for speed and cleaner tracking.

6

Smarter robots.txt

A rule to stop crawlers wasting budget on font files.

05Handover

Clear about what is left

One redirect rule would not apply on this server through either the .htaccess file or a redirect plugin, so I handed it to the developer with the exact rule. The 429 errors were most likely triggered by a plugin; rather than disable plugins on a live site, I contained them with rate limiting and documented the next step.

Have a big site and something feels off?

I audit every template and server response, then fix what I can myself and hand over the rest with exact instructions.