SEO Self-Fix Checklist

shape1
shape2
shape3
shape4
shape5
shape6
shape7
shape8

Your website is slow.
Here's how to fix it yourself — for free.

Most sites fail Google's Core Web Vitals for three reasons: a bloated hero image, unoptimised photos, and JavaScript nobody removed after the last redesign. All three are fixable without an agency — in about two hours.

This checklist walks you through the highest-impact fixes, ranked easiest to hardest. Free tools included after every section.

Fix LCP in 15 minCut image weight by 80%Remove dead JavaScript

PageSpeed Target

80+

achievable with just these 3 fixes

Section 1: Largest Contentful Paint (LCP)

LCP is how long it takes the biggest visible element on your page to load. Google wants it under 2.5 seconds — most sites fail this on the hero image alone.

🎯 Target

Under 2.5s

LCP load time

⚠️ Why it matters

Google uses LCP as a direct ranking signal. If LCP creeps past 4 seconds, bounce rates climb sharply — and rankings drop with them.

Compress your hero image

Most sites have a hero image that's 2MB when it should be 200KB. Run it through squoosh.app or tinypng.com — drag in, quality to ~75%, download. You won't see the difference; the browser will.

Add loading="eager" to hero

Counter-intuitive but correct — the hero is the one image you want loaded immediately. Find the hero <img> tag and add the attribute. This skips lazy-load behaviour on your most important asset.

<img src="hero.jpg" loading="eager" />

Preload the hero image

Add one line to your <head> and the browser starts downloading the hero before it even finishes parsing the page. Free speed-up, two lines of HTML.

<link rel="preload" as="image" href="/hero.jpg" />

Switch JPG/PNG → WebP

WebP gives 60–80% smaller files at the same visual quality. Squoosh exports WebP directly. On WordPress, 'Converter for Media' plugin does it across your whole library automatically.

🔧

Free tool: Google PageSpeed Insights — paste your URL, scroll to the LCP section. Google names the exact element causing your slow LCP.

Section 2: Image Optimisation

Most sites are 70–90% image weight. The HTML, CSS, and JavaScript are tiny compared to a few uncompressed photos. This is the easiest weight to cut.

500KB

Target total image weight per page

Compress every homepage image

Run every image through squoosh.app. Aim for under 100KB each. A 1200px product photo at 80% WebP quality lands at 40–80KB and looks identical to the 2MB original.

Resize before you upload

Don't serve a 4000×3000 photo in a 600px slot. The browser downloads every pixel and shrinks them. Resize to actual display dimensions — Squoosh, Preview (Mac), or Photos (Windows) all have resize toggles.

Lazy-load below-the-fold images

Anything below the first screenful should not block initial load. One attribute does it — add it to every image tag below your hero.

<img src="..." loading="lazy" />

Put a CDN in front of your site

Cloudflare's free tier with the Polish setting enabled automatically compresses and optimises images at the edge. 15-minute setup. Works even without touching your image library.

🔧

Free tool: web.dev/measure — look at "Eliminate render-blocking resources" and "Properly size images". These tell you exactly which files are the problem.

Section 3: JavaScript Audit

Most sites load 4–10x more JavaScript than they need. Legacy plugins, half-installed widgets, and abandoned tracking scripts nobody removed after the last redesign.

200KB

Target JS on initial page load

Use Chrome DevTools Coverage tab

Open site → right-click → Inspect → Cmd/Ctrl+Shift+P → type 'Coverage' → reload. You'll see every JS file and what percentage is actually used. Under 30% usage = dead weight.

Defer non-critical scripts

Any script tag not needed to render the first screen should be deferred. One word change that often shaves a full second off load time.

<script defer src="..."></script>

Remove abandoned tracking pixels

Audit for Hotjar, FullStory, Crazyegg, old Facebook Pixels, A/B testing tools nobody logs into anymore. Each one is a network request and 20–100KB of JavaScript. If you're not using it, remove it.

Audit your WordPress plugins

Anything you haven't touched in 6 months is a candidate for removal. Each active plugin typically adds 10–50KB of JS and CSS. Deactivate, test, delete.

🔧

Free tool: web.dev/measure → "Reduce unused JavaScript" report — lists every JS file, its size, and how much is dead code.

When to call us

Most sites can move PageSpeed scores from 30–50 to 80–90 using only the steps above. Try them — most take about 2 hours total. Re-test on PageSpeed Insights to see your delta. The numbers will tell you whether you needed an agency or just a free afternoon.

If your stack is more complex (e-commerce checkout, custom backend, weird CDN behaviour, server-side rendering issues) or you'd rather have someone handle this end-to-end, that's what we do at Adri.

Book a 15-min audit walkthrough →

We'll audit your site live on the call — you leave knowing exactly what's broken.