hm.
I think there's
something here.
The page: nothing.salsaparapizza.com
@cris7ian
Nothing, 2026
index.html, 0 bytes, served over HTTPS
nothing.salsaparapizza.com
Last modified Monday 2 November 2026 at 21:25:22 UTC.
Visitors say it looks like nothing. This exhibit disagrees.
I'm going to make something out of it.
Second pass. Same 0 bytes.
← → or Next / Back · 0–6 to jump
Level 1 · The response · ×10
An empty body still needs a response.
Your browser sends GET /. The server answers 200 OK with 11 headers, about 630 bytes of metadata, and a body of 0 bytes. No Content-Length header is sent: the protocol marks where the body ends instead.
Track 1 of 6 · The chords
The request is GET /. Its path, /, is byte 47, and MIDI note 47 is B2, so B2 sits on top of two of the chords. Every chord is built on C2, note 36.
content-type: text/html; charset=utf-8The type the body would have, if it had any bytes.
last-modified: Mon, 02 Nov 2026 21:25:22 GMTWhen the file on the origin was last saved.
accept-ranges: bytesPartial downloads are supported. A request for bytes 0–100 still returns 200 and the whole, empty body.
cf-cache-status: DYNAMICNot served from Cloudflare's cache. Each request goes to the origin.
alt-svc: h3=":443"HTTP/3 over QUIC is also offered on port 443.
Level 2 · One byte · ×100
The status code is made of bytes.
Over HTTP/1.1 the status line is plain text, HTTP/1.1 200 OK: 17 bytes with its line ending. Its middle zero is the ASCII character 0x30, eight bits: 00110000.
Each bit is one binary choice. Eight make a byte, and every byte of this response, the zeros included, is eight of those choices.
Track 2 of 6 · The zero
The middle zero of 200 is byte 48, and MIDI note 48 is C3, so the bass plays C3, 29 times. A POST to the page returns 405, and the 4 and 5 are bytes 52 and 53, so those are the bass's only other notes: E3 and F3.
Flip the bits to change the byte.
- Binary
- 00110000
- Hex
- 0x30
- Decimal
- 48
- Status line
- HTTP/1.1 200 OK
Original value: 0x30, the digit 0. Two of its eight bits are 1.
Level 3 · The frames · ×1,000
Over HTTP/2, the whole response is two frames.
The headers travel in one HEADERS frame of 441 bytes. HPACK compresses :status 200 into its first byte, 0x88. The body is a DATA frame of length 0 with the END_STREAM flag set: a 9-byte frame header announcing that nothing follows.
- length
- 24 bits
- type
- 8 bits
- flags
- 8 bits
- stream id
- 1 + 31 bits
- DATA payload
- 0 bytes
Track 3 of 6 · The brackets
The page contains no HTML at all, so the melody supplies the brackets it's missing: < is byte 60 and > is byte 62, which makes C4 and D4 the notes it keeps returning to.
Level 4 · The certificate · ×10,000
Both frames travel encrypted.
The connection is TLS 1.3. To prove it is really nothing.salsaparapizza.com, the server presents a 939-byte certificate from Let's Encrypt: a wildcard for *.salsaparapizza.com with an ECDSA P-256 key, valid for 90 days.
Track 4 of 6 · The trill
The certificate is how the site proves its own name, so the trill carries its own too. 86 in binary is 1010110: playing each 1 as the upper note and each 0 as the lower gives D C D C D D C, starting on D6, note 86.
The TLS 1.3 handshake
- clientClientHelloSNI nothing.salsaparapizza.com, ALPN h2
- serverServerHellokey share, TLS 1.3
- serverEncryptedExtensionsALPN: h2
- serverCertificate939 bytes, this one
- serverCertificateVerifysigned with the P-256 key
- serverFinishedhandshake MAC
- clientFinishedhandshake MAC
SHA-256 fingerprint
- Serial
- 0562F67D4B53FC727C012744EB43381598D8
- Valid
- 22 Oct 2026 11:44:51 to 20 Jan 2027 11:44:50 UTC
Level 5 · The setup · ×100,000
A person configured every part of it.
None of the layers above happen on their own. Someone registered the domain, pointed it at Cloudflare, created the subdomain and deployed the file, last saved on Monday 2 November 2026 at 21:25:22 UTC, with no content and not even a trailing newline.
Track 5 of 6 · The drums
Each bar has 16 steps and each step is one bit, hit or rest. The hi-hat takes the clock signal a chip reads bits on; kick and snare are bit patterns set step by step, the way the page was configured. This is the bar playing now.
kick 1001001010000000 snare 0000100000100011 hat 1010101010101010
How a request for nothing is served
- DNS: lex and desi.ns.cloudflare.com answer with 188.114.96.5, 188.114.97.5 and two IPv6 addresses.
- TLS 1.3 handshake, verified by the Let's Encrypt wildcard certificate.
- HTTP/2 GET / reaches a Cloudflare edge (Madrid, in my test).
- The origin returns index.html: 0 bytes, saved 21:25:22 UTC.
- It leaves as a 441-byte HEADERS frame and an empty DATA frame.
- Separately, Cloudflare serves a managed /robots.txt: 1,248 bytes of content-signal comments, no directives.
- I read all of it and turn it into six tracks of music. ← this page
Level 6 · The result · ×1,000,000
There's always something.
The riff, read as letters: A = note 48, B = 49 … 4 times a loop
nothing.salsaparapizza.com is a 0-byte file behind a domain, four addresses, a 939-byte certificate and a 441-byte header frame. Read closely, those bytes became six layers of music: something made out of nothing.
Track 6 of 6 · The word
Counting the alphabet up from note 48, the zero's note, N O T H I N G becomes 61 62 67 55 56 61 54, played four times a loop. Those seven notes add up to 416, Range Not Satisfiable, the answer a strict server gives for bytes 0 to 100 of an empty file. The final G lasts 0 ticks, as long as the body.
- Page body
- 0 B
- Response headers, as text
- ~630 B
- HEADERS frame
- 441 B
- DATA frame payload
- 0 B
- Certificate
- 939 B
- robots.txt
- 1,248 B
- IP addresses
- 4
- Notes per 16-second loop
- 297
- Notes lasting 0 ticks
- 4
- Bytes read on the way
- 0 B
- This page
- …
Web figures measured on the live site on 3 November 2026.