Skip to content

ASCII

Image to text art: per-cell luminance mapped through nineteen character ramps via a font atlas, with mono, source-colour, duotone and ANSI-16 colour — or laid out as a page of code instead of a grid.

TYPE family · free, no signup

← All the FX

Family
TYPE
Availability
Free — no signup
Controls with options
3

The ramp has to be ordered by ink, not by alphabet

Turning a picture into text is a two-step: divide the frame into cells, and replace each cell with the character that covers about as much of its area as the cell was dark. That second step is the one people get wrong. The ramp isn’t a list of characters you like — it has to be sorted by how much of the cell each glyph actually fills, and that ordering is a property of the FONT, not of the characters. A ramp built for one typeface reads as mush in another.

The other thing that decides whether this looks right is cell aspect. Characters are taller than they are wide, so laying them out on a square grid stretches the picture vertically. The sampling has to account for the shape of the cell, or every face comes out long.

Nineteen ramps, and what each is good for

Std is the general-purpose ASCII ramp — the one that reads as “ASCII art” unambiguously. Dense packs the tonal range into heavier glyphs, so it holds shadow detail that Std loses; Min goes the other way, a handful of characters and a great deal of white, which suits graphic subjects and destroys continuous-tone ones.

Block and Bars leave the alphabet behind for filled shapes, which trades the readability of text for far smoother tone — they behave more like a very coarse mosaic than like writing. Dots, Round, Shapes and Dice are decorative ramps whose glyphs are roughly uniform in weight, so they render structure and edge rather than tone. Matrix is the one you already know what it looks like. Custom takes your own string, ordered light-to-dark.

Han, Hangul, Devanagari and Ethiopic are script ramps rather than symbol ramps, and they behave differently for a structural reason: their glyphs carry far more strokes per cell than Latin characters do, so the ramp starts denser and climbs into near-solid ink much sooner. That gives a smoother, heavier tonal range than Std can reach, at the cost of the output reading as texture rather than as text. Han in particular fills a cell so evenly that a render can pass for a fine mosaic until you look closely.

Quadrant, Diagonal, Arc and Terminal are the odd ones out: their glyphs are DRAWN rather than typeset. Everything else here is a real character from a real typeface, and so inherits that typeface’s ideas about weight and spacing. These four are generated shapes — Quadrant steps through corner fills, Diagonal through a rising stroke and a cross, Arc through a dot, an arc, a half disc and a disc, Terminal through the rule and cross of box-drawing. That is the PETSCII / ATASCII lineage, where the picture elements WERE the character set, and because the shapes are made rather than borrowed they tile without the gaps a font leaves between letters.

Syntax: the same read, laid out as code

Layout switches what the cells are. Grid is the classic: a regular matrix of cells, each one a glyph chosen by tone. Syntax throws the tone ramp away and replaces it with an alphabet sorted into five classes — punctuation, brackets, digits, lowercase, capitals — each ordered light to dark by measured ink, and the classes themselves ascending in the same direction, because punctuation is the sparsest thing on a page and capitals the densest.

The result reads as a page of source code from across the room and resolves into the picture as you approach, which is the whole trick. It is deliberately NOT real code: no keywords, no words at all. A legible word would be content, and a V3KTR effect is a treatment — the tell is that content cannot roll. What this draws is abstract syntax, shaped by the image.

Colour, and why ANSI looks like a terminal

Mono is one ink on a flat ground — the purest version, and the only one where the characters stay properly legible as characters. Source keeps each cell’s original colour, which turns the text into a mosaic of the image. Duo maps the range across two colours.

ANSI is the constrained one, and the constraint is the whole point: sixteen colours, because sixteen colours is what a text terminal had. It looks like a terminal capture because it is limited in exactly the way a terminal was limited — not because a filter was applied on top.

A different charset per depth plane

ASCII carries the app’s DEPTH PLANES control, and the MID PLANE and FAR PLANE sections each choose their own Charset. It belongs to the Grid layout: Syntax has no charset to pick, so the control has nothing to vary and steps out of the way.

A dense ramp on the subject and a sparse one behind it produces depth cueing that costs nothing in sharpness — the background thins out in character density rather than going blurry, so the whole frame stays crisp text while still reading as near and far. It is the one way to get depth into an ASCII render without leaving the medium.

When you’d reach for it

When you want the image re-encoded rather than filtered. ASCII is destructive in an interesting direction: it throws away everything below the size of a cell and asks the remaining structure to carry the picture, which is why it flatters strong silhouettes and punishes busy ones.

Every option, from the app

Generated from the registry the app publishes, so this list is whatever the current build actually ships — not a copy of it.

Layout
GridSyntax
Charset
StdBlockMinRoundDenseBarsDotsShapesMatrixDiceHanHangulDevanagariEthiopicQuadrantDiagonalArcTerminalCustom
Colour
MonoSourceDuoANSI

It’s in the app — open it and it’s there, no signup. Open V3KTR · all the FX · how it works