Koli.swf Official

And if you’re the person who originally made koli.swf —the one with the blue fish and the sad piano beeps—know that your little experiment survived. It made a stranger stop scrolling, smile, and remember a slower, weirder, Flash-powered internet.

koli.swf isn’t a great game. It’s barely a toy. But it’s a moment . It represents a time when making something “for the web” meant you could draw a blue fish, add a chiptune, and call it art. No login wall. No analytics. No algorithm. koli.swf

For anyone under 20, that extension might as well be hieroglyphics. But for those of us who grew up on Newgrounds, Albino Blacksheep, and Homestar Runner, opening a random .swf file feels like cracking open a time capsule. I double-clicked koli.swf expecting an error. But my old local Flash projector (bless its insecure, obsolete heart) fired up. And if you’re the person who originally made koli

The only metadata inside the file was a single string: "koli_2004_v3.swf" . Version 3. Meaning there were at least two earlier versions of this ghost swimming in the void. In 2024, Flash is officially dead. Browsers block it. Security patches buried it. But the internet’s soul from 2000–2010 was written in Flash. Tens of millions of tiny, weird, personal projects like koli.swf are now trapped on hard drives in landfills, or lingering on GeoCities archives that exist only as ZIP files on a server in Romania. It’s barely a toy

A black screen. Then, a single, pixelated blue fish appeared. It wasn’t animated. It just sat there, floating left, accompanied by the lowest-bitrate chiptune loop I’ve ever heard. After five seconds, the fish swam off the right edge. The screen went black again.

Every once in a while, you stumble across a file in an old backup folder that stops you cold. For me, that file was koli.swf .

I ran the file through a legacy decompiler (because I have no self-control). The timeline was a mess. The ActionScript 2.0 was amateur but earnest: a onEnterFrame function that moved the fish, a setInterval for the text, and a silent stop(); at the end.

{{ popup_title }}

{{ popup_close_text }}

x