Lossless Image Coding Benchmarks

Lossless encoding and decoding benchmarks using the:

Each plot is for a set of images with similar characteristics. The vertical axis is the average size in bytes of a coded image in the set. The horizontal axis is the average encode or decode time in seconds of an image in the set. The closer to the bottom left of each plot the faster and more coding efficient.

For each combination of source image and codec, the benchmark loads the image in memory and encodes/decodes it using the codec (download the raw data). The decoded image is checked against the source image to confirm they are bit-for-bit identical. Encode and decode times are averaged over three runs. Codecs are ran single-threaded.

Lossless codecs used by the benchmark
Label Description
qoi Quite OK Image Format
jxl JPEG XL using libjxl in fast lossless encode mode (Effort = 1)
png Portable Network Graphics (PNG) using LodePNG
j2k_ht_ojph JPEG 2000 Part 15 (High-Throughput JPEG 2000) using OpenJPH
j2k_ht_kdu JPEG 2000 Part 15 (High-Throughput JPEG 2000) using Kakadu SDK (commercial library)
j2k_1_kdu JPEG 2000 Part 1 using Kakadu SDK (commercial library)
ffv1 FFV1 using libavcodec
avif AVIF using libavif
webp WebP using libwebp

Encoding results

Decoding results

Encoding results

Decoding results