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
pace2,694 requests in the last minute
servers visited280,943 finished, 1,217 in progress
servers waiting in line1,691,003
responses studied below4,081,057 from 277,889 servers
numbers as of2026-09-21 07:00 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
cloudflare78,73528.3%
nginx45,59316.4%
apache43,47915.6%
(none)26,9839.7%
github.com14,6295.3%
vercel6,6462.4%
litespeed6,0802.2%
squarespace5,3731.9%
netlify4,8621.7%
gse4,6471.7%

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

X-Powered-Byserversshare of those sending it
php 87,47127.5%
next.js4,10615.1%
asp.net2,83210.4%
php 72,6689.8%
express2,3568.7%
php 51,2214.5%
wp engine1,2084.5%
plesklin7992.9%

Bad time

A Date only has one‐second resolution and the network adds delay, so β€œon time” means β€œwithin about 2Β seconds”.

server clockserversshare
on time235,66798.4%
up to 10Β seconds off1,0890.5%
10Β seconds to a minute9330.4%
a minute to an hour1,4730.6%
an hour to a day1990.1%
more than a day760.0%

Of the 3,770 wrong clocks, 2,551 run slow and 1,219 run fast. 44 are wrong by a whole number of hours, which is likely timezone problems rather than drift. 2,224 servers sent no Date at all, and 109 sent malformed Dates.

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

Security headers

headerserversshare
HSTS (share of HTTPS servers)105,63044.1%
X-Content-Type-Options116,10041.8%
X-Frame-Options88,73731.9%
Content-Security-Policy65,50423.6%
Referrer-Policy61,82122.2%
Permissions-Policy29,23510.5%
X-XSS-Protection (deprecated)50,61718.2%

TLS

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

certificate problemserversshare of HTTPS
wrong hostname1,8370.8%
unknown or incomplete issuer9830.4%
expired8090.3%
self‐signed2940.1%
protocolserversshare of HTTPS
TLSv1.3223,73093.4%
TLSv1.215,9036.6%
certificate authorityserversshare of HTTPS
Let's Encrypt126,26752.7%
Google Trust Services64,78227.0%
Amazon13,1645.5%
DigiCert Inc10,6744.5%
Sectigo Limited7,7033.2%
GlobalSign nv-sa3,6411.5%
GoDaddy.com1,9190.8%
Hellenic Academic and Research1,4530.6%

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 once56,98020.5%
every header name in lowercase11,8874.3%
answered HTTP/1.1 with HTTP/1.02,4150.9%
bare LF line endings (no CR)480.0%
folded (multi‐line) header values240.0%

The average response carried 15.9 header lines in 890Β bytes. In total, lawa has read 3.63Β GB of headers.

Status codes

statusresponsesshare
2003,084,90182.9%
301356,0029.6%
30288,5322.4%
40476,9532.1%
40346,3841.2%
30828,9780.8%
30716,1320.4%
4014,3220.1%

210 responses were 418 I'm a teapot, and 43 were 451 Unavailable For Legal Reasons. lawa asked for 523,392 robots.txt files and, because of what they said, left 114,078 pages alone. it walked away from 6,374 servers entirely because of 429, 503, or repeated 403s, and 15,056 linked‐to servers turned out not to exist any more.

Where the W3 is from

networkserversshare
Cloudflare, Inc.69,41325.0%
Amazon.com, Inc.39,77914.3%
Fastly, Inc.20,8177.5%
Google LLC12,7584.6%
Hetzner Online GmbH9,7393.5%
Cloudflare London, LLC7,7842.8%
OVH SAS5,4802.0%
Squarespace, Inc.5,3681.9%
Akamai Technologies, Inc.4,9171.8%
DigitalOcean, LLC4,6851.7%
countryserversshare
United States99,78355.5%
Germany21,55212.0%
France7,3594.1%
Canada7,3104.1%
United Kingdom6,0563.4%
The Netherlands5,5973.1%
Japan3,5492.0%
Switzerland2,4821.4%
Finland2,3401.3%
Russia1,5960.9%

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

top‐level domainserversshare
.com120,41343.3%
.org36,19413.0%
.io13,9665.0%
.net12,3734.5%
.de9,7833.5%
.uk5,6932.0%
.dev3,3881.2%
.fr3,3631.2%
.jp3,2831.2%
.ca2,9371.1%

Non‐standard headers

headerserversshare
cf-ray79,09528.5%
cf-cache-status55,02119.8%
x-cache42,64915.3%
x-served-by26,2239.4%
x-cache-hits23,0358.3%
x-timer22,4158.1%
x-proxy-cache17,2676.2%
x-github-edge-region16,4125.9%
x-github-request-id16,4125.9%
x-fastly-request-id16,0135.8%
x-request-id12,9624.7%
x-amz-cf-pop11,2274.0%

And of course, X-Clacks-Overhead. 1,437 servers send it:

X-Clacks-Overheadserversshare
GNU Terry Pratchett1,17081.4%
GNU Natalie Nguyen1248.6%
GNU Lynn Conway, Kathryn Jeannette Wilso110.8%
Terry Pratchett, Noirin Trouble Pluincei90.6%
GNU Terry Pratchett, Zac Blaine Montgome60.4%

record holders

recordvalueserver
slowest clock44.8Β years behindpdp2011.sytse.net
fastest clock160Β days aheadzinascii.com
oldest Last-Modified1991-10-18code.jquery.com
biggest header block42,345Β byteswww.homevideostudio.com
most header lines225academyit.ru
most cookies in one response210academyit.ru
farthest from this site33 links awaymarkojs-tutorial.netlify.app

2,106 pages claimed implausibly old Last-Modified (before the W3 existed, mostly 1970 (epoch fail!)) and 758 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-09-21 05:51 UTC (26 data segments); the crawl is constantly running, and the newest ~45Β minutes are not in yet.