HashGlyph glyph for "hashglyph" HashGlyph
deterministic · BLAKE3-seeded · 9×9

A name in. A glyph out.
Always the same one.

HashGlyph hashes a word into a constrained pixel grammar to mint a compact digital signature: part monogram, part favicon, part terminal-era artifact. Same seed, same mark, forever.

your name, compiled to pixels a hash you can hang on the wall git-versionable identity

Forge your glyph

fg
bg
material blake3 / 64

Switch the visual grammar

How it works

The seed is normalized, combined with a frozen algorithm id, and hashed. The resulting bits are read most-significant-first and poured into a constrained 9×9 visual grammar. A fixed brand core keeps the mark recognizable; the hash only drives a few accents. The output is pure, deterministic, and reproducible anywhere.

your-name ↓ normalize NFKC · trim · lowercase your-name ↓ domain separation core-accents-v1|your-name ↓ BLAKE3 hash bits… ↓ bitstream MSB-first → grammar 9×9 glyph ↓ render SVG · PNG · ICO · QR
// deterministic

Same in, same out

One seed maps to exactly one mark, forever. No timestamps, no randomness.

// designed

Not an identicon

A fixed brand core makes it read as a logo; the hash only paints the accents.

// portable

Everywhere

Crisp from 16px favicons to wall-sized SVG. Generation runs entirely in your browser.

// frozen

Versioned forever

Grammars are pinned with a version suffix. Your logo never changes under you.

Pick your algorithm

HashGlyph is pluggable on two axes: 17 hash functions × 5 visual grammars = 85 combinations. BLAKE3 + Core + Accents is the default that mints each mark; the rest are yours to explore.

GrammarStyleblake3(hashglyph)
Core + Accentscore-accents-v1bfd24b02875f…
Mirror Identiconmirror-identicon-v1860e99e76ac4…
Symmetric Masksymmetric-mask-v15f089a786632…
Quad Foldquad-fold-v1efb485277de2…
Cellular Automatacellular-automata-v13df2859b18d4…

Plain-English glossary

Every option in the studio, explained in one line — with a link to the source so you can read more. None of it changes your mark: a fixed (hash, grammar) pair is frozen forever.

Hashes

blake3 BLAKE3
Fast modern hash that can stretch to any output length on its own. HashGlyph’s default — it mints the canonical mark. BLAKE3 spec ↗
blake2b BLAKE2b
Fast 64-bit-tuned hash. The workhorse inside Zcash, libsodium, and the Argon2 password hash. blake2.net ↗
blake2s BLAKE2s
BLAKE2 tuned for 32-bit and smaller devices. Same family as BLAKE2b, narrower state. blake2.net ↗
sha256 SHA-256
The SHA-2 standard that secures TLS, Bitcoin, and code signing. The default “SHA” most people mean. NIST FIPS 180-4 ↗
sha224 SHA-224
SHA-256 truncated to 224 bits. Same engine, shorter digest. NIST FIPS 180-4 ↗
sha384 SHA-384
SHA-512 truncated to 384 bits. Common in TLS certificates. NIST FIPS 180-4 ↗
sha512 SHA-512
The wide SHA-2 variant — faster than SHA-256 on 64-bit CPUs. NIST FIPS 180-4 ↗
sha512-256 SHA-512/256
SHA-512 cut down to 256 bits. Fast on 64-bit machines, immune to length-extension. NIST FIPS 180-4 ↗
sha3-256 SHA3-256
The newer SHA-3 standard (built on Keccak), designed differently from SHA-2 as a backup. NIST FIPS 202 ↗
sha3-512 SHA3-512
The wide SHA-3 variant with a larger security margin. NIST FIPS 202 ↗
shake128 SHAKE128
A SHA-3 “XOF” — like SHA-3 but can emit as many bytes as you ask for. NIST FIPS 202 ↗
shake256 SHAKE256
The wider SHA-3 XOF, with more security headroom than SHAKE128. NIST FIPS 202 ↗
keccak256 Keccak-256
Original-padding Keccak — the exact hash Ethereum uses everywhere. keccak.team ↗
keccak512 Keccak-512
The wide variant of original-padding Keccak. keccak.team ↗
ripemd160 RIPEMD-160
A 160-bit hash from the ’90s, still used to shorten Bitcoin and Ethereum addresses. RIPEMD-160 ↗
sha1 SHA-1
The old 160-bit web hash. Broken for security (real collisions exist) but still git’s object id. Here for nostalgia. SHAttered ↗
md5 MD5
The classic 128-bit checksum. Broken for security — fine for non-security IDs, included for recognizability. RFC 1321 ↗

Visual grammars

core-accents-v1 Core + Accents
The default look: a fixed brand shell with a handful of pixels painted by the hash. Reads as a logo, not noise. source ↗
mirror-identicon-v1 Mirror Identicon
Left/right-mirrored dots, like the classic GitHub identicon. source ↗
symmetric-mask-v1 Symmetric Mask
Hash pixels clipped to a diamond mask, so it always lands as a clean badge silhouette. source ↗
quad-fold-v1 Quad Fold
One corner mirrored four ways into a balanced, kaleidoscopic ornament. source ↗
cellular-automata-v1 Cellular Automata
A Rule-90 pattern grown row by row from a hashed starting line — the nerdy one. source ↗

Concepts under the hood

Seed normalization (NFKC)
Before hashing we Unicode-normalize, trim, and lowercase your text, so visually identical names map to the same glyph. Unicode UAX #15 ↗
Domain separation
We prefix the grammar id before hashing (grammar-id|name). Same name, different grammar → a genuinely different mark. determinism contract ↗
XOF (extendable output)
A hash that emits any number of bytes you ask for. BLAKE3 and SHAKE are XOFs, so they fill the grid natively. NIST FIPS 202 ↗
Counter expansion (HKDF-style)
Fixed-length hashes can’t stretch, so we re-hash with a rising counter and concatenate until the grid is full. RFC 5869 (HKDF) ↗
Bitstream (MSB-first)
The digest is read one bit at a time, most-significant bit first; each bit decides whether a pixel is on. how it works ↗
QR mode
Optionally encodes a link as a standard QR code with your glyph centered inside it. QR standard ↗