TOOLTIKI Lovable tool, really free
Text Art

Image to ASCII art

The art appears here

Made in your browser · nothing is uploaded

Local · Rec. 601 luma, cells corrected
Advertisement
320 × 100

Converts an image into characters, choosing a denser character for each darker area. High-contrast pictures with a clear subject work far better than busy ones.

How to use the image to ascii art

1 Choose an image.
2 Set the width in characters.
3 Pick a character ramp, and invert it for a dark background.

Each output character stands for one sampled pixel, and the character is chosen by brightness from a ramp running dark to light — @ for near-black through to a space for white. Brightness uses the Rec. 601 luma weights rather than an average of the three channels, because the eye is roughly six times more sensitive to green than to blue; a flat average makes blue regions come out far lighter than they look.

The correction that matters most is aspect ratio. A character cell is about twice as tall as it is wide, so mapping one pixel per character makes everything twice as tall as it should be. Sampling half as many rows as columns fixes it, and it is the single most common thing missing from hand-written converters — the output looks stretched and nobody can quite say why.

Inverting matters more than people expect. The default ramp assumes dark characters on a light background, as in a printed page. Paste that into a terminal with a dark theme and the image comes out as a photographic negative. The invert option flips the ramp for exactly that case.

On what works: high contrast with a clear subject. A portrait against a plain background converts beautifully at 80 characters wide. A busy landscape becomes noise at any width, because the technique has perhaps ten levels of brightness to work with, against the 256 in the original.

Questions

It should not here — character cells are twice as tall as they are wide and the row count is halved to compensate. That correction is what most converters miss.

ITU-R BT.601 — luma coefficientsMDN — CanvasRenderingContext2D.getImageData()
Advertisement
300 × 250
Was this tool any good?
INTERNAL SIGNAL ONLY · WE USE IT TO FIND TOOLS WORTH REBUILDING