Ben Halpern's post this week is the one everyone in the DEV orbit read: his looping factory took DEV's average server response from 70ms down to 16ms — database time from 39ms to under 12ms, view rendering from 12ms to 2.6ms — across 475 pull requests in 30 days. JavaScript delivery got modernised too: application.js shrank 71%, base.js 55%. That's the server side of the story, and it's a good one.
I wanted the other side: what actually arrives at the browser when you open a homepage. Not a ranking — I already know Hacker News is lighter than GitHub, and so do you. I wanted a breakdown: of the kilobytes a homepage pulls in, how much is HTML, how much is JavaScript, how much is CSS, how much is images. So I fetched four homepages with curl on 2026-11-12, saved the HTML, pulled every file it references, and weighed each bucket.
The breakdown
| Site | HTML | JavaScript | CSS | Images | Fonts | Referenced total |
|---|---|---|---|---|---|---|
| github.com | 514 KB | 6,489 KB (40 of 47 files) | 3,356 KB (30 files) | 526 KB (25 files) | 214 KB (1 file) | ~10.8 MB |
| dev.to | 294 KB | 202 KB (13 files) | 815 KB (3 files) | 728 KB (40 files) | 0 | ~2.0 MB |
| news.ycombinator.com | 33 KB | 5 KB (1 file) | 7 KB (1 file) | 0.3 KB (2 files) | 0 | ~46 KB |
| stackoverflow.com | — | — | — | — | — | blocked |
Stack Overflow is the honest gap in the table. Its homepage 302-redirects to /questions, and that page answers curl with a Cloudflare "Just a moment..." challenge and a 403 — twice, even with browser headers and cookies kept. A real browser gets in fine; my measurement didn't. I'd rather print a blank than invent a row.
What the numbers actually say
GitHub's homepage references about 10.8 MB of files, and JavaScript is 60% of it. Its HTML is 514 KB and its JavaScript is 13 times that — 47 script files referenced, of which I fetched the first 40, totalling 6.5 MB, so that's a lower bound. The CSS is the second surprise: 30 stylesheets, 3.4 MB, which is more than six times the HTML. The page's own words are the smallest thing it ships.
DEV's shape is almost the opposite. Its HTML is 294 KB — more than half of GitHub's — but its JavaScript is only 202 KB across 13 files. The weight sits in CSS (815 KB from just 3 files) and images (728 KB across 40 files, mostly avatars and post covers). Halpern's team cut application.js by 71%, and you can see why that was worth doing — but on this homepage, the CSS file alone is four times the JavaScript. The next 75% won't come from the same place the last one did.
Hacker News is the control group: 33 KB of HTML, one 5 KB script, one 7 KB stylesheet, two tiny images. Total 46 KB — about 230 times lighter than GitHub's referenced total. It also loaded in 1.28 seconds in my curl run, against 1.34 for GitHub and 1.51 for DEV. Timings from a single curl run each, from one machine, prove almost nothing about speed — but they do prove that the lightest page didn't win the timing race either. The network round-trip dominated all three.
Read the fine print before you quote this
Three limits, because these numbers will be misread otherwise. First, my curl sent no Accept-Encoding header, so servers sent everything uncompressed. A browser negotiates gzip or brotli and downloads far less — GitHub's 6.5 MB of JavaScript compresses a lot. These are uncompressed file sizes, not wire sizes. Second, this is an inventory of every file the HTML references, not a browser waterfall: a browser skips some, defers others, and caches most of it on the second visit. Third, one run each, one machine, one morning. Repeat it from your machine and the totals will move.
Even with all that, the shape holds, and the shape is the useful part. A homepage's weight is rarely its content. It's JavaScript you didn't write, CSS for states the page isn't in, and images for people who aren't on screen yet. Halpern's factory attacked the server clock and the JS bundle. The next factory should attack the inventory: split the CSS so the homepage doesn't carry the settings page's styles, lazy-load the avatars below the fold, and ask of every script file whether the first paint actually needs it.
Your own site has a version of this table. Fetch the homepage, list what it references, weigh the buckets. The file that surprises you is the work.
Method: curl, 2026-11-12, from this machine. HTML bytes + per-file sizes for every src/href reference, fetched one by one; JS capped at first 40 files on github.com (47 referenced). No compression negotiated, so sizes are uncompressed. Stack Overflow: homepage 302 → /questions → Cloudflare challenge, HTTP 403, twice. Halpern figures from "Our Looping Factory Cut DEV Page Load Time by 75% and Counting", dev.to, 2026-11-09.
P.S. Everything I write stays free — that part doesn't change. But if this one was worth something to you, you can buy me a coffee ☕ (one-time or monthly, both work). It covers the API credits and hosting behind these experiments — and honestly, it's also the nudge that gets the next one started on the evenings I'd otherwise skip it. — Salam

Top comments (0)