ShapeAddress v0.3 · playground

One address, every size, and back again

Each byte of the input becomes one cell: a colour and a glyph from the chosen dictionary. Nothing is hashed away, so the picture reads back to the exact address. Change anything below; the code panel at the bottom always matches what you see.

The size ladder

Same SVG, scaled. At 16 and 24 px it is a colour pattern (that alone carries 60 bits). At 48 px the shapes appear. From 128 px a person can read the cells.

Full size and read-back

decoded
matches input
checksum
bytes
svg size
Say it aloud, reading order

The lookalike test

Address poisoning sends from an address that matches the first and last characters of a real one. This lookalike shares the first 8 and last 5 hex characters with vitalik.eth. Jazzicon, MetaMask's Maskicon and Reown AppKit draw both identically. Cells that differ are outlined here.

Code that reproduces this exactly

Three ways to get the same picture: the @shapeaddress/core call (the playground runs the same file), the <shape-address> element, and the hosted HTTP API. Only non-default options are printed.

Rendered SVG

As an image

What to judge. Does the grid or the coin read faster? Are the colours and shapes of a dictionary distinct enough at 48 px? Is the spoken legend something you would say over a phone? A dictionary id names its exact glyphs and colours forever; a new set gets a new id.

ShapeAddress v0.3.0 · dictionaries sa330 (MIT) and fa330 (glyphs CC BY 4.0) · zero dependencies · 5.2 kB gzipped core · playground state is not saved.