IOCCC 2025: 23 Winning Entries, 3 Three-Peats, and a 366-Byte Linux Emulator
The 29th International Obfuscated C Code Contest (IOCCC) results are out, and this year's crop of 23 winners pushes the boundaries of what's possible in tiny, unreadable C code. Three entrants—Yusuke Endoh, Nick Craig-Wood, and Don Yang—each snagged three wins. Here are the standouts.
Best Imaginary Emulator: 366 Bytes, Runs Linux
Adrian Cable's winning entry is a Subleq (subtract and branch if less than or equal to zero) computer emulator in just 366 bytes of C code. Subleq is a One Instruction Set Computer (OISC) – the ultimate RISC: one instruction, period. The Eternal Software Initiative (ESI) uses Subleq for software preservation, providing a minimal architecture that's trivial to emulate. Cable's implementation depends on SDL3 for graphics, but the core is astonishingly small:
#include #define o s[1&s[t=e++]?s[t]/4:t]/4,t b,y,t,e,s[3<<27],V[32],*w,**g;main(_){for(g =SDL_GetWindowSurface(w=SDL_CreateWindow(0, 800,512,!read(b,s,'frog')));_=o=y=o=o;~_?~y ?e=1>(s[y]-=_[s])?t:*s&&++b>8e5?s[memcpy(3[ g],6[s]+s,25<<16),b=SDL_UpdateWindowSurface (w)]=4*e,*s/4:e:e:SDL_PollEvent(V)?y[s]=6[V ]*(1537-2**V):0)_^64||timespec_get(s+_,1);}
That's the entire emulator. It displays a Mandelbrot set in color, plays Pong, and boots Linux with apps. A slightly more readable version is 91 lines. Hand-writeable on a postcard.
Best Real Emulator: 66-Line Game Boy
Nick Craig-Wood delivered a working Nintendo Game Boy emulator in 66 lines of C, formatted to look like the console. His other wins: a Commodore 64 emulator in John Conway's FRACTRAN language (Best Fractional Emulator) and a Unicode Forth that renders a spinning Mandelbrot zoom (Best Use of Unicode).
Most Likely to Dazzle: Nixie Tube Simulator
Yusuke Endoh's Nixie tube simulator formats its source code to look like the tubes, then highlights digits in the source itself to simulate output. The source code is the output mechanism. Another Endoh entry generates Lichtenberg figures (electrical discharge patterns) in minimal space. His third entry patches itself, rebuilds, and outputs the diff tool's source code. That's his record 23rd IOCCC win.
Most Soothing: 36 Lines of Ambient Music
Tomoya Ishida's entry generates a WAV file containing a five-minute ambient tune with synthetic seashore sounds. The source code contains the message "RELAX." Total: 36 lines.
Ping Pong Prize: Quine Game
Jonah Uellenberg's Pong game is a quine – a program that outputs its own source code. But it goes further: the source code is formatted to show a Pong screen (two paddles, ball) in whitespace. Compile and run, move a paddle, and it outputs a new version of itself with the updated game state. You play by repeatedly compiling the output. The game frames are its own changing source code.
More Highlights
- Most likely to teleport: A roguelike game in 54 lines.
- Who won: A TARDIS-looking program that outputs an ASCII-animated Doctor Who title sequence.
- Consistently constant: Gil Dogon outputs many digits of Euler's constant using a single variable named
e. Both judges and entrant explain in verse. - Most likely to invade: A tiny but playable game reminiscent of 1980s 'innocent-looking' work-safe games.
Why This Matters
The IOCCC isn't just a joke contest. These entries demonstrate extreme optimization, creative use of compiler features, and deep understanding of C's edge cases. The Subleq emulator, for instance, has real-world applications in software preservation – running legacy software on a minimal, emulatable architecture. For developers, studying obfuscated code sharpens skills in reading and writing terse, efficient C, and reveals hidden corners of the language.
The full list of winners and source code is available on the IOCCC website. The judging video (nearly 3 hours) is on YouTube. Go read the winning entries – they're worth your time.

