How to Speed Up a Website: Practical Tips That Actually Move the Needle
The Fixes That Actually Move Your Core Web Vitals
Most website speed tips focus on the same surface-level advice: compress your images, enable caching, use a CDN. That advice isn't wrong, but it's incomplete in ways that matter. The difference between a site that scores 90 on PageSpeed Insights and one that actually feels fast to real users often comes down to a handful of decisions made correctly — not just made. This section covers the optimisations that produce measurable gains in Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), and Interaction to Next Paint (INP), and explains why each one works rather than just telling you to do it.
Images: Format Conversion Is the Starting Point, Not the Finish Line
Switching to WebP or AVIF is worth doing. AVIF in particular delivers significantly smaller file sizes than WebP at comparable quality, which matters on image-heavy pages. But format alone is a fraction of the potential gain. The larger problem is serving images at the wrong dimensions — a 2400px wide photo displayed in a 400px column still transfers six times the pixel data the browser needs, regardless of format.
Correct sizing means generating multiple source sizes and using srcset so the browser requests the appropriate version for the viewport. Pair that with genuine compression (not just re-encoding), and you can routinely cut image payload by 60–80% compared with unoptimised originals. That's the kind of change that moves LCP by hundreds of milliseconds on mobile connections.
One common mistake: applying lazy loading to every image on the page. Lazy loading defers off-screen images until the user scrolls near them, which is exactly what you want — except for any image above the fold. The hero image or the largest visible element is typically your LCP candidate. Lazy-loading it tells the browser to deprioritise the one asset Google is measuring. Always set loading="eager" (or omit the attribute entirely) on above-the-fold images, and apply loading="lazy" only below that threshold. The same logic applies to iframes: lazy-load embedded maps and videos that start off-screen, but never a video that autoplays as the page's primary content.
Caching: Two Different Tools for Two Different Problems
Browser caching and server-side caching are frequently conflated, but they solve different bottlenecks. Browser caching stores static assets — fonts, scripts, stylesheets, images — in the visitor's local cache so repeat visits skip the download entirely. It's configured through cache-control headers and has no effect on first-time visitors.
Server-side caching (page caching, object caching, full-page HTML caching) reduces the work your server does to generate a response. On a database-driven site, every uncached page request can trigger dozens of database queries. A full-page cache serves a pre-built HTML file instead, cutting time-to-first-byte (TTFB) dramatically. This affects every visitor, including first-timers, which is why it often produces a more visible improvement than browser caching alone.
Use both. But if you're choosing where to start, server-side caching wins on impact per hour of effort.
CDNs and the Latency Problem Benchmarks Miss
A CDN doesn't make your server faster. It moves copies of your assets physically closer to users. A visitor in Sydney requesting a site hosted in Frankfurt is adding roughly 250ms of round-trip time before a single byte is received. A CDN with an edge node in Sydney eliminates most of that. The performance improvement shows up in real-user metrics — the kind that affect Core Web Vitals scores in Google Search Console — more than in lab-based tests run from a fixed location.
The One Mistake That Cancels Everything Else
Render-blocking CSS and JavaScript are among the most impactful page speed problems, and they're frequently ignored while teams obsess over image formats. If the browser encounters a <script> tag in the document head without defer or async, it stops parsing HTML and waits. A single third-party script — an analytics tag, a chat widget, an A/B testing library — can add hundreds of milliseconds before any content appears.
Audit your scripts. Defer everything that doesn't need to run before first render. Move non-critical CSS to load asynchronously. These changes often improve LCP and First Contentful Paint more than any asset optimisation, and they're the step most sites skip entirely.
Fastest wins first: server-side caching → render-blocking script audit → image sizing and compression → lazy loading (with above-fold exceptions) → CDN → browser cache headers. This sequence roughly maps effort to measurable impact, though the right order can shift depending on your current bottlenecks.
Server Response Time, Hosting, and the Infrastructure Decisions Most Sites Get Wrong
Before a browser can render anything, it has to receive the first byte of data from your server. That moment — measured as Time to First Byte (TTFB) — sits beneath almost every other performance problem a site can have. A high TTFB means every subsequent metric suffers: Largest Contentful Paint, Total Blocking Time, and even your Cumulative Layout Shift can look worse because the browser is simply waiting longer before it can start doing anything useful.
Diagnosing TTFB correctly matters because the fix depends entirely on the cause. A TTFB above 600ms (the threshold where it starts hurting Core Web Vitals assessments) could point to an overloaded shared server, an uncached database query, a slow PHP process, or a third-party API call that happens server-side before the page is assembled. These are very different problems with very different solutions. Use Chrome DevTools' Network panel with the "Timing" tab open — if the "Waiting for server response" bar is long, you have a server issue. If the download bar is long, you have a bandwidth or payload issue. Most people conflate them.
The Hosting Tier Problem
Shared hosting is where a disproportionate number of slow websites live, and often for understandable reasons — it's cheap and easy to start with. But the performance ceiling is genuinely low. You're sharing CPU and memory with dozens or hundreds of other sites, and during traffic spikes on a neighbour's site, yours slows down with no warning and no recourse.
Moving to a VPS gives you dedicated resources, but it shifts the operational burden onto you. Managed hosting — particularly plans built around a specific CMS or framework — tends to offer the best balance for most sites: server-level caching, automatically tuned PHP configurations, and infrastructure designed around the actual workload. The performance gap between well-configured managed hosting and a generic shared plan is often larger than any front-end optimisation you could make.
HTTP/2 and HTTP/3 adoption also belongs in this conversation. HTTP/2's multiplexing eliminated the old need to concatenate all your JavaScript into a single massive bundle, because multiple requests over one connection no longer carry the overhead they once did. HTTP/3 goes further, using QUIC to handle packet loss more gracefully — relevant for mobile users on variable connections. Check whether your hosting provider actually supports HTTP/3; many still default to HTTP/2, and some shared plans haven't fully moved past HTTP/1.1.
Minification, Bundling, and the Over-Bundling Trap
Minifying CSS and JavaScript — stripping whitespace, comments, and shortening variable names — is straightforward and worth doing. Bundling is more nuanced. The logic of combining files made strong sense under HTTP/1.1, when each additional request cost a full TCP handshake. Under HTTP/2, that cost largely disappears. Aggressively bundling everything into one large JS file can actually hurt performance by preventing the browser from caching individual modules independently, and by delivering code to pages that don't need it.
The better approach is code-splitting: send only the JavaScript a given page needs. Modern build tools support this, and it's one of the reasons well-architected frameworks tend to outperform monolithic setups on real-world performance tests.
What's Overrated — and What Isn't
Removing query strings from static resources is a commonly cited website speed tip that rarely moves any measurable needle. Most CDNs and caches handle versioned query strings correctly, and the sites still recommending this as a priority fix are often repeating advice from 2012.
What genuinely is underrated: eliminating unused third-party scripts. A single tag manager loading eight marketing pixels, an abandoned A/B testing library still firing on every page, a social sharing widget nobody clicks — these can add seconds of main-thread blocking time. Each third-party script introduces an external DNS lookup, a separate connection, and execution time you have no control over. Auditing and removing them is one of the highest-leverage changes you can make, and emerging tools in modern platforms — the kind of automated performance auditing discussed in how AI is transforming web design — are starting to surface this bloat automatically rather than waiting for developers to find it manually.
The server side of performance is less visible than front-end changes, but it's often where the biggest gains are hiding.
Choosing a Platform That Does the Heavy Lifting for You
Every website speed tip in this article — image compression, caching headers, reducing render-blocking resources, trimming third-party scripts — can be applied manually. But how much of that work you have to do yourself depends heavily on the platform you build on. Platform choice is a performance decision, and treating it as purely a design or content management question is one of the most common reasons sites start fast and degrade over time.
From a speed perspective, the qualities worth looking for in a CMS are specific: built-in caching that doesn't require a separate plugin and configuration session, CDN integration that works out of the box rather than as an optional add-on, HTML and CSS output that is clean and minimal rather than generated by layers of abstraction, and a core architecture that doesn't assume you'll install dozens of extensions to get basic functionality. That last point matters more than it might seem.
The Hidden Performance Cost of Plugin Dependency
Plugin-heavy platforms create a particular kind of technical debt. Each plugin adds its own stylesheet, its own JavaScript, sometimes its own database queries. Individually, most of these additions are modest. Collectively, they compound into a page that loads six resources where two would do, executes scripts in conflicting orders, and produces markup that no single developer fully controls. The performance cost isn't always visible until you run a Lighthouse audit and find that half your main-thread blocking time comes from tools you installed to solve unrelated problems.
This isn't a hypothetical concern. The structural tension between platform capability and plugin sprawl — and what it means for both performance and the future of content management — is examined in detail in this analysis of plugin dependency and performance trade-offs in CMS platforms. The core issue is that when performance is an afterthought in a platform's architecture, every plugin you add makes it worse, and every performance fix you apply is fighting against a current that keeps pulling in the other direction.
A CMS that was designed with performance as a first principle behaves differently. Caching isn't a plugin you configure — it's part of how the platform serves content. CDN support isn't a premium integration — it's baked into the delivery layer. The output code doesn't carry the fingerprints of six different plugin authors making independent decisions about how to load assets. The result is a baseline that's already fast, which means your optimisation work compounds rather than compensates.
Why Ariana CMS Is Built Differently
Ariana CMS was designed around this principle: speed should be the default state, not something you achieve by layering optimisations on top of a slow foundation. That architectural choice has practical consequences. Sites built on Ariana start with clean output, integrated caching, and CDN delivery without requiring the site owner to assemble those pieces from separate tools and keep them compatible across updates.
This matters most for teams that don't have a dedicated performance engineer reviewing every change. When the platform handles compression, caching, and delivery automatically, the risk of a content update or new page inadvertently introducing a regression is much lower. Performance doesn't depend on everyone remembering to follow a checklist — it's structural.
For sites that want to move quickly on content without sacrificing load times, or for developers who are tired of re-solving the same performance problems on every project, a platform that treats speed as a default removes an entire category of ongoing maintenance work.
The website speed tips covered in this article are all valid and worth applying. But the highest-leverage decision you can make for long-term performance isn't a setting or a plugin — it's choosing a platform where fast is the starting point, not the destination you're always trying to reach.
Also credited