ASCII Art Generator

Turn any image into text-character art, right in your browser.

Click to choose an image or drag and drop

Convert a photo or image into ASCII art by mapping each area's brightness to a character — adjustable width, character set, and an optional colored render you can download as a PNG. Runs entirely in your browser.

How to make ASCII art

  1. Choose an image from your device.
  2. Set the width — the number of characters per line. More characters show more detail.
  3. Pick a character set: Standard, Detailed or Blocks.
  4. Copy the text, or turn on colored output and download it as a PNG.

Getting the best result

  • Use high-contrast images. Portraits with plain backgrounds, logos and silhouettes work best; busy scenes turn into noise.
  • Crop tightly around the subject before converting.
  • Match the width to where it will go: about 60–80 characters for code comments and chat, 100–150 for a detailed piece viewed full screen.
  • Use a monospaced font such as Courier or Consolas when pasting the text, or the shapes won't line up.

Character sets

  • Standard uses a short ramp of characters from light to dark, for a classic, readable look.
  • Detailed uses many more characters for finer shading.
  • Blocks uses solid block characters for a bold, pixel-art style.

Where people use ASCII art

ASCII art dates back to typewriter and early computer art, when text was the only way to make pictures on screen. Today it shows up in code comments, README files, terminal welcome screens, forum signatures and chat messages, and as a fun way to print a photo using only text.

Frequently asked questions

Is my image uploaded anywhere?

No — the image is read and converted entirely inside your browser using a canvas element. It's never sent to a server.

How does it decide which character to use?

Each block of the image is averaged down to a single brightness value, the brightness range of the whole photo is stretched to use the full range of the ramp (so flat, evenly-lit photos still come out crisp instead of muddy), then each value is mapped onto a ramp of characters from "sparse" (spaces, dots) to "dense" (@, #, %) — darker areas get denser characters.

Why does my art look squashed or stretched?

Text characters are taller than they are wide, so a straight pixel-to-character mapping would distort the image. This tool corrects for that automatically based on the width you choose.

Can I get a colored version?

Yes — turn on "Colored output" to render every cell as a solid colored block sampled from that part of the image (so highlights and shadows both stay visible), then download it as a PNG. Color can't be preserved in plain copyable text, so text mode uses characters instead.

Why does the art look wrong when I paste it?

The app you pasted into is probably using a proportional font, where letters have different widths. Switch to a monospaced font, or paste it inside a code block.