lawaPangram 100% Human badge

lawa is my web crawler. It crawls the web and writes down the HTTP headers that come back from each site. Everything below is regenerated every few minutes from what it has seen so far.

Status

lawa iscrawling
pace1,735 requests in the last minute
servers visited6,194,976 finished, 910 in progress
servers waiting in line9,853,986
responses studied below72,411,586 from 5,378,240 servers
numbers as of2026-10-30 12:16 UTC

The shares below are measured by hostname. Additionally, lawa takes at most 25 pages from any one server, and each server is counted once, when lawa has finished with it.

Web servers seen

Server headerserversshare
cloudflare1,396,98726.0%
apache978,52418.2%
nginx930,91717.3%
(none)453,3988.4%
gse194,8953.6%
openresty192,2643.6%
squarespace186,6163.5%
litespeed135,7312.5%
github.com106,1802.0%
vercel85,8321.6%

13.9% of the servers that name themselves also announce their version number.

X-Powered-Byserversshare of those sending it
php 8218,85136.1%
php 776,94912.7%
asp.net75,44512.4%
next.js52,4368.6%
php 526,6574.4%
plesklin24,9714.1%
express24,2014.0%
wp engine19,8973.3%

Bad time

A Date only has one‐second resolution and the network adds delay, so I decided that β€œon time” means β€œwithin 2Β seconds, from my perspective”.

server clockserversshare
on time4,716,93698.5%
up to 10Β seconds off19,1960.4%
10Β seconds to a minute16,1560.3%
a minute to an hour32,1260.7%
an hour to a day2,9760.1%
more than a day1510.0%

Of the 70,605 wrong clocks, 48,163 run slow and 22,442 run fast. 1,229 are wrong by a whole number of hours, which is likely timezone problems rather than drift. 42,245 servers sent no Date at all, and 808 sent malformed Dates.

Responses served from a cache (indicated by an Age header) are left out. 546,036 servers only ever answered that way.

Security headers

headerserversshare
HSTS (share of HTTPS servers)1,690,16138.7%
X-Content-Type-Options2,343,47843.6%
X-Frame-Options1,511,76428.1%
Content-Security-Policy954,62317.7%
Referrer-Policy907,05516.9%
Permissions-Policy434,8178.1%
X-XSS-Protection (deprecated)936,94017.4%

TLS

81.1% of servers answered over HTTPS at least once. lawa connects even when the certificate is bad, so here’s what was wrong. 2.1% of HTTPS servers would have failed in a browser.

certificate problemserversshare of HTTPS
wrong hostname51,0601.2%
unknown or incomplete issuer22,3450.5%
expired21,9780.5%
self‐signed9,6640.2%
protocolserversshare of HTTPS
TLSv1.34,067,24793.2%
TLSv1.2294,6006.8%
certificate authorityserversshare of HTTPS
Let's Encrypt2,466,24256.5%
Google Trust Services1,076,32924.7%
Sectigo Limited180,8504.1%
Amazon153,6273.5%
DigiCert Inc146,3233.4%
GoDaddy.com65,9581.5%
GlobalSign nv-sa55,9521.3%
ZeroSSL GmbH19,4580.4%

Other quirks

lawa speaks my handrolled HTTP/1.1 implementation and logs each header block as the raw bytes, so we can see some stuff that HTTP libraries usually clean up.

quirkserversshare
same header sent more than once1,107,72020.6%
every header name in lowercase290,2545.4%
answered HTTP/1.1 with HTTP/1.033,7550.6%
bare LF line endings (no CR)6390.0%
folded (multi‐line) header values3480.0%

The average response carried 15.1 header lines in 816Β bytes. In total, lawa has read 59.05Β GB of headers.

Status codes

statusresponsesshare
20055,141,38584.5%
3015,418,7348.3%
3021,546,9882.4%
4041,532,9422.4%
403666,8471.0%
308257,6890.4%
307205,6000.3%
429105,6850.2%

1,944 responses were 418 I'm a teapot, and 433 were 451 Unavailable For Legal Reasons. lawa asked for 10,906,931 robots.txt files and, because of what they said, left 2,220,596 pages alone. it walked away from 89,932 servers entirely because of 429, 503, or repeated 403s, and 531,535 linked‐to servers turned out not to exist any more.

Where the W3 is from

networkserversshare
Cloudflare, Inc.1,182,94622.3%
Amazon.com, Inc.642,74412.1%
Google LLC345,3716.5%
Squarespace, Inc.186,5823.5%
Fastly, Inc.168,0883.2%
Hetzner Online GmbH149,7232.8%
Cloudflare London, LLC122,9012.3%
OVH SAS122,7552.3%
IONOS SE99,0951.9%
Microsoft Corporation69,6821.3%
countryserversshare
United States1,804,46246.2%
Germany494,30712.7%
Canada241,4176.2%
Japan166,7264.3%
France153,6873.9%
United Kingdom130,3573.3%
The Netherlands122,7963.1%
Switzerland73,8171.9%
Italy52,9121.4%
Russia51,1671.3%

Countries leaves out the 1,473,935 servers behind Cloudflare and Fastly, because an anycast address is in every country at once. IP geolocation by DB-IP.

top‐level domainserversshare
.com2,452,25045.6%
.org521,0379.7%
.de298,4515.5%
.net171,9853.2%
.uk149,3382.8%
.jp118,9882.2%
.io115,8792.2%
.ch80,3771.5%
.fr80,0621.5%
.nl68,8571.3%

Non‐standard headers

headerserversshare
cf-ray1,402,65826.1%
cf-cache-status989,75918.4%
x-cache472,3898.8%
x-served-by302,1015.6%
x-request-id221,5264.1%
cf-edge-cache199,2243.7%
x-proxy-cache196,3163.7%
x-permitted-cross-domain-policies192,3563.6%
x-cache-hits190,1483.5%
x-contextid188,5113.5%
x-redirect-by179,5853.3%
x-timer178,2323.3%

1,309 servers (0.02%) send an Onion-Location header, which invites Tor Browser users to a .onion mirror of the site.

And of course, X-Clacks-Overhead. 8,952 servers send it:

X-Clacks-Overheadserversshare
GNU Terry Pratchett7,74586.5%
GNU Natalie Nguyen4825.4%
GNU Terry Pratchett, Stephen Hawking, Pr450.5%
GNU Terry Pratchett Going Postal180.2%
GNU Terry Pratchett, Douglas Adams, Step150.2%

record holders

recordvalueserver
slowest clock56.8Β years behindwww.ara.am
fastest clock136.0Β years aheadedventurebuilder.com
oldest Last-Modified1991-10-16quimby.gnus.org
biggest header block66,688Β byteswww.mydreamstable.com
most header lines918www.mydreamstable.com
most cookies in one response910www.mydreamstable.com
farthest from this site41 links awayfffestivals.com

29,436 pages claimed implausibly old Last-Modified (before the W3 existed, mostly 1970 (epoch fail!)) and 16,116 claimed one from the future; neither counts.

Details

lawa obeys robots.txt (its name there is β€œlawa”), waits at least ten seconds between requests to the same server, and takes at most 25 pages from any one. If it is bothering you, a robots.txt rule is honored within a day, and I read my email robin@dreamstation.systems regularly.

Figures cover 2026-09-20 05:43 UTC to 2026-10-30 12:08 UTC (447 data segments); the crawl is constantly running, and the newest ~45Β minutes are not in yet.