Web performance
The complete path through web performance: why speed matters, how browsers load and render pages, measuring in the lab and with real users, fixing LCP, INP, and CLS, and how browsers work under the hood. Every fix is measured before and after, so you see what each change does on the devices your users have.
What is web performance?
Performance is how fast a page loads, how quickly it reacts, how smoothly it moves, and how still it stays. The Web performance lessons are being written, and this one opens first.
// What you’ll learn
- Loading, responsiveness, smoothness, and stability
- Measured speed vs perceived speed
- The user's device and network, not yours
- Where time goes on a typical page load
- A map of this course
Your progress
View detailed statsYour progress starts with the first published lesson.
- day streak
- 0
- days this week
- 0
- stages done
- 0/15
The learning path
181 lessons coming soon15 stages, in order. Each one builds on the last, from why speed matters to how browsers load, render, and measure your pages. Every lesson is listed now, and each one opens as soon as it's published. Jump to a stage, or search for any topic.
- STAGE 1 · BEGINNERWhy speed matters3 modules · 11 lessons
- STAGE 2 · BEGINNER TO INTERMEDIATEHow the browser loads and renders3 modules · 16 lessons
- STAGE 3 · INTERMEDIATEMeasuring in the lab3 modules · 17 lessons
- STAGE 4 · INTERMEDIATEMeasuring real users4 modules · 18 lessons
- STAGE 5 · INTERMEDIATEFast servers, caches, and networks3 modules · 12 lessons
- STAGE 6 · INTERMEDIATELoading content fast: LCP5 modules · 17 lessons
- STAGE 7 · INTERMEDIATEJavaScript loading4 modules · 13 lessons
- STAGE 8 · ADVANCEDResponsiveness: INP4 modules · 16 lessons
- STAGE 9 · ADVANCEDStability and smoothness3 modules · 13 lessons
- STAGE 10 · ADVANCEDInstant navigations2 modules · 5 lessons
- STAGE 11 · ADVANCEDArchitecture and frameworks2 modules · 10 lessons
- STAGE 12 · ADVANCEDDevices, networks, and people2 modules · 6 lessons
- STAGE 13 · ADVANCEDPerformance as a practice3 modules · 11 lessons
- STAGE 14 · EXPERTUnder the hood3 modules · 9 lessons
- STAGE 15 · ADVANCEDProjects2 modules · 7 lessons
181 lessons in 15 stages and 46 modules.
Stage 1 Beginner
Why speed matters
What web performance is, why users and businesses care, how people perceive speed, and the metrics that measure it.
3 modules · 11 lessons
- 0 of 4 lessons ready
Module 1: Welcome to web performance
What performance means, who it's for, and how this course works.
- 1.1What is web performance?Soon
- 1.2Why performance mattersSoon
- 1.3The performance inequality gapSoon
- 1.4Your toolkit and the course projectSoon
- 0 of 3 lessons ready
Module 2: How people perceive speed
Response-time limits, perceived performance, and metrics built around what the user sees.
- 2.10.1 seconds, 1 second, 10 secondsSoon
- 2.2Perceived performanceSoon
- 2.3From onload to user-centric metricsSoon
- 0 of 4 lessons ready
Module 3: The metrics that matter
Core Web Vitals, the metrics around them, lab vs field data, and reading distributions.
- 3.1Core Web VitalsSoon
- 3.2The supporting metricsSoon
- 3.3Lab data vs field dataSoon
- 3.4Averages lie: reading distributionsSoon
Stage 2 Beginner to intermediate
How the browser loads and renders
The network, the journey from URL to first pixels, and the rendering pipeline: the mechanics every optimization depends on.
3 modules · 16 lessons
- 0 of 6 lessons ready
Module 4: The network
Latency, DNS, TCP, TLS, and the HTTP versions, and what each costs a page load.
- 4.1Latency vs bandwidthSoon
- 4.2DNS lookupsSoon
- 4.3TCP connections and slow startSoon
- 4.4TLS without the waitSoon
- 4.5HTTP/1.1 and HTTP/2Soon
- 4.6HTTP/3 and QUICSoon
- 0 of 6 lessons ready
Module 5: From URL to first pixels
The steps of a navigation, how the browser finds and prioritizes resources, and how to read a waterfall.
- 5.1The navigation timelineSoon
- 5.2HTML parsing and the preload scannerSoon
- 5.3Render-blocking and parser-blocking resourcesSoon
- 5.4How browsers prioritize requestsSoon
- 5.5The critical rendering pathSoon
- 5.6Reading a waterfallSoon
- 0 of 4 lessons ready
Module 6: How the browser renders
Processes and threads, the event loop and frames, the pixel pipeline, and the cost of JavaScript.
- 6.1Processes and threadsSoon
- 6.2The event loop and framesSoon
- 6.3The pixel pipelineSoon
- 6.4The cost of JavaScriptSoon
Stage 3 Intermediate
Measuring in the lab
Chrome DevTools, Lighthouse, WebPageTest, and other lab tools: record, read, and compare results you can trust.
3 modules · 17 lessons
- 0 of 7 lessons ready
Module 7: Chrome DevTools for performance
The Performance panel, its insights, the Network panel, and the rendering tools.
- 7.1The Performance panelSoon
- 7.2Reading a performance traceSoon
- 7.3Performance insightsSoon
- 7.4The Network panel for performanceSoon
- 7.5Rendering and runtime toolsSoon
- 7.6Custom tracks, annotations, and sharingSoon
- 7.7Performance work with AI agentsSoon
- 0 of 5 lessons ready
Module 8: Lighthouse
How Lighthouse tests, scores, and throttles, and how to use it without being misled.
- 8.1How Lighthouse worksSoon
- 8.2The Lighthouse scoreSoon
- 8.3Throttling and simulationSoon
- 8.4Reading audits and insightsSoon
- 8.5Scripting LighthouseSoon
- 0 of 5 lessons ready
Module 9: WebPageTest and synthetic testing
Real-browser tests from real locations, test conditions that match your users, and results you can compare.
- 9.1WebPageTest basicsSoon
- 9.2WebPageTest in depthSoon
- 9.3Choosing test conditionsSoon
- 9.4Noise and variabilitySoon
- 9.5More lab toolsSoon
Stage 4 Intermediate
Measuring real users
Chrome's field data, the browser's performance APIs, real user monitoring, and the statistics to read it all.
4 modules · 18 lessons
- 0 of 3 lessons ready
Module 10: Field data from Chrome
The Chrome User Experience Report and the tools built on it.
- 10.1The Chrome User Experience ReportSoon
- 10.2PageSpeed Insights and Search ConsoleSoon
- 10.3The CrUX API, history, and BigQuerySoon
- 0 of 6 lessons ready
Module 11: The browser's performance APIs
The W3C performance APIs that every metric and RUM tool is built on.
- 11.1The performance timelineSoon
- 11.2Navigation Timing and Resource TimingSoon
- 11.3Paint, LCP, and layout shift APIsSoon
- 11.4Event Timing and INPSoon
- 11.5Long Tasks and Long Animation FramesSoon
- 11.6User Timing and custom metricsSoon
- 0 of 7 lessons ready
Module 12: Real user monitoring
Collect, send, store, and segment performance data from real users, then turn it into fixes.
- 12.1The web-vitals librarySoon
- 12.2Field data from every browserSoon
- 12.3Sending performance dataSoon
- 12.4Building a RUM pipelineSoon
- 12.5Segmenting field dataSoon
- 12.6Choosing a RUM toolSoon
- 12.7From field data to a fixSoon
- 0 of 2 lessons ready
Module 13: Statistics for performance
Enough statistics to read performance data correctly and prove a change worked.
- 13.1Reading performance dataSoon
- 13.2Proving a change workedSoon
Stage 5 Intermediate
Fast servers, caches, and networks
Time to first byte, caching at every layer, CDNs, compression, and resource hints.
3 modules · 12 lessons
- 0 of 4 lessons ready
Module 14: Time to first byte
What happens before the first byte arrives, and how to shrink it.
- 14.1Time to first byteSoon
- 14.2Faster server responsesSoon
- 14.3RedirectsSoon
- 14.4103 Early HintsSoon
- 0 of 4 lessons ready
Module 15: Caching
HTTP caching, the browser's many caches, and CDNs.
- 15.1HTTP caching in depthSoon
- 15.2A caching strategySoon
- 15.3The browser's cachesSoon
- 15.4CDNs and the edgeSoon
- 0 of 4 lessons ready
Module 16: Compression, protocols, and hints
Shrink every byte on the wire, use HTTP/2 and HTTP/3 well, and tell the browser what's coming.
- 16.1gzip, Brotli, and ZstandardSoon
- 16.2Compression dictionariesSoon
- 16.3Connections in practiceSoon
- 16.4Resource hintsSoon
Stage 6 Intermediate
Loading content fast: LCP
Largest Contentful Paint in depth, then images, video, fonts, and CSS: the content users wait for.
5 modules · 17 lessons
- 0 of 4 lessons ready
Module 17: Largest Contentful Paint
What LCP measures, its four parts, and how to fix each one.
- 17.1How LCP worksSoon
- 17.2The four parts of LCPSoon
- 17.3Load the LCP resource earlySoon
- 17.4Remove render delaySoon
- 0 of 5 lessons ready
Module 18: Images
Formats, responsive images, loading behavior, image CDNs, and SVG.
- 18.1Image formatsSoon
- 18.2Responsive imagesSoon
- 18.3Loading images wellSoon
- 18.4Image CDNs and pipelinesSoon
- 18.5SVG and iconsSoon
- 0 of 2 lessons ready
Module 19: Video and embeds
Video that loads fast and embeds that don't drag the page down.
- 19.1Video performanceSoon
- 19.2Embeds and facadesSoon
- 0 of 4 lessons ready
Module 20: Web fonts
How fonts load, how to make them small, and how to stop them shifting the page.
- 20.1How web fonts loadSoon
- 20.2Smaller, faster fontsSoon
- 20.3Fallback fonts without layout shiftsSoon
- 20.4When to skip web fontsSoon
- 0 of 2 lessons ready
Module 21: CSS delivery
Get the CSS a page needs to it fast, and stop shipping the CSS it doesn't.
- 21.1Delivering CSSSoon
- 21.2Shipping less CSSSoon
Stage 7 Intermediate
JavaScript loading
Ship less JavaScript, load it in the right order, tame third parties, and use service workers for speed.
4 modules · 13 lessons
- 0 of 6 lessons ready
Module 22: Shipping less JavaScript
Measure what you ship and remove what users don't need.
- 22.1How much JavaScript is too much?Soon
- 22.2Analyzing your bundlesSoon
- 22.3Tree shakingSoon
- 22.4Code splittingSoon
- 22.5A diet for dependenciesSoon
- 22.6Minification and build outputSoon
- 0 of 3 lessons ready
Module 23: Loading scripts well
Script loading attributes, ES modules in the browser, and the cost of hydration.
- 23.1Script loading strategiesSoon
- 23.2ES modules in the browserSoon
- 23.3The cost of hydrationSoon
- 0 of 3 lessons ready
Module 24: Third-party scripts
Measure, load, and govern analytics, ads, tag managers, and widgets.
- 24.1The cost of third partiesSoon
- 24.2Loading third parties wellSoon
- 24.3Governing third partiesSoon
- 0 of 1 lessons ready
Module 25: Service workers for speed
Use a service worker to make repeat visits fast without slowing the first.
- 25.1Service workers and performanceSoon
Stage 8 Advanced
Responsiveness: INP
Interaction to Next Paint in depth, the main thread, fast event handlers, and memory.
4 modules · 16 lessons
- 0 of 3 lessons ready
Module 26: Interaction to Next Paint
What INP measures, its three phases, and finding slow interactions.
- 26.1How INP worksSoon
- 26.2The three phases of an interactionSoon
- 26.3Finding slow interactionsSoon
- 0 of 5 lessons ready
Module 27: The main thread
Long tasks, yielding, breaking up work, and moving work off the main thread.
- 27.1Long tasksSoon
- 27.2Yielding to the main threadSoon
- 27.3Breaking up long workSoon
- 27.4Web workers for performanceSoon
- 27.5WebAssembly for performanceSoon
- 0 of 4 lessons ready
Module 28: Fast interactions
Event handlers, rendering after input, and responsiveness in frameworks.
- 28.1Fast event handlersSoon
- 28.2Reducing presentation delaySoon
- 28.3INP in frameworksSoon
- 28.4INP fixes from real sitesSoon
- 0 of 4 lessons ready
Module 29: Memory and storage
How memory affects speed, finding leaks in web apps, measuring memory in the field, and fast client storage.
- 29.1Memory and speedSoon
- 29.2Finding leaks in web appsSoon
- 29.3Measuring memory in the fieldSoon
- 29.4Storage performanceSoon
Stage 9 Advanced
Stability and smoothness
Cumulative Layout Shift in depth, rendering performance, and animation that stays smooth.
3 modules · 13 lessons
- 0 of 4 lessons ready
Module 30: Cumulative Layout Shift
How CLS is scored, what causes shifts, and how to fix and debug them.
- 30.1How CLS worksSoon
- 30.2What causes layout shiftsSoon
- 30.3Fixing layout shiftsSoon
- 30.4Debugging CLSSoon
- 0 of 4 lessons ready
Module 31: Rendering performance
The cost of style, layout, paint, and a large DOM, and how to keep each one small.
- 31.1Style recalculationSoon
- 31.2Layout and layout thrashingSoon
- 31.3DOM sizeSoon
- 31.4Paint and layersSoon
- 0 of 5 lessons ready
Module 32: Smooth animation and scrolling
Compositor animations, scrolling, view transitions, and measuring smoothness.
- 32.1Compositor-friendly animationSoon
- 32.2Scrolling performanceSoon
- 32.3View transitions and performanceSoon
- 32.4Measuring smoothnessSoon
- 32.5Canvas and WebGL performanceSoon
Stage 11 Advanced
Architecture and frameworks
How rendering strategies shape every metric, and performance in React, Next.js, Angular, Vue, Svelte, Astro, and Qwik.
2 modules · 10 lessons
- 0 of 4 lessons ready
Module 35: Rendering strategies
Client rendering, server rendering, static generation, streaming, and islands, compared by their metrics.
- 35.1Rendering strategies comparedSoon
- 35.2Streaming HTMLSoon
- 35.3Hydration strategiesSoon
- 35.4Rendering at the edgeSoon
- 0 of 6 lessons ready
Module 36: Framework performance
The performance tools and patterns of each major framework.
- 36.1React performanceSoon
- 36.2Next.js performanceSoon
- 36.3Angular performanceSoon
- 36.4Vue and Nuxt performanceSoon
- 36.5Svelte, Astro, and QwikSoon
- 36.6CMS and e-commerce platformsSoon
Stage 12 Advanced
Devices, networks, and people
Low-end phones, slow networks, adaptive loading, webviews, accessibility, and the energy cost of the web.
2 modules · 6 lessons
- 0 of 4 lessons ready
Module 37: Every device and network
Test on the devices people use, and adapt to what their phones and networks can do.
- 37.1Testing on low-end devicesSoon
- 37.2Adaptive loadingSoon
- 37.3Slow and unreliable networksSoon
- 37.4Webviews, in-app browsers, and PWAsSoon
- 0 of 2 lessons ready
Module 38: People and planet
Where performance meets accessibility and sustainability.
- 38.1Performance and accessibilitySoon
- 38.2Performance and sustainabilitySoon
Stage 13 Advanced
Performance as a practice
Budgets, continuous integration, monitoring, audits, experiments, the business case, and a performance culture.
3 modules · 11 lessons
- 0 of 3 lessons ready
Module 39: Budgets and regressions
Set budgets, catch regressions before they ship, and watch production.
- 39.1Performance budgetsSoon
- 39.2Performance in continuous integrationSoon
- 39.3Monitoring and alertingSoon
- 0 of 3 lessons ready
Module 40: Audits and experiments
Run a performance audit from start to finish, report it, and prove changes with experiments.
- 40.1Running a performance auditSoon
- 40.2Writing an audit reportSoon
- 40.3Performance experimentsSoon
- 0 of 5 lessons ready
Module 41: Business and culture
Make the case for performance, understand its role in search, and build a team that keeps sites fast.
- 41.1The business case for performanceSoon
- 41.2Search and Core Web VitalsSoon
- 41.3Building a performance cultureSoon
- 41.4Performance for designers and product managersSoon
- 41.5Performance in interviewsSoon
Stage 14 Expert
Under the hood
How browsers load, render, and measure pages, network internals, and how new performance standards are made.
3 modules · 9 lessons
- 0 of 4 lessons ready
Module 42: Browser internals
Chromium's loading and rendering pipelines, how metrics are computed, and deep tracing.
- 42.1How Chromium loads resourcesSoon
- 42.2Inside the rendering engineSoon
- 42.3How the metrics are computedSoon
- 42.4Deep tracing with PerfettoSoon
- 0 of 3 lessons ready
Module 43: Network internals
Congestion control, prioritization, and QUIC, deep enough to debug them.
- 43.1Congestion controlSoon
- 43.2HTTP prioritization internalsSoon
- 43.3QUIC internalsSoon
- 0 of 2 lessons ready
Module 44: Standards and what's next
How performance APIs are designed and shipped, and what's coming.
- 44.1How performance standards are madeSoon
- 44.2What's next for web performanceSoon
Stage 15 Advanced
Projects
Guided projects on real code, and a capstone audit of a site you choose.
2 modules · 7 lessons
- 0 of 6 lessons ready
Module 45: Guided projects
Apply the course to realistic apps, measuring before and after every change.
- 45.1Project: fix a slow storeSoon
- 45.2Project: build a RUM dashboardSoon
- 45.3Project: rescue a slow app's INPSoon
- 45.4Project: a performance pipelineSoon
- 45.5Project: instant navigationsSoon
- 45.6Project: an image pipelineSoon
- 0 of 1 lessons ready
Module 46: Capstone
Show everything you've learned on a site you choose.
- 46.1Capstone: audit a real siteSoon