A fast page is not simply a page with fewer HTML tags
The original version of this article focused heavily on reducing tags, using 72-dpi images and moving scripts to the end of the page. Some of those ideas reflected older web development practices. Modern performance work starts by measuring the experience of real users and identifying the resource or task that is actually causing delay.
Google recommends good Core Web Vitals, but also makes an important point: there is no single “page experience signal,” and a perfect lab score does not guarantee high rankings. Performance work should improve the page for users rather than becoming a score-chasing exercise.
Measure loading, responsiveness and visual stability
| Metric | What it measures | Good target |
|---|---|---|
| LCP | How quickly the main visible content loads | 2.5 seconds or less |
| INP | How quickly the page responds to user interaction | Less than 200 ms |
| CLS | How visually stable the layout remains while loading | Less than 0.1 |
These targets should be evaluated using real-user field data where available. Search Console groups pages based on Core Web Vitals data, while PageSpeed Insights can help you compare field and lab information during diagnosis.
Make the largest above-the-fold content arrive sooner
- Identify the actual LCP element before optimizing random resources.
- Compress and appropriately size the hero or main content image.
- Prefer modern image formats such as WebP or AVIF where they fit your browser support and workflow.
- Do not lazy-load the image that is likely to be the LCP element.
- Reduce slow server response and unnecessary redirect chains.
- Remove or defer render-blocking resources that delay the main content.
Optimize bytes and dimensions — not “DPI”
The old advice that every web image should be “72 dpi” is not a useful performance rule. What matters for page loading is the image's pixel dimensions, compression, file format and number of bytes transferred.
- Resize the file close to the dimensions at which it will actually be displayed.
- Use responsive image techniques when different screen sizes need different image sizes.
- Compress images without introducing visible quality problems.
- Set explicit
widthandheightattributes so the browser can reserve space and reduce layout shifts. - Lazy-load below-the-fold images rather than the critical first-screen image.
- Use thumbnails when users do not need the high-resolution asset immediately.
Reduce work on the critical rendering path
External style sheets remain useful for maintainability and caching, but simply moving everything into an external file is not enough. Large CSS and JavaScript bundles can still slow the page.
- Remove unused CSS and JavaScript when it is genuinely unnecessary.
- Load non-critical scripts with appropriate
deferor asynchronous behavior instead of blocking initial rendering. - Avoid long main-thread JavaScript tasks that hurt INP.
- Split large application bundles when users do not need every feature on first load.
- Minify production assets where your deployment process supports it.
- Do not load multiple libraries that solve the same problem without a clear reason.
Web fonts can delay both rendering and layout stability
- Use only the font families and weights the design actually needs.
- Prefer modern compressed font formats such as WOFF2.
- Use sensible fallback fonts and font-display behavior.
- Preload only the truly critical font files; preloading everything can make performance worse.
- Consider a system-font stack when a custom web font adds little value.
Ads, analytics, embeds and widgets can become the slowest part of the page
The original page correctly warned about external resources. That issue is even more important now because advertising systems, tag managers, chat widgets, social embeds and video players can add substantial JavaScript and network work.
- Remove third-party scripts that no longer provide measurable value.
- Delay non-essential widgets until the user needs them.
- Use lightweight placeholders for heavy video or social embeds when appropriate.
- Review tag-manager containers periodically so old marketing tags do not accumulate indefinitely.
- Reserve dimensions for ads and embeds to reduce CLS.
Reduce repeated work before the browser even starts rendering
- Use effective browser caching for versioned static assets.
- Enable compression such as Brotli or gzip where appropriate.
- Use a CDN when geography and traffic patterns justify it.
- Optimize backend queries, API calls and template work that slow server response.
- Use HTTP/2 or HTTP/3 through a modern hosting/CDN stack where supported.
A framework such as Bootstrap can speed development, but it does not automatically make a page fast. Load only the framework resources you actually need and test the final rendered page rather than assuming that a popular CDN asset will already be cached.
Replace old Firebug-era advice with current tools
Firebug is no longer the tool to use. Modern browsers include powerful developer tools, and Google's current performance workflow includes PageSpeed Insights, Lighthouse and Search Console's Core Web Vitals report.
- Start with field data: check whether real users actually have a Core Web Vitals problem.
- Use lab tools to diagnose: reproduce the issue under controlled conditions.
- Fix the largest bottleneck first: avoid making ten small changes while ignoring one heavy image or script.
- Test mobile and desktop: device capability and network conditions can change the result substantially.
- Re-measure after deployment: lab improvements appear immediately; field data needs time to accumulate.
For a broader page-quality review that includes SEO, content, accessibility, internal linking and rendered-page QA, use the Plus2Net webpage audit checklist alongside performance testing.
What I would fix first
| Priority | Typical issue |
|---|---|
| 1 | Slow server response, huge LCP image, render-blocking resources |
| 2 | Long JavaScript tasks, heavy third-party code, poor INP |
| 3 | Unreserved images/ads/embeds causing CLS |
| 4 | Unoptimized below-the-fold media, unused assets and inefficient caching |
| 5 | Small cosmetic score improvements with little user impact |
Optimize the actual bottleneck, not an outdated checklist
A modern fast-loading page comes from measuring real user experience, diagnosing the slowest part of the delivery and rendering path, and then making targeted improvements. Good content and useful functionality should not be removed simply to chase a perfect performance score.