REDLINE
← All guidesOptimisation · 11 min read

A practical checklist for fixing slow page loads

An ordered checklist for making a page load faster, with the realistic gain and the cost of each step so you can stop at the right point.

Most performance work fails not because the team picks the wrong fixes, but because it picks them in the wrong order. Image compression is satisfying and measurable; it is also pointless while a render-blocking third-party script sits in the head. This checklist is ordered by the ratio of gain to effort on a typical content or application page, with an honest note on what each step actually buys you and when to skip it.

Before you start

Take a baseline on a cold cache, on the slowest device class you support, and write the number down. Without a baseline every subsequent decision is a matter of opinion.

1. Remove render-blocking work in the head

Anything synchronous in the head delays the first pixel. Synchronous third-party scripts — tag managers, consent tools, chat widgets, A/B testing snippets — are the single most common cause of a slow first paint, and they are usually the easiest to move.

Typical gain: several hundred milliseconds to multiple seconds on mobile. Cost: low, mostly coordination with whoever owns the tags.

2. Cut the number of round trips before first paint

On a high-latency connection the count of dependent requests matters more than their size. A page that needs HTML, then CSS, then a font, then a script, then an API call before anything renders has serialised four network waits.

Typical gain: 200-800 ms on mobile networks. Cost: low to moderate.

3. Fix the largest element on the first screen

Usually a hero image, a banner or a headline blocked by a font. The user's sense of "the page loaded" is tied almost entirely to this one element.

Typical gain: the largest single improvement to perceived speed on most content pages. Cost: low.

4. Reduce the JavaScript that runs before interaction

Bytes matter, but execution matters more: a phone pays to download, parse, compile and run. This is where the developer-machine illusion is strongest, because parsing is nearly free on a laptop.

Typical gain: the dominant factor in interaction latency on mid-range phones. Cost: moderate to high, and the most likely step to need real engineering time.

5. Take the third parties seriously

Third-party code is the part of the page you did not write, cannot profile easily and do not control the release schedule of. It is also frequently half the page weight.

Typical gain: large and durable. Cost: political more than technical.

6. Make caching do the second visit for you

Typical gain: near-instant repeat visits. Cost: low, but mistakes here are visible, so be deliberate about invalidation.

7. Shorten server response time

Time to first byte sets the floor for everything else. If the server takes 900 ms to answer, no amount of frontend work produces a fast page.

8. Only now, micro-optimise

Re-render counts, memoisation, shaving kilobytes off a utility, tuning animation curves. These are real improvements and they belong last, because each costs engineering attention and returns far less than the earlier steps.

Knowing when to stop

Performance work has diminishing returns, and past a point the honest answer is that the page is fast enough and the time belongs elsewhere. Stop when the slowest supported device loads the first screen in a time you would accept yourself, interaction feels immediate on that device, and you have a budget in CI that prevents the gains from eroding.

Make it stick

Every improvement decays without a guard. A budget check in continuous integration — a ceiling on payload, response time and third-party origins — is what separates a performance project from a permanent performance standard.

For deciding which of these steps matters most on your hardware, start from how to read a device performance score, and see Core Web Vitals in plain English for how these fixes map onto the metrics search engines report.

Keep reading