Image to ASCII Art Converter
Brightness mapped to characters — with the aspect-ratio correction that most converters forget.
What the image to ASCII Art Converter does
ASCII art converts an image into text by measuring the brightness of each small region and
substituting a character of roughly matching visual density. A dense character like @
stands in for a dark area, a sparse one like . for a light one, and a space for white.
The technique predates graphical displays and survives because the output travels anywhere text
does.
The detail that separates a good converter from a bad one is aspect ratio. Monospace characters are roughly twice as tall as they are wide, so sampling the image on a square grid produces output that is stretched to double height. This tool samples the vertical axis at half the horizontal rate to compensate, which is why the result looks like the original rather than an elongated version of it.
Six character sets are offered. The standard 70-level ramp gives the most tonal detail and needs a reasonably large output to read. The simple 10-level ramp is cleaner at small sizes. Block shading uses Unicode block characters, which give genuinely solid coverage and look closest to a real image. Binary, dots and hash are stylistic choices with very few levels — effectively high-contrast conversions.
Contrast matters more here than in ordinary image editing, because you are compressing 256 brightness levels into as few as two or three characters. A photograph with a narrow tonal range turns into an undifferentiated field of the same character; raising contrast pushes the values apart and gives the ramp something to work with.
Four export options cover different destinations: plain text for a terminal or a code comment, HTML for a web page (with optional colour), and PNG for anywhere that needs an image.
How to use it
- Load an image. High-contrast subjects with a clear silhouette work far better than busy scenes.
- Set the width in characters — 80–120 suits most uses, more for detail.
- Raise the contrast if the output looks like a flat field of one character.
- Copy the text, or export as HTML or PNG.
A worked example
The same portrait at four widths, using the standard ramp:
| Width | Output | Reads as |
|---|---|---|
| 40 chars | 40 × 12 | An abstract shape; subject unrecognisable |
| 80 chars | 80 × 24 | Recognisable — fits an email or terminal |
| 150 chars | 150 × 45 | Clearly detailed; too wide for most text contexts |
| 300 chars | 300 × 90 | Photographic, but only readable as an image |
Notice the height figures. A 150-character-wide conversion of a 4:3 photo is 45 lines tall, not 112 — that is the aspect correction doing its job. Without it, the same image would be 112 lines and would look like a face reflected in a funhouse mirror, which is the giveaway that a converter has skipped this step.
Frequently asked questions
Why does my ASCII art look stretched in other converters?
Because they sample the image on a square grid while monospace characters are about twice as tall as wide, so the result comes out at double height. This tool halves the vertical sampling rate to compensate.
What kind of images work best?
High contrast, a clear silhouette, and a simple background. Portraits against plain backgrounds, logos and single objects work well. Busy landscapes and low-contrast photos turn to noise, because there is not enough tonal separation to map onto a handful of characters.
What is the block shading option?
It uses Unicode block characters (█ ▓ ▒ ░) rather than ASCII punctuation. They give solid, even coverage at four density levels, so the result looks much more like a real image — at the cost of no longer being plain ASCII.
How do I use the output in a web page?
Download the HTML export, or wrap the text in a <pre> element with a monospace font and a tight line height. Line height matters: the default spacing leaves gaps between rows and breaks the illusion.