TL;DR
Get business pricing on networking and server gear
- Business-only prices and quantity discounts
- Tax-exempt purchasing
- Multiple users, one account, clear invoices
Nibnib is an experimental image format designed to decode quickly on resource-constrained hardware, including the RP2350 microcontroller. Its decoder reconstructs two RGB565 pixels from each palette-index byte, while the current encoder is much slower and image quality and format limitations remain areas for development.
A GitHub project has introduced Nibnib, an experimental image format designed to decompress images quickly on constrained hardware, with a particular focus on RP2350 microcontrollers. Its decoder uses one palette-index byte to reconstruct a pair of pixels, a design intended to fit a tight per-pixel processing budget; the project describes the format as a working technique rather than an archival standard.
Nibnib grew out of an experiment in producing DVI output on an RP2350, according to the project report. The report says devices in this class commonly use low-bit-depth images and palette lookups, and estimates a budget of about six cycles per pixel for fetching a pixel, looking up its palette value and storing it in a line buffer. Nibnib is designed around that constraint, though the report does not provide independent benchmark results.
During decoding, the format takes the previous pixel, duplicates it, and adds a 32-bit palette entry selected by the next input byte. The result represents two RGB565 pixels: the low 16 bits give the left pixel, and the high 16 bits give the right. The project calls this 4 bits per pixel, since one byte of encoded input generates two pixels. The first two pixels of each row are stored directly to initialize the process.
The project says the palette entries represent color deltas, rather than absolute colors. That can give smoother results in soft image regions than a conventional palette approach, according to the report. The current format stores width and height, a 256-entry palette, and image rows; each row begins with two RGB565 pixels, followed by palette indices. Row storage is padded to a four-byte boundary.
A Decoder Built for Tight Budgets
Nibnib’s main point is the tradeoff it explores: spend much of the image representation on a fixed palette and keep the decoding operation simple. That may suit embedded displays or other systems where image data must be expanded within a small processing budget. The project includes an RP2350 on-the-fly decoder in the image demo for the vic-2350 repository, showing an intended use case beyond a format description.
The design also separates the cost of producing an image file from the cost of using it. Nibnib’s report says the current encoder is orders of magnitude slower than decoding. This may be acceptable for assets encoded in advance and displayed repeatedly, but it could be a drawback for workflows that need rapid or frequent encoding. The project has not supplied comparative speed or image-quality measurements in the provided report, so practical advantages over other formats cannot yet be quantified.
For developers, the project’s value is therefore as a specialized experiment, not a replacement for broadly supported image formats. Its stated lack of archival features and metadata narrows where it may be useful. Any adoption would depend on whether its speed and visual output meet the needs of a particular device and application.
Products Worth Considering

Amazon Kindle Scribe Colorsoft, 64GB, 11-Inch Color Display with Premium Pen

Bose SoundLink Plus Portable Bluetooth Speaker, Black

Amazon Kindle Scribe (64GB) with Premium Pen, Metallic Jade
As an affiliate, we earn on qualifying purchases.
How Nibnib Encodes Pixel Pairs
The decoder is deterministic, but the encoder has a harder task: search for palette values and codewords that produce a close match to the source image. The initial encoder tests all 256 palette entries for each pixel pair, choosing the entry with the least error. It then uses Floyd–Steinberg error diffusion to distribute that error to later pixels, so subsequent choices account for accumulated differences.
The initial palette combines a cube of small delta values with randomly selected values drawn using weighted Gaussian distributions. The project report says the small-delta cube helps represent colors near zero and full scale without overflow artifacts. It also says the random-only palette produced poorer results in the illustrated comparison. Palette selection is not currently adapted to each source image, and the report identifies that as a possible quality improvement.
The author says the current encoder’s greedy approach can leave artifacts trailing to the right of sharp edges. Potential changes include improving palette design, searching more deeply for pixel choices, and encoding in a different direction while retaining the existing left-to-right decoder. These changes would increase encoding work, but the project says they would not require changing the decoder.
“The format is not intended for archival, and is much more likely to be used when integrated tightly with the decoder.”
— Nibnib project report on GitHub
Benchmarks and Image Quality Remain Open
The available report does not give measured decoder speeds, comparisons with other formats, or a defined image-quality benchmark. Its estimate of about six cycles per pixel describes the target device budget, not a published test result showing that all Nibnib decoding workloads meet it. It is also unclear how image quality varies across different image types and resolutions.
The format is described as a basic working technique, and the current palette and encoding search are acknowledged limitations. The report does not specify a stable release, compatibility commitments or support across devices beyond the RP2350-related demonstration. Those details would matter to developers evaluating long-term use.
Potential Encoder Improvements Ahead
The project report points to palette optimization and deeper search for lower-error pixel choices as possible next steps. It also identifies faster palette search as an opportunity to reduce the encoder’s cost. Each approach would affect image creation rather than the core decoding process, according to the report.
No release schedule or specific next milestone is provided. The next useful evidence for prospective users would include reproducible speed and quality comparisons, more examples across image types, and clarification of how the format may evolve. Until then, Nibnib remains an experimental option for developers exploring fast image display on constrained hardware.
Key Questions
What is Nibnib?
Nibnib is an experimental image-compression format designed to make decompression fast, especially on constrained devices such as the RP2350 microcontroller.
How does its decoder produce two pixels from one byte?
Each input byte selects a 32-bit palette delta. The decoder adds it to a duplicated previous pixel, producing two RGB565 pixels from that palette lookup.
Is Nibnib faster than other image formats?
The project is designed for fast decoding, but the report provides no comparative benchmark results. Its performance advantage over other formats has not been established in the supplied material.
What are Nibnib’s current limitations?
The current encoder is reported to be much slower than the decoder, its palette is not tailored to each image, and the format is not intended for archival use. The report also notes artifacts near sharp edges.
What happens next with the project?
The report describes possible encoder improvements, including better palette selection and deeper error-minimizing searches, but gives no release timeline or next milestone.
Source: github.com
