Blog
Hands-on articles on making websites faster, safer and easier to find, written for people who build and run them.

How Google Picks a Canonical URL (and Why It Ignores Yours)
rel=canonical is a hint, not an order. How Google weighs redirects, canonicals, sitemaps and links, and how to fix 'Google chose different canonical'.

HSTS Preload Without Regrets: A Staged Rollout Plan
HSTS preload is easy to submit and slow to undo. A staged rollout plan with max-age steps, a subdomain inventory and the gotchas that break real domains.

INP in Practice: Finding Slow Interactions and Fixing Them
A hands-on guide to Interaction to Next Paint: how the metric works, how to find the exact interaction that hurts, and the fixes that actually move it.

Why Lighthouse and Your Real Users Disagree About Speed
Lab scores and field data measure different things. Why Lighthouse and CrUX disagree, which to trust for what, and how to use both without chasing ghosts.

Site Migration Without Losing Traffic: Mapping 3,900 Old URLs
How we replaced a legacy site without breaking its URLs: building the inventory, 301 or 410 per pattern, testing every old URL, and planning rollback.

Shipping a Strict CSP Without Breaking Your Site
Why allowlist CSPs fail, how a nonce-based strict policy with strict-dynamic works, and a step-by-step Report-Only rollout that keeps production running.