HTML Performance Optimization Basics
HTML Performance Optimization Basics
Page speed directly affects user experience, conversion rates, and search rankings — Google explicitly uses Core Web Vitals (loading, interactivity, and visual stability metrics) as a ranking factor. Fortunately, many of the biggest performance wins come from simple, well-known HTML-level techniques rather than complex tooling.
Loading Scripts Efficiently
By default, a <script> tag blocks HTML parsing while it downloads and executes. Adding defer lets the script download in the background and run only after the page has finished parsing (in document order), while async downloads in the background and runs as soon as it's ready, in whatever order it finishes — ideal for independent scripts like analytics.
Lazy Loading Images and Iframes
Adding the native loading="lazy" attribute to <img> and <iframe> elements defers loading off-screen content until the user actually scrolls near it, cutting initial page weight significantly with zero JavaScript required.
Responsive Images with srcset
Serving a single, large image to every device wastes bandwidth on smaller screens. The srcset and sizes attributes on <img> let the browser automatically pick the most appropriately sized image file for the user's actual screen.
Resource Hints
- <link rel="preload"> — tells the browser to fetch a critical resource (like a key font or hero image) as early as possible.
- <link rel="preconnect"> — establishes an early connection to an important third-party domain (like a CDN or API) before it's actually needed.
- <link rel="dns-prefetch"> — resolves a domain's DNS lookup ahead of time.
Minifying and Reducing Requests
Minifying HTML, CSS, and JavaScript (stripping whitespace and comments) reduces file size, and combining multiple small files into fewer, larger ones reduces the number of separate network requests a browser has to make — both classic, still-relevant performance wins.
Measuring Performance
Tools like Google Lighthouse, PageSpeed Insights, and the browser's own DevTools Performance tab let you measure real metrics — such as Largest Contentful Paint (LCP) and Cumulative Layout Shift (CLS) — so you can prioritize fixes that make a measurable difference.
Press Run to execute.
Press Run to execute.
Press Run to execute.
The snippet below blocks rendering and loads a large image immediately even though it's far down the page. Rewrite it using 'defer' for the script and 'loading=lazy' plus width/height attributes for the image.
Press Run to execute.
Show expected output
<script src='heavy-analytics.js' defer></script>
<img src='large-banner.jpg' alt='Banner' loading='lazy' width='1200' height='400'>This is a self-check — compare your result with the expected output above.
Was this page helpful?