Web performance checklist
Fourteen measurements to take before a site goes live, in the order that keeps each one honest. Transport comes first, because a page served over the wrong protocol or without compression makes every later number worse for a reason that has nothing to do with the page. Then the bytes, then what the browser does with them. Record the numbers rather than the verdicts. A release note that says the page got faster is worth nothing next to one that says the request count went from 48 to 96.
14 checksabout 90 min end to end
Transport
- How to check if a website uses HTTP/2
Request count only stops mattering once the responses share a connection, and a build that quietly fell back to HTTP/1.1 changes what every other number means. - How to check if keep-alive is enabled
A new connection per request adds a handshake nobody sees in a single response. - How to check DNS lookup time
The first request pays for every hostname the page reaches, and a hostname added by a tag manager is invisible in the markup. - How to check redirect chain
Every hop is a full round trip before a byte of the page arrives, and chains grow one migration at a time.
Bytes on the wire
- How to check if gzip is enabled
The cheapest win on the list, and the one most often lost when a proxy is added in front of the origin. - How to check if brotli is enabled
Measure it rather than assume it. A CDN that advertises brotli can still be answering with gzip for your routes. - How to check vary header
A cache without this header can hand a compressed body to a client that cannot read it. - How to check page size
The number a product manager understands, and the one that makes a request count argument concrete. - How to check number of requests on a page
Take it before release so the number after release has something to compare against.
What the browser does
- How to check TTFB
Separates the server's thinking time from the network, so a slow page gets blamed on the right layer. - How to check render blocking resources
Names which of the counted requests actually delay the first paint, which is rarely all of them. - How to check LCP of a page
The one paint the visitor is waiting for, and the metric a field report will quote back at you. - How to check CLS
The defect that never shows up on a fast machine with a warm cache, which is every developer's machine. - How to check if images are lazy loaded
Explains the gap between the images on the page and the images that were fetched, before someone calls it a bug.
Take it with you
The file is the same list as Markdown checkboxes, ready to paste into a release ticket or a pull request description.
Ticks are kept in this browser only. They are not sent anywhere and other people do not see them.