Can you fit a whole game into a QR code?

MattKC · 9M views · 2020 · 20:03

Open on YouTube

Demoscene & retrocomputingSoftware performance & optimizationSecurity & hackingdemo

Why Hacker News recommends it

HN admires it as a creative hack and cites it as the inspiration for later tiny-game and QR-code projects.

What it is

MattKC fits a playable Snake game into a QR code by writing tiny x86 machine code and patching the ZBar scanner so it can run the decoded data.

Recommended by 2 HN commenters across 2 different months, 2020 to 2025.

What Hacker News said

Strong rec redbell · 2022-07 · on “Embedding an EXE inside a .REG file with automatic execution”

I admire this type of content where the creator take some concepts we [all] use and understand then combine them in a specific, but a new way, add some tweaks to get some never-seen results. Here is another experience that, as a Windows developer, blows my mind for a while. [this video]

Recommends fath0m · 2020-11 · on “Flappy Bird in 228 bytes”

Using all the browser functionality feels like cheating. There is a good YouTube video, where a person made a snake game that fits inside a QR Code (albeit a larger version that we're used to, which can hold up to 2953 bytes). You can check it out here: [this video] Quite an interesting watch.

Cites matheusmoreira · 2020-08 · on “US indictments of piracy group members throw top-tier piracy world into chaos”

Video games in QR codes? That's interesting. Do you have the link to the video? Is it this one? [this video] [LINK] If so, then the patch he submitted builds upon my work! He fixed a line feed conversion bug that was present in Windows. I use Linux so I did not experience this issue. I remember seeing that patch get merged but I didn't know about the whole video game context. This is amazing. I wrote the patch because I was trying to print a 4096 bit RSA secret key as a QR code. Awesome to see it getting used for something even more awesome. Here are the links to my contributions and related pages: [LINK] [LINK] [LINK] [LINK] [LINK] [LINK] [LINK] ZBar used to automatically convert binary data to

Cites matheusmoreira · 2022-04 · on “Ask HN: What's the most stable form of digital storage?”

Paper. It's proven technology: written records last hundreds of years. You can easily encode arbitrary data as 8 bit mode QR codes and print them out. This gives you machine readability and error correction. Data density is not that good but it's very effective, especially for small amounts of data. I wrote some binary decoding patches for ZBar for this exact use case. You can, for example, store video games in a QR code: [this video]

Cites askiiart · 2024-01 · on “Building a self-contained game in C# under 2 kilobytes”

In a similar vein, there's Can you fit a whole game into a QR code? by MattKC, which is limited to about 3 kilobytes (2,953 bytes) [this video]

Cites redbell · 2025-04 · on “Show HN: I made a Doom-like game fit inside a QR code”

Really cool project! TIL about 'data:' URLs—while I was familiar with the 'data:' URI scheme and had used it before, I didn’t realize it could be used as a full URL. Funny enough, I had been thinking about building something similar that fits entirely within a QR code, but I held off because I mistakenly thought it would require an HTTP(s) link. I was heavily inspired by this work: Can you fit a whole game into a QR code?( [this video] )

Cites matheusmoreira · 2025-04 · on “Show HN: I made a Doom-like game fit inside a QR code”

QR codes have various encoding modes: numeric, alphanumeric, 8 bit and kanji. The most common is alphanumeric encoding and the densest is 8 bit encoding which just stores binary data. The QR code standards seem to be a little ambiguous on the meaning and purpose of the 8 bit encoding. I got the impression they added it to support alternative character encodings. Still, it's a mode that "represents an 8-bit byte value directly". > The default interpretation for QR Code is ECI 000020 representing the JIS8 and Shift JIS character sets. > 8.3.4 8-bit Byte Mode > The 8-bit byte mode handles the 8-bit Latin/Kana character set in accordance with JIS X 0201 (character values 00HEX to FFHEX). > In th