QOI stands for "Quite OK Image format." That name is not a joke; it is a statement of philosophy. PNG is great but its compression involves several non-trivial passes (filtering plus DEFLATE), which makes it slow to encode and a serious project to implement from scratch. JPEG XL is excellent but its specification runs hundreds of pages. QOI does something deliberately smaller: it gets you about 80 to 90% of PNG's compression with a tiny fraction of the complexity.
The thirty-second history
Dominic Szablewski announced QOI in late 2021, partly out of frustration with how heavy modern image libraries had become for the simple case of "I just want to read an image into a buffer." The reference encoder and decoder are well under 300 lines of C combined and require no external dependencies. The format is in the public domain.
It went viral in technical circles almost immediately. People wrote decoders in dozens of languages, hardware decoders on FPGAs, and integrations into game engines. Then the dust settled and the obvious question came up: should anyone actually use this?
How QOI compresses images
QOI uses only four tricks, applied pixel by pixel as it scans across the image:
- Run-length encoding. If the same pixel repeats N times in a row, store it once with a count instead of N times.
- Recent-pixel cache. The encoder keeps a small (64-entry) cache of recently-seen pixels. If the next pixel matches one in the cache, store a single byte pointing to the cache slot.
- Small differences. If the current pixel is only a little different from the previous pixel (say, the red channel increased by 2), store the delta in a few bits rather than the full color.
- Full pixel fallback. If none of the above applies, just store the raw RGB or RGBA bytes.
That is the whole compression scheme. No Huffman coding, no arithmetic coding, no filter prediction passes. The simplicity is the point.
How it compares to PNG
For typical images, QOI files are about 10 to 30% larger than equivalent PNGs. Sometimes less, sometimes more. PNG's two-pass filtering plus DEFLATE compression is genuinely better at squeezing out every last byte. So why bother with QOI?
Speed. QOI typically encodes 20 to 50 times faster than PNG and decodes 3 to 4 times faster. If you are processing thousands of images, generating textures at runtime, or working in an environment where you cannot ship zlib (the compression library PNG depends on), QOI's speed-and-simplicity trade can be a clear win.
So in rough terms:
- PNG: smaller files, slower processing, complex to implement.
- QOI: slightly larger files, much faster, trivial to implement.
When to actually use QOI
For most people, the honest answer is "never." PNG works, it is everywhere, and the extra 10 to 30% in QOI file size is not a problem that needs solving in everyday work.
QOI starts to make sense in three situations:
- Game and graphics development. If you ship hundreds of texture files with your game, QOI's fast decode time can shorten loading screens. Some open-source engines have added optional QOI support for this reason.
- Embedded or memory-constrained systems. If you cannot afford to link in libpng and zlib, a 300-line QOI decoder fits anywhere.
- Curiosity and learning. QOI is small enough that you can read the entire spec in an afternoon. It is a great way to learn how image compression works without drowning in details.
If you are just storing photos, sharing screenshots, or putting images on a website, QOI offers no real advantage over PNG or WebP.
Support outside of niche tools
This is where QOI stays a niche format. As of 2026:
- No browser ships native QOI support.
- Most operating systems do not show QOI thumbnails out of the box.
- Major editing tools (Photoshop, GIMP) need a plugin to handle QOI.
- Many command-line utilities (ImageMagick, FFmpeg) do support QOI now.
If you are sharing an image, do not pick QOI unless you know the recipient can open it. For your own pipelines, your own code, or your own archive, it can be a fine choice.
Why we added QOI to day2dayfile
It costs almost nothing to ship a QOI encoder in JavaScript (the spec is small enough that the implementation is short). We thought it was worth including for developers who play with the format, for game dev workflows, and for the educational angle. PNG remains the right default for anything you plan to share widely.
Practical takeaway
QOI is one of those formats that is more fun to know about than to use. It is a great example of how a thoughtful, small spec can capture most of the value of a bigger spec at a tiny fraction of the complexity. If you do graphics work, learning what QOI does will sharpen your sense of what image compression is actually doing. If you do not, you can safely ignore it and stick with PNG, JPG, or WebP for everyday work.
Try QOI in the converter
day2dayfile can export to and read from QOI directly in your browser. Convert between QOI, PNG, JPG, and WebP without uploading anything.
Open the converter