PNG to QOI Converter: Lossless Quite OK Image Encode

Encode PNG to QOI (Quite OK Image) in your browser. Lossless, single-pass, no uploads. Built for game engines, asset bakers and decoder testing.

Browser Native
Privacy First
Free Tool

Convert Now

Drag & drop your file here

or

How It Works

QOI exists because Dominic Szablewski got tired of lossless image codecs needing thousands of lines and a compression library. Released in late 2021, the whole format is a single ~300-line C header (qoi.h) that anyone can read, audit, or port in an afternoon. That simplicity is exactly why it caught on with game engines, asset bakers, and people writing tooling in C, Rust, Zig, or Go. The usual reason to convert PNG to QOI is to move pixels into a format your own program can decode at close to memory-copy speed, without linking zlib. Here the work runs entirely in your browser via WebAssembly. The PNG is decoded to raw RGBA pixels (the jSquash PNG codec), then those pixels are handed to a WASM build of the reference QOI encoder, which writes the 14-byte header, the chunk stream, and the 8-byte end marker. The encode is a single forward pass: each pixel becomes an index reference, a small RGB delta, a run length, or a literal color. There is no Huffman tree and no DEFLATE stage, so nothing blocks waiting on entropy coding. The round trip is lossless. The .qoi you download carries the exact same 8-bit-per-channel pixel values as the source PNG, alpha included, so decoding it back yields an identical pixel buffer. Nothing is uploaded: the decode and encode both happen on your machine, and the result is offered as a local download. Closing the tab clears it.

Related Conversion Tools

Discover more powerful converters that might be useful for your workflow

PNG Optimizer: Lossless Compression, Same Pixels

Shrink PNG files losslessly with oxipng. Same pixels, fewer bytes via smarter filtering and DEFLATE. Runs in your browser, no uploads, no quality loss.

PNG to AVIF Converter - Lossless, Keeps Transparency

Convert PNG to lossless AVIF in your browser. AV1 intra coding shrinks the file while keeping every pixel and full transparency. No uploads, runs locally.

PNG to Base64 Converter: Encode PNG as a Data URI

Encode a PNG into a Base64 data URI in your browser. Paste it into HTML, CSS, or JS to inline small icons. No upload, one-click copy, lossless.

WebP to JPEG Converter: Fast, Private, In-Browser

Convert WebP to JPEG free in your browser. Files never leave your device, transparency flattens to white, and the JPEG opens in apps that reject WebP.

.webp
Try Now

PNG to PDF: Merge Multiple Images Into One File

Combine many PNG images into one multi-page PDF in your browser. Drag to reorder pages, keep pixels sharp, nothing uploaded. No account, no watermark.

JPEG to WebP Converter: Shrink Photos for the Web

Convert JPEG photos to WebP right in your browser to cut page weight. Lossy re-encode, no uploads, files never leave your device. Free and offline.

.jpg.jpeg
Try Now

Key Features

  • No file uploads required - works offline
  • 100% privacy focused - client-side processing
  • Browser powered - no software installation
  • Fast processing - WebAssembly technology
  • Free forever - no premium accounts

Supported File Formats

.png

Output Format: QOI

Technical Specifications

input Format PNG (8-bit RGB or RGBA; indexed and grayscale PNGs are decoded to RGBA first)
output Format QOI (Quite OK Image): 14-byte header, qoi chunk stream, 8-byte end marker
compression Type Lossless single-pass encoding (index, diff, luma, run, and literal chunks); no entropy or DEFLATE stage
quality Retention Lossless: exact 8-bit pixel and alpha reproduction
color Space Support sRGB; 3- or 4-channel RGB/RGBA with full 8-bit alpha
max Resolution Limited only by your device's memory
processing Time Instant, runs in your browser

Key Benefits

  • Lossless: the QOI carries the exact pixels and alpha of your source PNG
  • Single forward pass with no DEFLATE step, so encoding finishes effectively instantly
  • Runs entirely in your browser via WebAssembly; the PNG is never uploaded
  • Output follows the reference qoi.h byte layout, so engine and library decoders accept it as-is
  • Full RGBA transparency is preserved, no flattening to a background color
  • No account, no per-file size cap beyond your available RAM

Common Use Cases

  • Baking PNG art into QOI for a game engine's fast texture loader
  • Producing test inputs for a QOI decoder you're writing in C, Rust, or Zig
  • Asset pipelines that prefer a dependency-free format over a zlib-backed one
  • Benchmarking QOI encode size and speed against PNG on your own images
  • Generating sample .qoi files to validate or fuzz a parser
  • Storing intermediate frames where decode speed matters more than disk size

Pro Tips

  • If the QOI ends up larger than the PNG, that's normal: QOI optimizes for speed, not file size
  • Optimizing the PNG first only shrinks the PNG; it has no effect on the resulting QOI bytes
  • Confirm your target tool reads the standard qoi.h layout before committing a pipeline to it
  • Keep the original PNG around, since most viewers and browsers cannot open QOI
  • For alpha-heavy art, check the edges in your own decoder, since few tools will preview QOI transparency for you

Frequently Asked Questions

Usually no. PNG runs DEFLATE over filtered scanlines and squeezes harder on disk, so a well-optimized PNG is often the smaller file. QOI gives up some of that ratio in exchange for an encoder and decoder that are several times faster and carry no compression library. Pick QOI for load speed inside a program, keep PNG when bytes-on-disk is the priority.
No. Both are lossless and store full 8-bit RGB or RGBA. Every color and alpha value survives exactly. Convert PNG to QOI and back and you get a byte-identical pixel buffer; the only thing that changes is the container and the compression scheme.
Almost none by double-click. No mainstream OS, browser, or photo viewer previews QOI natively. Support lives in code: game engines, texture pipelines, and qoi.h ports for C, Rust, Zig, Go, and Python. Treat QOI as an asset you decode inside your own application, not a file you open to look at.
Because it skips DEFLATE entirely. Each pixel is encoded one of four cheap ways (index, diff, run, or literal) in a single linear pass against a 64-entry running cache. There is no Huffman tree to build and no sliding window to search, so encode and decode cost little more than walking the pixels. That predictable, branch-light loop is what real-time loaders want.
Yes. QOI supports a real 8-bit alpha channel. The PNG is decoded to RGBA before encoding, so semi-transparent edges and full cutouts are carried through unchanged. The catch is on the viewing side: most tools that can preview QOI at all are decoders you wrote, not image viewers.
This page does one PNG per run. Each encode is effectively instant, so a handful in a row is quick, but for baking hundreds of textures in a build step you want the qoi.h reference encoder or a CLI port wired into your asset pipeline, not a browser tab.
No. Browsers can't decode QOI, so it won't work in an img tag or as a CSS background. For the web, stay on PNG, or reach for WebP or AVIF when you want smaller delivery. QOI is meant for offline and in-engine use, not HTTP.
No. Both the PNG decode and the QOI encode run locally in your browser through WebAssembly. There is no server round trip and no stored copy. The file stays on your device and the output is a local download.