Every selling page on this site ends with the same dark band: a heading, a sentence, two buttons. We found it built by hand on sixty pages, with the button spacing declared in fifty-five separate places. One page had lost it.
September 7, 20267 minutes
What the free audit finds
Every website has four plain-text files no visitor ever sees: robots.txt, sitemap.xml, security.txt, and llms.txt. Search engines, security scanners, and AI agents read them on every visit.
September 6, 20268 minutes
For weeks the hero on three of our own pages vanished for a second and a half on iPhones, on a cold load only. Nothing reproduced it in a lab.
September 6, 20266 minutes
What the free audit finds
What layout shift is and why visitors read it as a broken site, the four causes behind nearly every case (images without dimensions, embeds without reserved space, fonts swapping, banners injected late), and the exact fixes, including where WordPress already knows every image's width and height.
September 2, 20267 minutes
What the free audit finds
Why a 2.6 MB hero reaches a phone that needs 33 KB, how srcset and sizes let the browser choose, when you actually need the picture element, what WebP buys you, and where themes quietly undo the work WordPress already does for you.
September 2, 20267 minutes
What the free audit finds
The media library is not a private folder, in WordPress or anywhere else. What that means for the drafts and packets that get uploaded to grab a link, why switching the API off is the wrong fix, and how to mark a file private without breaking anything.
September 2, 20265 minutes
Getting forms right
The last part of the series follows a submission after the visitor presses send: save a record before sending the email, keep the email route working, give the visitor a confirmation that says something, and notice the week your form goes quiet.
August 30, 20266 minutes
Getting forms right
CAPTCHAs cost your visitors time and barely slow down professional spammers. There's a quieter approach: a hidden honeypot field, a timer, a rate limit, and a content check that flags messages instead of blocking them. All of it runs on the server, and your visitors never see any of it.
August 30, 20265 minutes