Check If Your Website Is Slow: Fix Speed Issues (2026)
Diagnose why your website is slow: measure TTFB, LCP and Core Web Vitals, then apply the 5 highest-impact fixes in an afternoon with this practical 2026 guide.
A slow website is one of those problems that everyone suspects they have and almost nobody measures. The homepage feels fine on your laptop, on your fast office WiFi, when you already have the site cached. What it feels like in the real world, a first-time visitor on a mid-range phone on 4G, three thousand miles away, is a completely different experience.
This guide covers how to actually measure website speed, which numbers matter, and the fixes that make the biggest difference for the effort involved.
Why website speed actually matters
Three concrete things, all measurable:
- SEO. Google uses page experience signals as a ranking factor, and Core Web Vitals are the most direct way to measure page experience. A slow site is downranked relative to faster competitors on the same content.
- Conversion. Every study that has measured the relationship between load time and conversions has found the same pattern: slower sites convert worse. Amazon reportedly found that every 100 ms of additional latency cost 1 percent of sales.
- Bounce rate. Users abandon slow pages. On mobile especially, a page that takes more than 3 seconds to become usable loses a large fraction of visitors before they see anything.
What to actually measure
There are dozens of metrics. Four matter most, and all four are measured by the free speed test tool.
Core Web Vitals plus TTFB. All four are free to measure.
- TTFB
Server response time. Target under 500 ms.
- LCP (Largest Contentful Paint)
When the biggest element appears. Target under 2.5 s.
- INP (Interaction to Next Paint)
Responsiveness to clicks. Target under 200 ms.
- CLS (Cumulative Layout Shift)
How much content jumps while loading. Target under 0.1.
1. Time to First Byte (TTFB)
The time between the request leaving the browser and the first byte of the response arriving. TTFB is the pure server-side metric. It includes DNS lookup, TCP handshake, TLS handshake, and whatever time the server takes to generate the response.
| TTFB | Rating | What it means |
|---|---|---|
| Under 200 ms | Excellent | Server and network are both fast |
| 200 to 500 ms | Good | Typical for well-hosted sites |
| 500 ms to 1 s | Needs work | Server or network issue |
| 1 to 2 s | Poor | Something is wrong: slow DB, no cache, distant server |
| Over 2 s | Critical | Broken hosting setup |
2. Largest Contentful Paint (LCP)
The time until the largest element in the viewport, usually the hero image or a big heading, has fully rendered. This is what users perceive as "when the page loaded." Google uses LCP as one of the three Core Web Vitals.
- Under 2.5 s: Good
- 2.5 to 4 s: Needs improvement
- Over 4 s: Poor
3. Interaction to Next Paint (INP)
Replaced First Input Delay as a Core Web Vital in March 2024. Measures the responsiveness of the page to user interactions: how long it takes for the page to visually respond after a click or tap. Over 200 ms feels laggy; under 100 ms feels instant.
4. Cumulative Layout Shift (CLS)
How much content moves around while the page loads. A page that jumps because a late-loading image pushed the text down has high CLS. Aim for under 0.1. A page with higher CLS feels broken even if it loads fast.
How to check your own site in 30 seconds
- Open the Website Speed Test tool.
- Enter your homepage URL. Do not include https://. The tool adds it automatically.
- Read TTFB and total time. TTFB is the server-side signal, total time is the full HTML delivery.
- Check the response headers. Is content-encoding gzip or br? Is there a cache-control header?
- Run the test three times. Server response varies. The median is more meaningful than any single sample.
TTFB, download time, headers and grading. Free, in your browser.
Test Website SpeedInterpreting the results
| What you see | Likely cause | Fix priority |
|---|---|---|
| TTFB over 800 ms | Server-side slowness | High. This is the biggest issue. |
| TTFB fine but total > 3 s | Large HTML, no compression, or heavy server rendering | Medium |
| Response missing content-encoding | No gzip or Brotli compression | High. Easy 70 percent reduction. |
| Cache-Control: no-store | Nothing is cached, every visit hits the server | High for static assets |
| Large HTML (over 200 KB) | Huge inline CSS/JS, or unoptimised framework output | Medium |
| Multiple redirects in finalUrl chain | www vs non-www, http vs https misconfiguration | Medium. Easy fix. |
The five fixes that make the biggest difference
Once you have measurements, here is what to do about them, ordered by impact per unit of effort.
1. Enable gzip or Brotli compression
If your server sends HTML, CSS and JS uncompressed, every visitor is downloading 3 to 5 times more bytes than necessary. Enabling compression is a single-line config change in every major server (Apache, Nginx, Cloudflare, Vercel, Netlify).
# Nginx
# Add to your server block or http block
gzip on;
gzip_types text/html text/css text/javascript application/javascript application/json;
gzip_min_length 1000;
# Or enable Brotli (better compression, wider browser support now)
brotli on;
brotli_types text/html text/css text/javascript application/javascript application/json;Expected impact: 50 to 75 percent reduction in text asset size. Takes five minutes. This is almost always the highest-impact single fix.
2. Serve images in modern formats
Images are usually 50 to 80 percent of page weight. If you are serving JPEGs, converting to WebP cuts them by 30 percent. Converting to AVIF cuts them by 50 percent. Both are supported by every browser in active use.
- Convert your ten largest images to WebP or AVIF.
- Use the picture element to serve AVIF with WebP fallback and JPEG as the last resort.
- Compress every remaining image to the smallest acceptable quality.
Convert JPG, PNG to WebP and AVIF. Free, in your browser.
Image Converter3. Use a CDN
A CDN places copies of your static assets (images, CSS, JS) on servers around the world. A visitor in Karachi gets the file from a Karachi edge node, not from a server in Virginia. This alone can cut TTFB by 200 to 500 ms for global audiences.
Cloudflare has a free tier that covers most sites. Vercel and Netlify include CDN by default. If you are on shared hosting without a CDN, moving to Cloudflare alone will usually improve TTFB by 30 to 60 percent.
4. Add cache headers
Static assets (images, CSS, JS files with hash names) should be cached aggressively by browsers. Without cache headers, every visit re-downloads them.
# Nginx: cache static assets for 1 year
location ~* \.(jpg|jpeg|png|gif|webp|avif|svg|css|js|woff2?)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# HTML should be cached briefly (so updates are seen)
location ~* \.html?$ {
expires 5m;
add_header Cache-Control "public, must-revalidate";
}The rule: static assets with hashed filenames get 1 year. HTML gets 5 minutes to 1 hour. Never cache HTML for a year. You would never see your own updates.
5. Eliminate redirect chains
If http://example.com redirects to https://www.example.com, that is one extra round-trip before the browser even starts loading the page. If there are two or three redirects chained, the cost multiplies.
- Pick one canonical URL (https://example.com or https://www.example.com).
- Redirect everything else to it in a single hop.
- Never chain http to https to www to apex.
Advanced fixes (worth it if the basics are done)
- Preconnect to external domains. A link rel preconnect tag saves 100 to 300 ms on font loading.
- Preload the LCP image. A link rel preload as image tag tells the browser to start downloading it before the CSS is parsed.
- Lazy-load below-the-fold images. The loading="lazy" attribute defers images the user has not scrolled to yet.
- Defer non-critical JavaScript. A script tag with defer or async avoids blocking rendering.
- Reduce web font weight. Every additional font weight (regular, medium, bold, etc.) is another file download. Use two weights maximum.
- Consider a static site. If your content does not change per-user, serving pre-rendered HTML from a CDN beats server-side rendering every time.
The bottom line
Website speed is measurable, and once measured it is usually fixable. The common problems (no compression, huge images, no CDN, no cache headers) account for the majority of slow sites, and all four are fixable in a single afternoon.
Start by measuring. TTFB and total time give you a quick diagnosis. Then work through the five fixes in order. The first two usually account for the majority of the improvement. The rest are polish.
Tools mentioned in this article
Frequently asked
How fast should a website load?
Aim for TTFB under 500 ms, LCP under 2.5 s, and total load under 3 s on a mid-range phone on 4G. Under these numbers you are in the "good" range for Core Web Vitals. Google's thresholds are the practical baseline, not marketing claims. "Loads in 0.1 seconds" is not a realistic or necessary target.
What is TTFB and why does it matter?
TTFB is Time to First Byte, the time between the browser sending the request and receiving the first byte of the response. It measures the server-side performance of your site: DNS, TCP, TLS and server processing time. It is the foundation of every other metric, because nothing else can start until the first byte arrives.
Does website speed affect SEO?
Yes. Google has confirmed that page experience is a ranking factor, and Core Web Vitals (LCP, INP, CLS) are the way Google measures page experience. A site that is much slower than competitors in the same niche will rank below them for the same content, all else being equal.
How often should I test my website speed?
Once a month for a stable site, or after any deployment that changes the site's structure or dependencies. A sudden jump in TTFB usually means a new plugin, a slower query, or a misconfigured CDN cache. Measuring after every change catches these regressions immediately.
Is shared hosting always slow?
Not always, but often. On shared hosting your site competes for CPU with hundreds of other sites on the same server. If a neighbour has a traffic spike, your TTFB will spike too. If you see TTFB above 1 second on shared hosting, and adding a CDN does not fix it, moving to a VPS or a modern static host is worth the cost.
Can I improve speed without changing hosting?
Yes, usually. The four highest-impact fixes (enabling compression, converting images to WebP/AVIF, adding cache headers, eliminating redirect chains) do not require changing hosting. They are configuration changes and asset changes. Many slow sites become fast sites without migrating.
What is the easiest speed fix?
Enabling gzip or Brotli compression. It is a one-line change in every major server config, and it reduces text asset transfer by 50 to 75 percent. If your server does not already have it, enabling it takes five minutes and is often the single most impactful change you can make.
Does adding a CDN always help?
Usually, but not always. A CDN helps when your audience is geographically spread out and your origin server is in one location. If all your visitors are within a few hundred kilometres of your server, a CDN adds little. If your visitors are global, a CDN can cut TTFB by 200 to 500 ms for the distant visitors.