frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

Open in hackernews

I Stored a Website in a Favicon

https://www.timwehrle.de/blog/i-stored-a-website-in-a-favicon/
101•theanonymousone•3h ago

Comments

superjose•3h ago
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!

schobi•2h ago
I guess the decoder is more than the 208 bytes that this page uses..

But maybe you can misuse this and store a session ID / cookie in a favicon (give everyone a unique one) and survive some cookie cleanup and evade privacy restrictions?

Maybe you can still make it that the favicon looks like an image a little to not raise suspicion?

Favicons seem to be cached across private browsing sessions. Oh no

franciscop•2h ago
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•2h ago
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...

koolala•2h ago
Wasn't this fixed or mostly fixed?
Tepix•2h ago
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>
weetii•2h ago
Hey, yeah, I wrote the article. This (of course) would be more practical. Thanks for pointing it out. I wanted the payload to "live" in actual pixel data rather than hidden text inside an XML file. That’s why I went this way :)
peter-m80•2h ago
The ico file format allows multiple resolution icons, so a lot of data
weetii•1h ago
Good point, I might add a section in the article where I list alternative approaches. Thanks
berkes•22m ago
An SVG can embed raster images: base64 encoded bytes.

So you could layer this experiment: favicon is svg, that contains encoded raster, whose bytes are encoded html.

At the very least it would make a mindboggling CTF step.

bozdemir•2h ago
Very cool. I wonder is it possible to make a simple game with also leveraging the webassembly?
weetii•1h ago
Yes, probably. I guess, you’d need a bigger favicon since the minimal Rust WASM binary is around 20KB+ (?)
alex_suzuki•1h ago
You might find my tinkering useful: https://strich.io/blog/posts/embedding-webassembly-in-qrcode... A QR code isn’t much different from a favicon I guess. :)
laladrik•1h ago
The link is 404
Walf•2h ago
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.
weetii•2h ago
Yes, that would also work, thanks for pointing it out
shaharamir•2h ago
Amazing!
beardyw•2h ago
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•2h ago
very cool and interesting after reading just the title I wrongly assumed this would be about svg
jibal•1h ago
Surprised that a minimal "website" only requires a small image = few pixels = few bytes to store it? Um, ok.
ab_wahab01•1h ago
Fascinating concept! Thanks for sharing this!
esquivalience•1h ago
I found the agressively staccato, clearly LLM-generated content extremely difficult to read.
estetlinus•1h ago
It’s the new internet. So, so annoying.
scottmcdot•1h ago
Which bit? The short sentences?
noduerme•1h ago
Yeah, but it's kinda weird. The typical LLM headers and bullet points are there, but it's like someone took an axe to the rest of the spew. I too would rather read someone's original bad writing than their bad editing of AI writing, but it's kinda interesting how this all shakes out.
bartvk•1h ago
I wish people would include their prompts.
bstsb•35m ago
for the first time in a while on HN, i disagree with the characterisation as AI-generated. at most it was drafted with an LLM, but the final output is pretty human to me.

they used the wrong it’s/its, made But. its own one-word sentence, didn’t capitalise HTML, and used “okayy” in parenthesis. all of this isn’t to criticise the writer - i enjoyed it more seeing these little imperfections that make up a blog post

scoot•1h ago
Would have been more fun if the blogpost was rendered from the favicon.
soanvig•1h ago
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•53m ago
Is it cake? Game for devs.
berkes•16m ago
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•10m ago
Love it. Did you see the old effort to store the page in the url? https://github.com/jstrieb/urlpages
jorisw•8m ago
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)

I Stored a Website in a Favicon

https://www.timwehrle.de/blog/i-stored-a-website-in-a-favicon/
102•theanonymousone•3h ago•33 comments

Data Compression Explained (2012)

https://mattmahoney.net/dc/dce.html
111•mtdewcmu•3d ago•13 comments

Where to Find the Colors Your Screen Can't Show You

https://moultano.wordpress.com/2026/06/19/where-to-find-the-colors-your-screen-cant-show-you/
87•moultano•5h ago•20 comments

There are no instances in ATProto

https://overreacted.io/there-are-no-instances-in-atproto/
432•danabramov•17h ago•225 comments

Can you see three trees?

https://www.not-ship.com/can-you-see-three-trees/
99•Pamar•2d ago•36 comments

The discovery that changed how scientists think about memory

https://www.ibm.com/think/news/discovery-changed-how-scientists-think-about-memory-kavli-prize
49•rbanffy•2d ago•11 comments

Surprising economics of load-balanced systems

https://brooker.co.za/blog/2020/08/06/erlang.html
106•KraftyOne•12h ago•24 comments

Hyundai buys Boston Dynamics

https://startupfortune.com/hyundai-takes-full-control-of-boston-dynamics-as-softbank-exits-for-32...
807•ck2•16h ago•356 comments

How many of the 170k English words do you know?

https://vocabowl-870366514258.us-west1.run.app/
359•abnry•19h ago•445 comments

Mental causation is not load-bearing

https://unstableontology.com/2026/06/07/mental-causation-is-not-load-bearing/
4•surprisetalk•3d ago•1 comments

Norway imposes near ban on AI in elementary school

https://www.reuters.com/technology/norway-imposes-near-ban-ai-elementary-school-2026-06-19/
646•ilreb•16h ago•441 comments

Project Valhalla, Explained: How a Decade of Work Arrives in JDK 28

https://www.jvm-weekly.com/p/project-valhalla-explained-how-a
590•philonoist•1d ago•364 comments

Satellite reveals immense scale of GPS signal tampering

https://www.space.com/space-exploration/satellites/its-quite-a-bit-more-than-we-expected-satellit...
70•y1n0•4h ago•21 comments

GPT-5.5 hallucinates 3x more than MIT-licensed GLM-5.2

https://arrowtsx.dev/bigger-models/
124•oshrimpton•16h ago•29 comments

Bobby Prince, composer for Doom, Wolfenstein 3D, and Duke Nukem 3D, has died

https://www.legacy.com/legacy/robert-bobby-prince-lll
356•pgrote•13h ago•39 comments

Soccer Arcade Games Through the Years

https://arcadeheroes.com/2026/06/13/world-cup-2026-soccer-arcade/
13•speckx•3d ago•2 comments

A 1969 camera operators' strike created Upstairs Downstairs multiverse

https://ironicsans.ghost.io/the-color-strike/
15•ohjeez•3d ago•1 comments

A Perceptron in Age of Empires II

https://adewynter.github.io/notes/aoe2-circuits
70•EvgeniyZh•2d ago•31 comments

Egyptian Fractions (2006)

https://blog.plover.com/math/egyptian-fractions.html
93•luu•4d ago•7 comments

AURpocalypse now: a look at the recent AUR attacks

https://lwn.net/SubscriberLink/1077619/f7b07c5489fdd43a/
78•jwilk•15h ago•50 comments

Ask HN: Will programmers write more efficient code during the memory shortage?

98•amichail•10h ago•164 comments

Designing a backyard deck for my house

https://blog.cosmin.cloud/posts/diy-deck.html
12•spycraft•4h ago•4 comments

John Jumper to join Anthropic

https://twitter.com/JohnJumperSci/status/2068001285173834106
124•artninja1988•15h ago•94 comments

Digital Printing of Arabic: explaining the problem

https://digitalorientalist.com/2017/08/21/digital-printing-of-arabic-explaining-the-problem/
52•a_t48•3d ago•19 comments

Court Records Should Be Free

https://www.eff.org/deeplinks/2026/06/court-records-should-be-free
359•hn_acker•15h ago•77 comments

Zen and the Art of Machine Learning Research

https://blog.jxmo.io/p/zen-and-the-art-of-machine-learning
256•jxmorris12•4d ago•92 comments

Building a robotics research setup that lives next to my desk

https://dfdxlabs.com/research/2026/robotics-setup/
147•mplappert•1d ago•51 comments

Telescope Ranchers

https://kottke.org/26/06/telescope-ranchers
123•bookofjoe•3d ago•46 comments

Big Banana Car

https://bigbananacar.com/
149•Bender•14h ago•76 comments

Show HN: Metiq: a real time 3D globe for 100 public datasets

https://metiq.space
120•rakeda•3d ago•32 comments