ASCII Art Generator
Turn text into a banner, or an image into ASCII art.
About this tool
Two modes: turn a short line of text into a large blocky banner, or convert an uploaded image into ASCII art. Both work by drawing to an off-screen canvas, sampling the brightness of each cell, and mapping that brightness to a character — everything happens in your browser and no image is uploaded.
How image-to-ASCII works. The image is scaled down to the width you set (in characters), then each pixel's brightness is measured and matched to a "ramp" of characters ordered from light to dark — something like .:-=+*#%@. A bright pixel becomes a space or a dot; a dark pixel becomes @ or #. Because monospace characters are taller than they are wide (roughly 2:1), the tool samples fewer rows than columns so the output isn't vertically stretched.
The width setting is resolution. More characters across means more detail, at the cost of a bigger block of text. A portrait might need 100–150 characters wide to be recognisable; a simple logo or icon can work at 40–60. For a text banner, too narrow a width squashes the letters together until they're unreadable.
When to use Invert. The default assumes dark shapes on a light background (black text on white, a dark logo on transparent). If your source is the opposite — white text on black, a bright subject on a dark sky — the result will look like a photographic negative. Tick Invert to swap the mapping.
What makes a good source image. High contrast and a clear subject. ASCII art only has about ten brightness levels to work with, so subtle gradients, busy backgrounds, and low-contrast photos turn to mush. Line art, silhouettes, logos, and portraits with strong lighting convert best. Cropping tight to the subject before uploading helps a lot.
Displaying the result. ASCII art only lines up in a monospace font. Pasting it into a proportional font (most word processors, chat apps, social posts) will distort it. Keep it in a code block, a <pre> tag, a terminal, or a monospace editor. Email signatures and code comments are classic homes for it.
For a text-only figlet-style banner you can also reuse the Morse code translator for a different retro text effect, or the fancy text generator for Unicode styled text that survives proportional fonts.
Frequently asked questions
- Why does the output look better at a wider "width" setting?
- Width is effectively resolution. More characters across captures finer detail; too few and a text banner's letters run together or an image loses its shape.
- When should I use "Invert"?
- The default maps dark areas to dense characters and light areas to spaces — right for dark-on-light sources. If your image is light content on a dark background, or the result looks like a negative, turn Invert on.
- Does this work well for photos?
- Only high-contrast photos with a clear subject. ASCII art has roughly ten brightness levels, so gradients and busy, low-contrast images come out muddy. Line art and silhouettes work best.
- The art looks scrambled when I paste it somewhere — why?
- ASCII art needs a monospace font to align. Proportional fonts (used by most chat apps, docs, and social sites) give every character a different width and break the picture. Keep it in a code block or a
<pre>element. - Is my image uploaded?
- No. The image is read and processed on a canvas in your browser; nothing is sent to a server.
- Why is the image output not as wide as my screen?
- The character width is capped so very large outputs stay usable. For more detail, raise the width slider and view the result in full screen.