I built propolis.graham.tech as a way to explore an idea a friend of mine had: what would it look like to make an alternative to the QR code based on a hexagonal grid instead of a square one? The result is part demo, part technical sketchpad. You can type a message, choose an error-correction level, and export the generated code as SVG or PNG.

Propolis live encoder screenshot
The live encoder view on propolis.graham.tech.

Why I Built It

The idea came from a friend I knew from the old Hackerspace Charlotte days. We used to talk through all kinds of strange, ambitious project ideas there, and this was one of his: a code that could work like an alternative to QR, but built around a hexagonal structure instead of a square grid. I always admired the way he put ideas out into the world, even when they were unusual or hard to explain. Building this demo was my way of taking one of those conversations seriously enough to see what it might look like.

Propolis is a hexagonal matrix code based on Eisenstein integers, invented by Pierre Abbat. That sounds abstract, but the thing that pulled me in was very concrete: the geometry changes the shape of the code, the way data fits into it, and how it compares visually with the square modules in a QR code.

I was not trying to turn it into a polished product. I wanted a place where I could play with the encoder, make the structure visible, and answer the basic question that makes projects like this fun: if you change the geometry, what else changes?

Live Demo

The live encoder is meant to show more than the final symbol. It walks through the encoding pipeline and exposes the internal pieces of the code: UTF-8 bytes, data letters, metadata corners, and the error-correction and whitening stages.

That is the part I like most about it. The page lets me poke at the idea instead of just read about it. Changing a message or an error-correction level immediately changes the symbol, so the abstract parts of the design become something you can inspect.

QR Comparison

Propolis comparison view beside a QR code
The comparison view shows the same message rendered as Propolis and QR, with grid, module, capacity, and symmetry metrics underneath.

I added the QR comparison because it is the fastest way to make the idea legible. Seeing the same message rendered both ways makes the tradeoffs easier to talk about: module shape, symbol size, available capacity, symmetry, and how much of the surrounding space the code can use.

Source Repositories

These are the repositories behind the idea and my demo:

  • phma/propolis is the reference C++ codebase and README for the original Propolis implementation.
  • Pabreetzio/propolis-tools contains the live demo site and supporting tooling, including the encoder and QR comparison views.

For me, Propolis is mostly a small curiosity made tangible: a friend's unusual encoding idea, turned into something I could explore, compare, and share.

Open the live Propolis demo