ASCII Art Generator

Convert any image into ASCII art, with character sets, contrast and width you control.

The ASCII Art Generator runs entirely in your browser. Images you drop in are read on your device and never uploaded.

Open the Fancy Text Generator

About ASCII Art Generator

Turning a picture into text is a ramp problem. Order a set of characters from the one that leaves the most ink on the page to the one that leaves the least, measure each pixel's brightness, and swap it for the character that matches. The other half of the trick is aspect ratio: a monospace cell is roughly twice as tall as it is wide, so the image has to be squashed vertically before conversion or everything comes out stretched. This generator handles both, offers ramps from a 70-level classic to Unicode blocks, and lets you push the contrast — which matters more than anything else, because ASCII art has far fewer tones to work with than a photograph.

Features

How to use the ASCII Art Generator

  1. Drop in an image — high-contrast pictures with a clear subject work best
  2. Set the width in characters and pick a ramp
  3. Push the contrast until the shapes read clearly
  4. Copy the text, or download it as HTML to keep the styling

Example

Input

portrait.jpg · 80 columns · standard ramp

Output

80 × 40 characters
@%#*+=-:. mapped from dark to light

Eighty columns is the classic terminal width, and forty rows is what the aspect correction produces from a square image.

Common errors & troubleshooting

Frequently asked questions

How does image to ASCII conversion work?
Each pixel's brightness is measured and mapped onto a ramp of characters ordered by how much ink they leave. The image is first scaled down to the character grid and squashed vertically to match the shape of a monospace cell.
What is the best character set for ASCII art?
A long ramp such as the 70-character classic gives the smoothest gradients at large sizes, while a ten-character ramp reads better when the output is small. Unicode block shading looks the most solid in a terminal.
What width should I use?
Eighty columns is the traditional terminal width and a good default. Go to 120 or 200 for detail on a large screen, and down to 40 or 60 if the art has to fit in a comment or a chat message.
Why does my ASCII art look stretched?
Because monospace characters are taller than they are wide. Any converter that maps one pixel to one character without correcting for that produces art roughly twice as tall as the original.
Is my photo uploaded to make ASCII art?
No. The image is drawn to a canvas and read pixel by pixel in your browser, so it never leaves your device.

Related tools

All ArrayKit tools