Image to ASCII Art
Turn any photo into ASCII art with adjustable width, character sets and invert, then copy it or download it as text or PNG.
Drag & drop an image here, or click to browse
No uploads. Your files stay on your device.
How it works
Drop a photo and it is drawn onto a canvas in your browser, split into a grid of cells and
each cell is averaged into a single brightness value. That brightness picks a character from
a ramp that runs from dense (@) to light (a space), so dark areas become heavy
characters and bright areas nearly disappear. Because monospace characters are about twice as
tall as they are wide, the row count is halved to keep the picture from looking stretched.
Increase the width for more detail (200 characters is plenty for a poster) and drop it to
40–60 if you want something that fits in a chat message or a code comment. Use
Invert when the art will sit on a dark terminal background, and pick the
Blocks set for a smoother, more photographic look. Copy the result as text,
download it as a .txt file, or export a rendered .png — everything
happens locally, your image is never uploaded.
Frequently asked questions
How do I convert a picture into ASCII art?
Drop your image on the tool and it is converted straight away. Set the width in characters (80 is a good default, 200 gives poster-level detail), pick a character set, and tick Invert if the art will sit on a dark background. Then copy the result or download it as a .txt file or a rendered .png. The picture is decoded with the Canvas API on your own device, so nothing is uploaded.
Why does ASCII art look stretched, and how is that fixed?
Monospace characters are roughly twice as tall as they are wide, so using one character per pixel row squashes the picture vertically. This tool halves the number of rows relative to the number of columns, so a 200 × 100 photo at 20 characters wide becomes 20 × 5 characters and keeps its original proportions.
Which character set should I choose?
Standard (@%#*+=-:. ) is the classic ten-shade ramp and reads well at any size. Detailed uses 70 characters for the smoothest gradients and is best at large widths. Blocks uses the Unicode shading blocks █▓▒░ for a solid, photographic look. Minimal (@:. ) is high contrast and works well for logos, silhouettes and small chat-sized art.