How it works
ASCII.ART is a pure-function image-to-text converter. Every pixel stays in your browser — no uploads, no servers, no nonsense. Here's what happens between your image and the characters on screen.
Each pixel is collapsed to a single brightness value using the Rec. 709 luminance formula. This weights green more than red and red more than blue — closer to how the human eye reads light.
Y = 0.2126·R + 0.7152·G + 0.0722·B
The grayscale image is averaged down to the target character width using a box filter. There's a 0.5 vertical correction in here, because terminal characters are about twice as tall as they are wide. Skip the correction and your cat ends up squashed.
Each averaged brightness picks a character from a ramp string — dark to light. The default ramp is:
" .:-=+*#%@"
Use the Charset picker in the converter to swap in your own — short ramps give chunkier, more abstract output.
Switch the output mode to Edges and the ramp lookup is replaced with a Sobel gradient. Horizontal-ish edges become -, vertical-ish edges become |, and diagonals become / or \. Great for line-art and high-contrast subjects.
In Color mode, each character is wrapped in a span carrying the original pixel's color — exportable as standalone HTML. Drop in a .gif and the converter decodes every frame (via gifuct-js, respecting per-frame delays and disposal), plays it live in the preview, and lets you export a self-contained animated HTML file — no external dependencies, just an embedded frame array and a tiny loop.
Everything runs in your browser. Images are decoded with the Canvas API and converted in a Web Worker. Nothing is uploaded, logged, or persisted anywhere.