sz3/libcimbar

Optimized implementation for color-icon-matrix barcodes

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 11 seconds ago
Added to GitGenius on September 10th, 2026
Created on April 9th, 2020
Open Issues & Pull Requests: 36 (+0)
GitHub issues: Enabled
Number of forks: 470
Total Stargazers: 6,455 (+0)
Total Subscribers: 33 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 11.7 hours
Mean response time: 44.6 hours
90th percentile: 3.2 days
Tracked items: 44

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 100% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 6% of issues opened in the past year have been closed. Three people close 80% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 27
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 481 days
Stale 30+ days: 25
Stale 90+ days: 23

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • working on it (6)
  • maybe some day (2)
  • bug (1)
  • enhancement (1)
  • good first issue (1)

Detailed Description

libcimbar is an optimized C++ implementation of color-icon-matrix barcodes for air-gapped data transfer.

The tool solves the problem of transferring data between devices without network connectivity, Bluetooth, NFC, or other wireless protocols. It works by encoding data into an animated barcode displayed on a screen, which a smartphone camera can read and decode. The barcode format stores data in a grid of colored tiles where both tile position and color encode information. Reed Solomon error correction handles the lossy nature of video decoding. The implementation adds a protocol layer using fountain codes and zstd compression, allowing files up to 33MB to be split across multiple barcode frames that can be received out of order, with missing or corrupted frames automatically recovered once enough distinct frames are successfully decoded.

Adoption suits scenarios requiring offline data transfer between air-gapped systems, such as secure environments or locations without connectivity. The encoder runs on any device with a modern web browser, including as a progressive web app or standalone HTML file for offline use. The decoder is available as an Android app. The tool achieves sustained transfer speeds around 850 kilobits per second using only a computer monitor and smartphone camera. This approach is experimental and positioned as a proof-of-concept rather than a replacement for standard barcode formats.

The project maintains active development across multiple platforms: the encoder compiles to WebAssembly and JavaScript for browser deployment, while the decoder targets Android. The codebase is written in C++ with platform-specific builds tested on Linux amd64, Android arm64, and WebAssembly. The project includes comprehensive documentation covering implementation details, performance characteristics, and a roadmap of planned work. Dependencies are either vendored in the source tree or clearly documented as external requirements, with the build system supporting standard development workflows on Linux.