How to Prioritize Performance Fixes (Impact Matrix)
You have 20 Lighthouse failures and limited time. Use this impact-effort matrix to prioritize the fixes that will make the biggest difference.
BadPageSpeed Team· Performance EngineeringJuly 2, 20264 min read
After a Lighthouse audit, you're staring at 20+ failures. You can't fix them all at once. The key is knowing which fixes have the highest impact for the least effort.
The Impact-Effort Matrix
Plot each fix on a 2×2 matrix:
HIGH IMPACT
│
│ 🎯 DO FIRST ⚡ SCHEDULE
│ (Quick Wins) (Worth the effort)
│
────┼───────────────────────────────
│
│ 💤 DO IF IDLE ❌ SKIP
│ (Low priority) (Not worth it)
│
└──────────────────────── HIGH EFFORT
Prioritized Fix List
🎯 Tier 1: Do First (High Impact, Low Effort)
| Fix | Impact | Effort | Lighthouse Points |
|---|---|---|---|
| Compress/resize images | ⬆️⬆️⬆️ | 1-2 hours | +10-25 |
| Add image width/height | ⬆️⬆️ | 30 min | +5-15 (CLS) |
| Convert to WebP/AVIF | ⬆️⬆️⬆️ | 1-2 hours | +5-15 |
| Remove unused scripts | ⬆️⬆️⬆️ | 1 hour | +5-20 |
| Add font-display: swap | ⬆️⬆️ | 15 min | +3-8 |
| Enable Gzip/Brotli | ⬆️⬆️ | 30 min | +3-8 |
| Preload LCP image | ⬆️⬆️ | 15 min | +3-10 |
Total effort: ~5-7 hours Expected improvement: +30-80 Lighthouse points
⚡ Tier 2: Schedule (High Impact, Medium Effort)
| Fix | Impact | Effort | Lighthouse Points |
|---|---|---|---|
| Code splitting | ⬆️⬆️⬆️ | 4-8 hours | +10-20 |
| Lazy load below-fold images | ⬆️⬆️ | 2-3 hours | +5-10 |
| Inline critical CSS | ⬆️⬆️ | 2-4 hours | +5-10 |
| Defer third-party scripts | ⬆️⬆️ | 2-3 hours | +5-15 |
| Set caching headers | ⬆️⬆️ | 1-2 hours | +3-8 |
| Implement CDN | ⬆️⬆️ | 2-4 hours | +5-10 |
| Remove unused CSS | ⬆️ | 3-5 hours | +3-8 |
Total effort: ~16-30 hours Expected improvement: +15-40 additional points
💤 Tier 3: Do If Idle (Low Impact, Low Effort)
| Fix | Impact | Effort | Lighthouse Points |
|---|---|---|---|
| Optimize CSS selectors | ⬆️ | 1-2 hours | +1-3 |
| Add resource hints (preconnect) | ⬆️ | 30 min | +1-3 |
| Minify HTML | ⬆️ | 30 min | +1-2 |
| Reduce cookie size | ⬆️ | 1 hour | +1-2 |
| Enable HTTP/2 push | ⬆️ | 1 hour | +1-3 |
❌ Tier 4: Skip (Low Impact, High Effort)
| Fix | Why Skip |
|---|---|
| Rewrite in a new framework | Massive effort for uncertain gains |
| Custom image CDN | Buy a solution instead |
| Build custom lazy loading | Use native loading="lazy" |
| Implement service worker (for performance) | Complex, marginal gains for most sites |
| Micro-optimize CSS animations | Diminishing returns |
Decision Flowchart
When evaluating each fix:
- Will this fix my worst metric? (Focus on whatever's red first)
- How many users does this affect? (Fix homepage before admin panel)
- Can I do this in under 2 hours? (If yes, do it now)
- Is there a simpler alternative? (Buy vs build, native vs library)
- Will this compound with other fixes? (CDN + compression = multiplied gains)
Metric-Specific Priorities
If LCP Is Your Worst Metric
- Preload LCP image/resource
- Optimize LCP image (format, size)
- Eliminate render-blocking CSS
- Reduce TTFB (caching, CDN)
If CLS Is Your Worst Metric
- Add width/height to all images
- Reserve space for ads/embeds
- Preload fonts (prevent FOUT)
- Avoid inserting content above viewport
If INP/TBT Is Your Worst Metric
- Remove unused JavaScript
- Code split heavy bundles
- Defer third-party scripts
- Break up long tasks
- Move work to Web Workers
Track Your Fix Impact
After each fix, re-run Lighthouse to measure improvement. BadPageSpeed tracks your scores over time automatically.
Ready to stop wasting ad spend?
Track your landing page performance, monitor Core Web Vitals, and calculate exactly how much slow pages cost you.
Start Free — No Credit Card