a typography-only video codec

Everyone ships pixels.
We ship characters.

Every video codec on earth races to reconstruct the same thing: a grid of pixels for a human eye. glyphcast reconstructs a grid of printable characters. One fork in the road, and four doors open that no pixel codec can walk back through.

the moat in one line:  video that is already text is legible to a language model, a terminal, and a microcontroller, not just a screen.
the codec lighting up · every cell is a glyph
the fork

Same source frame. Two reconstruction alphabets.

A codec is defined by what it rebuilds the picture out of. Pick pixels and you inherit pixels' constraints forever. Pick characters and the output is, by construction, readable by anything that can place a character.

alphabet: pixels · h.264 / av1 / vp9

Reconstructs a raster

Decodes to a 2D array of RGB samples. Brilliant fidelity-per-bit. But the output only means something to one kind of consumer:

  • needs a screen and a GPU or decoder block
  • opaque to a text model with no vision stack
  • a terminal or an MCU cannot draw it
  • bitstream is a DCT plus entropy plus reference-frame state
alphabet: characters · glyphcast

Reconstructs a glyph grid

Decodes to a grid of Unicode cells (octant / sextant / quadrant blocks) with per-cell color. Worse fidelity-per-bit, on purpose. In exchange:

  • a blind language model names the scene
  • a terminal renders it with ANSI truecolor
  • a character-LCD or MCU can print it
  • the wire is byte-aligned skip/emit runs, no DCT
four doors a pixel codec can't walk back through

The moat, measured.

Each number below was measured live on an M4 Max against Big Buck Bunny 1080p60, not estimated. The point is never the number alone; it's the property a pixel format structurally cannot retrofit.

door 01
83%

An AI reads it, blind

Fed glyph frames with no image, just the characters, a text-only LLM identifies the scene at 83% versus 25% chance. Glyph video is already the model's native input: text. Real blind verdicts, logged:

running blind tests…
sampling…
door 02
4,337

A terminal is a full receiver

bun clients/term.ts renders the same stream with ANSI truecolor, no browser, no GPU, no codec library, at a checksum identical to the GL canvas. 4,337 real octant glyphs in one captured frame.

connecting…
door 03
pack = unpack

The wire is lossless text

The frame is skip/emit runs against the previous frame, byte-aligned, no entropy coding. Checksums are identical in every config. No DCT, no reference frames. Dumb enough for a microcontroller to decode.

door 04
∞ substrates

Renders on anything that prints

One stream feeds a browser (GPU, one draw call), a terminal (ANSI), or a character LCD. The reconstruction alphabet is printable characters, so the set of valid displays is everything that can place a glyph, not just framebuffers.

not a mockup

This page is running the codec.

The panel on the left is a video being re-encoded into glyph cells on your GPU, right now. The bytes on the right are the actual wire packets for those cells, never pixels.

live · gpu glyph renderencoding on your GPU
the wire · bytes, never pixels
the part that was hard to build

The implementation is its own moat.

"Video as text" is one sentence. Making it run at video fps, losslessly, on a terminal and a GPU at once, is the work.

octant unicode
2×4 subpixels/char

230 octant glyphs (U+1CD00 to 1CDE5) generated from UnicodeData.txt, double the vertical detail of quadrants, mask-indexed on a separate glyph page.

gpu cell encode
0 ms CPU · 1 draw

The entire cell encode runs in a WebGL2 fragment shader straight from the video texture. Atomic frames, so tearing is impossible by construction.

worker-pool broadcast
1,248,000 cells

An 8-worker band-parallel caster streams a 3840×2600 subpixel lattice at 32 fps (single thread: 17), with drop-frame and backpressure gates.

Want your video, or your agents, to speak glyph?

Streaming over a constrained link, feeding video to a text-only model, drawing on a terminal or an MCU: if any of that is your problem, I'd love to show you the full thing.