webaim.org speed test — 20 Oct 2026

Measured from the wfix.shop server on 20 October 2026 at 15:30 UTC. Grade A (95/100), with the screenshots, the timings and the fixes that matter.

https://webaim.org/

20 October 2026 at 15:30 UTC · Free test · report pt_bef988690d3c
Grade
A
95/100
Performance99/100
Structure88/100

14 audit(s) passed, 2 need work

First byte (TTFB)255 msmeasured from this server
Fully loaded896 msfirst byte + slowest asset
Requests13document + assets
Page weight334.0 KBcompressed transfer
HTML document2.9 KBgzip
ProtocolHTTP/3Apache/2.4.52 (Ubuntu)
Third-party195.4 KBother hosts

Where the first byte went

  • DNS lookup 59 ms 23%
  • TCP connect 6 ms 2%
  • Server wait 190 ms 75%

Measured on the connection that fetched the HTML. Every other request on the page waits for the end of this bar before it can start.

How this page compares

First bytefaster than 83% of 4,999 pages tested here255 ms against a median of 449 ms
Page weightlighter than 69% of 4,999 pages tested here334.0 KB against a median of 650.5 KB
Fully loadedfaster than 94% of 4,999 pages tested here896 ms against a median of 1.84 s
Requestssends fewer requests than 85% of 4,999 pages tested here13 against a median of 26

Every report published here is in this comparison, so it is a reference population of pages tested from one server - not a benchmark of the whole web.

What these numbers mean

  • The first byte arrived in 255 ms. That is workable, and the cheapest win left is caching or a warmer connection.
  • The page transfers 334.0 KB over 13 request(s), which is lean. Javascript files are 69% of it, so defer what is not needed for the first screen, and drop tags nobody uses.
  • The HTML itself arrives gzip-compressed.
  • It runs over HTTP/3, so the assets share a connection instead of opening one each.
  • 59% of the weight comes from other hosts (analytics, fonts, embeds), which also means their slow day becomes your slow day.
  • The largest element painted at 736 ms, inside the 2.5 s Google calls good.
  • Layout stayed still (CLS 0.005), so nothing jumps under the reader's cursor.
  • The main thread was blocked for 30 ms in total, which is not enough to feel.

Fix first: Render-blocking resources - Add defer or async to scripts that do not change the first paint, inline the critical CSS, and load the rest with media="print" plus an onload swap.

Read on one shared server, not a visitor's phone: use it to compare pages against each other, not as a promise about every connection. We fix what these tests find.

Screenshot

What the page looks like

Loaded in headless Chromium on this server. Click an image to open it full size.

Desktop screenshot of webaim.org
Desktop 1366 × 768 · 330.9 KB · page is 1751 px tall
Mobile screenshot of webaim.org
Mobile 390 × 844 · 97.6 KB · page is 3463 px tall

Browser render

The same URL loaded in a real browser, so these are the readings curl cannot produce. The grade above is still built from the server measurements.

Largest contentful paint736 msgood is under 2.5 s
Cumulative layout shift0.005under 0.1 is stable
Total blocking time30 mslong tasks during load
First contentful paint736 msfirst content on screen
Browser page weight471.0 KB43 request(s), scripts included
Failed requests2blocked or unreachable
Largest contentful paint736 ms
Goodgood under 2.5 s, poor over 4 s
Cumulative layout shift0.005
Goodgood under 0.1, poor over 0.25
Total blocking time30 ms
Goodgood under 200 ms, poor over 600 ms

Page weight by type

What the page is made of

Javascript 3 requests
230.6 KB 69%
Images 3 requests
95.2 KB 28%
Css 6 requests
5.4 KB 2%

Transfer size, compressed as sent. 13 request(s) in total, 334.0 KB across all of them.

Top issues

Render-blocking resources

high impact

9 render-blocking resource(s) in the document head (3 script(s), 6 stylesheet(s)). The page cannot paint until each one arrives.

Fix: Add defer or async to scripts that do not change the first paint, inline the critical CSS, and load the rest with media="print" plus an onload swap.

Strict-Transport-Security

low impact

HSTS is not set, so the first visit on a hostile network can still be downgraded to HTTP.

Fix: Send Strict-Transport-Security with a max-age of at least six months. Add includeSubDomains once every subdomain is HTTPS.

Waterfall

Slowest requests

CSSfonts.googleapis.com/css
641 ms
CSSfonts.googleapis.com/css
641 ms
CSSfonts.googleapis.com/css
634 ms
IMAGESwebaim.org/media/favicon.ico
608 ms
JAVASCRIPTwww.googletagmanager.com/gtag/js
601 ms
IMAGESwebaim.org/media/logo.png
591 ms
JAVASCRIPTwebaim.org/media/scripts/main.js
590 ms
IMAGESwebaim.org/media/banners/home.jpg
587 ms
CSSwebaim.org/styles/home.css
580 ms
JAVASCRIPTwebaim.org/media/scripts/jquery.js
568 ms

Each bar is one request's own response time, scaled to the slowest. Assets were fetched in parallel, so the bars overlap in real time rather than stacking. first party third party

RequestTypeStatusTimeSize
https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700 3rd partycss200641 ms290 B
https://fonts.googleapis.com/css?family=Kameron:400,700 3rd partycss200641 ms204 B
https://fonts.googleapis.com/css?family=Roboto:400 3rd partycss200634 ms212 B
https://webaim.org/media/favicon.icoimages200608 ms32.2 KB
https://www.googletagmanager.com/gtag/js?id=G-Y41PF8WV9X 3rd partyjavascript200601 ms194.7 KB
https://webaim.org/media/logo.pngimages200591 ms16.3 KB
https://webaim.org/media/scripts/main.jsjavascript200590 ms2.0 KB
https://webaim.org/media/banners/home.jpgimages200587 ms46.6 KB
https://webaim.org/styles/home.csscss200580 ms1.1 KB
https://webaim.org/media/scripts/jquery.jsjavascript200568 ms33.8 KB
https://webaim.org/styles/print.csscss200563 ms386 B
https://webaim.org/styles/main.csscss200552 ms3.3 KB
Report this page

The page is removed when the owner agrees. Sending this removes nothing by itself.

Run this test on your own site

The same engine, free, with the screenshots and the fixes. No account needed.