", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "Tepix", "url": "https://news.ycombinator.com/user?id=Tepix"}}, {"@type": "Comment", "text": "Very cool. I wonder is it possible to make a simple game with also leveraging the webassembly?", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "bozdemir", "url": "https://news.ycombinator.com/user?id=bozdemir"}}, {"@type": "Comment", "text": "PNG has comment chunks tEXt, zTXt, and iTXt. You can have a completely normal image whose file is stuffed with as much content as you want. That is less fun, I suppose.", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "Walf", "url": "https://news.ycombinator.com/user?id=Walf"}}, {"@type": "Comment", "text": "I would have used a minimal service worker to unpack the web data and present it as if it were just a normal page being loaded.", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "beardyw", "url": "https://news.ycombinator.com/user?id=beardyw"}}, {"@type": "Comment", "text": "very cool and interesting after reading just the title I wrongly assumed this would be about svg", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "fitsumbelay", "url": "https://news.ycombinator.com/user?id=fitsumbelay"}}, {"@type": "Comment", "text": "Surprised that a minimal \"website\" only requires a small image = few pixels = few bytes to store it? Um, ok.", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "jibal", "url": "https://news.ycombinator.com/user?id=jibal"}}, {"@type": "Comment", "text": "Fascinating concept! Thanks for sharing this!", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "ab_wahab01", "url": "https://news.ycombinator.com/user?id=ab_wahab01"}}, {"@type": "Comment", "text": "I found the agressively staccato, clearly LLM-generated content extremely difficult to read.", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "esquivalience", "url": "https://news.ycombinator.com/user?id=esquivalience"}}, {"@type": "Comment", "text": "Would have been more fun if the blogpost was rendered from the favicon.", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "scoot", "url": "https://news.ycombinator.com/user?id=scoot"}}, {"@type": "Comment", "text": "Honestly it didn't interest me, but I do remember from back in the days full websites rendered by a browser from... Empty files. https://mathiasbynens.be/notes/css-without-html", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "soanvig", "url": "https://news.ycombinator.com/user?id=soanvig"}}, {"@type": "Comment", "text": "Is it cake? Game for devs.", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "neon_me", "url": "https://news.ycombinator.com/user?id=neon_me"}}, {"@type": "Comment", "text": "I'd imagine the (aggressive) caching of the favicon by browsers makes it a challenge, but you could generate the favicon dynamically, then have JS extract the sequentially. Basically streaming arbitraily large content to a webpage via favicons. Via blocks of 239 bytes. It may be a fun, novel way to proxy webpages that are otherwise blocked. Though, i guess, the service rendering the favicons can just as easily be blocked then.", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "berkes", "url": "https://news.ycombinator.com/user?id=berkes"}}, {"@type": "Comment", "text": "Love it. Did you see the old effort to store the page in the url? https://github.com/jstrieb/urlpages", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "tetrisgm", "url": "https://news.ycombinator.com/user?id=tetrisgm"}}, {"@type": "Comment", "text": "Fun Fact: You can use any inline SVG for a favicon and keep it right in the HTML document. This also allows you to use an emoji directly as a favicon, like so: (your emoji here)\" /> (HN isn't showing the emoji)", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "jorisw", "url": "https://news.ycombinator.com/user?id=jorisw"}}, {"@type": "Comment", "text": "Wait 'til the author discovers that you can use ping (ICMP) to transfer data, too! :)", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "Izmaki", "url": "https://news.ycombinator.com/user?id=Izmaki"}}, {"@type": "Comment", "text": "You can literally just use the file itself as the favicon. There is no need to over complicate it. cp index.html favicon.png", "datePublished": "2026-06-21T06:01:23Z", "author": {"@type": "Person", "name": "charcircuit", "url": "https://news.ycombinator.com/user?id=charcircuit"}}]
}
Pretty cool tbh!!! Would have loved seeing the decoder code!!! It's also pretty interesting to think how an attacker could exploit images on his behalf. Never thought that would be a way!!! Thanks!
franciscop
Is this timing coincidence? I just submitted 1h (30 mins before this) ago a website I just made about storing your stock porfolio in a URL + favicon! https://news.ycombinator.com/item?id=48606396
sheept
You can use the favicon cache as storage too, by redirecting users across domains. It's been proposed as a potential fingerprinting risk[0], and if a browser naively reuses the cache for incognito mode, it could be used to track users across browser profiles. [0]: https://www.schneier.com/blog/archives/2021/02/browser-track...
Tepix
Instead of going via pixels, why not use a SVG favicon and directly store markup inside it and extract it? Use this favicon.svg: <svg xmlns="http://www.w3.org/2000/svg"> <circle cx="50%" cy="50%" r="50%" fill="orange"/> <p>hello HN!</p> </svg> use this in your <head> to use a svg favicon: <link id="favicon" rel="icon" href="favicon.svg" type="image/svg+xml"> finally, use this in your <body> to extract it and add it to your document body: <script> fetch(favicon.href).then(r => r.text()).then(t => document.body.innerHTML += t.match(/<p[\s\S]*p>/)[0]); </script>
bozdemir
Very cool. I wonder is it possible to make a simple game with also leveraging the webassembly?
Walf
PNG has comment chunks tEXt, zTXt, and iTXt. You can have a completely normal image whose file is stuffed with as much content as you want. That is less fun, I suppose.
beardyw
I would have used a minimal service worker to unpack the web data and present it as if it were just a normal page being loaded.
fitsumbelay
very cool and interesting after reading just the title I wrongly assumed this would be about svg
jibal
Surprised that a minimal "website" only requires a small image = few pixels = few bytes to store it? Um, ok.
ab_wahab01
Fascinating concept! Thanks for sharing this!
esquivalience
I found the agressively staccato, clearly LLM-generated content extremely difficult to read.
scoot
Would have been more fun if the blogpost was rendered from the favicon.
soanvig
Honestly it didn't interest me, but I do remember from back in the days full websites rendered by a browser from... Empty files. https://mathiasbynens.be/notes/css-without-html
neon_me
Is it cake? Game for devs.
berkes
I'd imagine the (aggressive) caching of the favicon by browsers makes it a challenge, but you could generate the favicon dynamically, then have JS extract the sequentially. Basically streaming arbitraily large content to a webpage via favicons. Via blocks of 239 bytes. It may be a fun, novel way to proxy webpages that are otherwise blocked. Though, i guess, the service rendering the favicons can just as easily be blocked then.
tetrisgm
Love it. Did you see the old effort to store the page in the url? https://github.com/jstrieb/urlpages
jorisw
Fun Fact: You can use any inline SVG for a favicon and keep it right in the HTML document. This also allows you to use an emoji directly as a favicon, like so: <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>(your emoji here)</text></svg>" /> (HN isn't showing the emoji)
Izmaki
Wait 'til the author discovers that you can use ping (ICMP) to transfer data, too! :)
charcircuit
You can literally just use the file itself as the favicon. There is no need to over complicate it. cp index.html favicon.png
Related Discussions
Found 5 related stories in 104.3ms across 11,093 title embeddings via pgvector HNSW
Pong in S Favicontheanonymousone · 34 pts · June 20, 2026 · 53% similar
Discussion Highlights (19 comments)
superjose
Pretty cool tbh!!! Would have loved seeing the decoder code!!! It's also pretty interesting to think how an attacker could exploit images on his behalf. Never thought that would be a way!!! Thanks!
franciscop
Is this timing coincidence? I just submitted 1h (30 mins before this) ago a website I just made about storing your stock porfolio in a URL + favicon! https://news.ycombinator.com/item?id=48606396
sheept
You can use the favicon cache as storage too, by redirecting users across domains. It's been proposed as a potential fingerprinting risk[0], and if a browser naively reuses the cache for incognito mode, it could be used to track users across browser profiles. [0]: https://www.schneier.com/blog/archives/2021/02/browser-track...
Tepix
Instead of going via pixels, why not use a SVG favicon and directly store markup inside it and extract it? Use this favicon.svg: <svg xmlns="http://www.w3.org/2000/svg"> <circle cx="50%" cy="50%" r="50%" fill="orange"/> <p>hello HN!</p> </svg> use this in your <head> to use a svg favicon: <link id="favicon" rel="icon" href="favicon.svg" type="image/svg+xml"> finally, use this in your <body> to extract it and add it to your document body: <script> fetch(favicon.href).then(r => r.text()).then(t => document.body.innerHTML += t.match(/<p[\s\S]*p>/)[0]); </script>
bozdemir
Very cool. I wonder is it possible to make a simple game with also leveraging the webassembly?
Walf
PNG has comment chunks tEXt, zTXt, and iTXt. You can have a completely normal image whose file is stuffed with as much content as you want. That is less fun, I suppose.
beardyw
I would have used a minimal service worker to unpack the web data and present it as if it were just a normal page being loaded.
fitsumbelay
very cool and interesting after reading just the title I wrongly assumed this would be about svg
jibal
Surprised that a minimal "website" only requires a small image = few pixels = few bytes to store it? Um, ok.
ab_wahab01
Fascinating concept! Thanks for sharing this!
esquivalience
I found the agressively staccato, clearly LLM-generated content extremely difficult to read.
scoot
Would have been more fun if the blogpost was rendered from the favicon.
soanvig
Honestly it didn't interest me, but I do remember from back in the days full websites rendered by a browser from... Empty files. https://mathiasbynens.be/notes/css-without-html
neon_me
Is it cake? Game for devs.
berkes
I'd imagine the (aggressive) caching of the favicon by browsers makes it a challenge, but you could generate the favicon dynamically, then have JS extract the sequentially. Basically streaming arbitraily large content to a webpage via favicons. Via blocks of 239 bytes. It may be a fun, novel way to proxy webpages that are otherwise blocked. Though, i guess, the service rendering the favicons can just as easily be blocked then.
tetrisgm
Love it. Did you see the old effort to store the page in the url? https://github.com/jstrieb/urlpages
jorisw
Fun Fact: You can use any inline SVG for a favicon and keep it right in the HTML document. This also allows you to use an emoji directly as a favicon, like so: <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>(your emoji here)</text></svg>" /> (HN isn't showing the emoji)
Izmaki
Wait 'til the author discovers that you can use ping (ICMP) to transfer data, too! :)
charcircuit
You can literally just use the file itself as the favicon. There is no need to over complicate it. cp index.html favicon.png