How to Audit Your Website Performance
You know that feeling when your own website takes forever to load? You click around, wait for things to render, and wonder if your users are having the same frustrating experience. Spoiler: they are. And they're probably leaving.
A performance audit sounds intimidating, but it doesn't have to be. You don't need fancy enterprise tools or a dedicated DevOps team. What you need is a systematic approach and about an hour of focused work.
Start With the Basics: Lighthouse
Open Chrome DevTools, go to the Lighthouse tab, and run an audit. It's free, it's built into your browser, and it gives you a solid starting point. Don't obsess over getting a perfect 100 score. Focus on the specific recommendations it gives you.
The most common issues you'll see:
- Images that aren't optimized or properly sized
- JavaScript that blocks rendering
- No caching headers set
- Third-party scripts slowing everything down
Each of these has a real impact on how fast your site feels. Lighthouse tells you what's wrong and often suggests exactly how to fix it.
Check Your Core Web Vitals
Google's Core Web Vitals have become the standard metrics everyone talks about. There are three that matter most:
Largest Contentful Paint (LCP) measures how long it takes for the main content to appear. If your hero image or headline takes 4 seconds to show up, people are gone before they see anything.
First Input Delay (FID) tracks how responsive your page is when someone tries to interact with it. Nothing's worse than clicking a button and waiting for something to happen.
Cumulative Layout Shift (CLS) catches those annoying jumps where the page moves around while loading. You've definitely rage-clicked the wrong thing because an ad loaded and pushed everything down.
The Network Tab Is Your Friend
DevTools' Network tab shows you exactly what's happening when your page loads. Sort by size and you'll quickly spot the biggest files. Sort by time and you'll see what's taking forever.
Look for these red flags:
- Images over 500KB (they should almost never be this big)
- JavaScript bundles over 200KB
- Requests to slow third-party domains
- Chain dependencies where one file has to load before another can start
I once found a client's site loading a 3MB PNG logo. Converting it to WebP brought it down to 80KB. That single change cut their load time by 2 seconds.
Don't Forget Mobile
Test on actual mobile devices, not just Chrome's device emulator. The emulator doesn't simulate slow CPUs or flaky cellular connections. Your site might feel fine on your MacBook Pro but crawl on a mid-range Android phone.
If you don't have test devices, at least use Lighthouse's mobile preset and throttle your connection in DevTools to simulate 3G. You'll be horrified at how different the experience is.
Real User Monitoring vs Lab Data
Lighthouse gives you lab data, what happens in controlled conditions. But real users are on different devices, different networks, different locations. Their experience varies wildly.
Tools like Google's PageSpeed Insights show field data from actual Chrome users. This tells you what real people are experiencing. Sometimes your lab scores look great but real users are struggling because of things you can't simulate.
Quick Wins That Almost Always Help
After dozens of audits, I've found these fixes work for almost every site:
Enable compression. Make sure your server sends gzipped or Brotli-compressed files. This is often a single config line but cuts file sizes by 70-80%.
Set proper cache headers. Static assets like images and fonts should be cached for a long time. Your HTML should probably not be. Get this right and returning visitors load instantly.
Lazy load images below the fold. There's no reason to load images people haven't scrolled to yet. Modern browsers support loading="lazy" natively.
Defer non-critical JavaScript. Your analytics and chat widgets don't need to load before your main content appears. Move them to the end or use async and defer attributes.
Set Up Ongoing Monitoring
An audit is a snapshot. Performance changes over time as you add features, update dependencies, and bring in new third-party tools. Set up automated checks to catch regressions before your users do.
Even running Lighthouse in CI on every deploy is better than nothing. Tools like SpeedCurve or Calibre can track performance over time and alert you when things degrade.
Prioritize Based on Impact
You can't fix everything at once. Prioritize based on what affects the most users. If 70% of your traffic is mobile, fix mobile issues first. If your checkout page is slow and people are abandoning carts, that's where you focus.
Performance optimization is never done. But a focused audit gives you a roadmap for what to tackle next. Start with the biggest problems, measure the impact, and keep iterating. Your users will notice the difference even if they can't articulate why.