TL;DR
Get the latest gadgets delivered free with Prime
- Fast, free delivery on millions of items
- Prime Video, Amazon Music and more included
- Member-only deals all year
Nibnib is an experimental image format designed to decompress quickly on resource-constrained hardware, including the RP2350 microcontroller. Its decoder uses a 256-entry palette of color deltas to produce two RGB565 pixels from each encoded byte; the project says the format is not intended for archival use, and its current encoder is much slower than decoding.
The Nibnib GitHub project has introduced an experimental image format designed to decompress quickly on constrained hardware, with an RP2350 microcontroller serving as its original target. Its decoder reads encoded data in one-byte steps and produces two RGB565 pixels at a time, a design intended to fit a tight per-pixel processing budget.
Nibnib was developed as an experiment in image quality and performance for DVI output on an RP2350, according to the project description. It cites an approximate budget of six processor cycles per pixel on devices in this class. The design uses a palette, but its entries represent color changes rather than complete colors: each selected delta is added to the preceding pixel value, which is duplicated to form a pair.
The decoder begins each row with two RGB565 pixels. For subsequent pairs, it reads one byte, uses that byte to select one of 256 32-bit palette entries, and adds the selected value to the duplicated previous pixel. The lower and upper 16-bit portions of the result supply the two output pixels. The project describes this process as simple and deterministic; it does not provide benchmark measurements in the supplied report.
The format stores width and height as two-byte values, followed by the palette and image rows. Each row starts with two pixels and then uses one byte for each later pair; row stride is rounded to a multiple of four bytes. The project says the format has no other metadata and is not designed for archival use, but may suit applications where the image data is closely integrated with its decoder.
A Decoder Built for Tight Budgets
Nibnib’s design addresses a specific problem: rendering images on hardware with limited processing time and memory bandwidth. Producing two pixels from each input byte gives the decoder a compact stream to process, while the palette lookup and addition are intended to keep reconstruction simple. The project says this may be useful for constrained graphics systems such as its RP2350 DVI experiment.
The approach also illustrates a tradeoff between decoding and encoding. Nibnib’s author says the current encoder is orders of magnitude slower than the decoder because it searches possible palettes and codewords for an acceptable match. That imbalance may be suitable when images are prepared in advance and decoded repeatedly, but the report does not establish performance or image quality across devices or workloads.
Popular right now

Vitamix Propel Series 750 Professional-Grade Blender, 4 Programs, Black

Breville BES870BTR Barista Express Espresso Machine, Black Truffle

Ninja Luxe Café Mini Plus Espresso and Drip Coffee Machine with AutoFroth, Stainless Steel (ES351)
As an affiliate, we earn on qualifying purchases.
How Delta Palette Coding Works
Conventional palette images map each stored index to a color. Nibnib instead stores a palette of color deltas; the decoder adds the selected delta to the previous pixel, which is repeated across the pair. The project argues that this can represent gradual regions more effectively than a palette of absolute colors, while retaining a compact lookup-based decoder.
Encoding is a separate, more involved task. The initial encoder searches palette entries and uses Floyd–Steinberg error diffusion to distribute quantization error across later pixels. Its palette combines a cube of small deltas with randomly selected values. The project says the small-delta entries help avoid artifacts near color extremes, while the current palette is not adapted to each source image. These are design explanations from the project, not independent image-quality results.
“An image format tuned for extreme decompression speed.”
— Nibnib project description on GitHub
Performance and Image Quality Evidence
The supplied project report gives no measured decoding speed, comparison against other formats, file-size results, or test images with quantified quality scores. Its description of extreme decompression speed is a design goal, not a verified cross-platform ranking in the material provided. The approximate six-cycle-per-pixel budget is stated for devices of the relevant class, but no complete benchmark setup is specified.
It is also unclear how the format performs across image types, resolutions, and hardware beyond the RP2350 use case. The project acknowledges visible artifacts trailing sharp edges and says its current encoder makes greedy choices. There is no indication in the supplied material of a finalized specification, broad compatibility, or adoption outside the linked project and its associated demo.
Encoder Improvements and Testing
The project identifies several possible improvements: adapting the palette to the source image, searching more deeply to reduce encoding error, and improving the brute-force palette search. It also describes encoding in the reverse direction or alternating direction by row as possible ways to address artifacts near sharp edges. The author notes that these changes could make encoding slower without changing the existing decoder.
The next useful evidence would be reproducible benchmarks of decoder speed, memory use, compressed size, and visual quality on the RP2350 and other target systems. The source does not give a release schedule or announce a standardization plan, so whether Nibnib develops beyond this working experiment remains open.
Key Questions
What is Nibnib?
Nibnib is an experimental image format designed to prioritize fast decompression, particularly for constrained graphics hardware. Its project description says it began as an experiment for DVI output on an RP2350 microcontroller.
How does its decoder produce two pixels per byte?
Each encoded byte selects a delta from a 256-entry palette. The decoder adds that delta to a duplicated previous pixel and interprets the resulting 32-bit value as two 16-bit RGB565 pixels.
Is Nibnib proven to be faster than other image formats?
The project is designed for fast decoding, but the supplied report does not include comparative benchmarks. Its speed claims should be treated as project descriptions rather than independently demonstrated results.
Is Nibnib suitable for storing images long term?
The project explicitly says the format is not intended for archival. It is described as more suitable for uses where the image format is integrated closely with its decoder.
What could improve Nibnib’s image quality?
The project proposes source-adaptive palettes and deeper searches for better codewords. It also points to alternative encoding directions to address artifacts near sharp edges, while warning that these changes could slow the encoder.
Source: github.com
