Skip to content

Add to your Home Screen

  1. Tap the Share button in Safari's toolbar.
  2. Scroll down and tap Add to Home Screen.
  3. Tap Add. The generator opens full-screen and works offline.

How to Make ASCII Art

How to make ASCII art: draw it by hand in a monospace text editor, turn words into banners with FIGlet fonts, convert a photo to characters, or generate it with code. Each method needs a monospace font, or the shape falls apart.

By Maya Chen, lettering designer and type educator · Checked by Jordan Hale · · Published · How we review content

Key facts

  • ASCII art can be made four ways: by hand, from text as banner lettering, from a photo, or with code.
  • Any plain text editor with a monospace font and word wrap turned off is enough to draw ASCII art by hand.
  • Characters are about twice as tall as they are wide, so round shapes need roughly twice as many columns as rows.
  • A common shading ramp runs from dark to light: @ % # * + = - : . and a space.
  • Photo converters work best on silhouettes and high-contrast images; busy photos turn to noise.

You need only a monospace font and a place to type it. Which method suits you depends on whether you want to draw, convert or generate.

How to make ASCII art in four ways

Each method starts from the same rule: every character takes the same width, so the picture only holds together in a monospace font.

How do you draw ASCII art by hand?

  1. Open a plain text editor and set a monospace font such as Consolas, Menlo or DejaVu Sans Mono. Turn off word wrap.
  2. Block out the shape with one character, for example #, as if colouring squares on graph paper. Remember that each cell is about twice as tall as it is wide.
  3. Refine the edges. Replace the outline with characters that follow its angle: / and \ for diagonals, | for uprights, _ for flat bottoms, - for flat tops, ( and ) for curves, ' and . for the tops and bottoms of curves.
  4. Add details last: eyes (o, O, ^), noses (v, Y), whiskers (> <).
  5. Check every line by pasting into a code block. Trailing spaces don’t matter; leading spaces do.
Shape Characters
Steep slope / \ `
Gentle slope .-' '-. _.-
Round top .-. .--.
Round bottom '-' `--'
Shading, dark to light @ % # * + = - : .

How do you turn words into big ASCII letters?

Type into the ASCII art generator, choose a FIGlet font and copy. For a terminal, the same fonts are available offline: figlet and toilet are in most Linux package managers and Homebrew, and figlet -f slant Hello prints Hello in the Slant font.

How do you convert a picture to ASCII art?

Use the image to ASCII converter. It shrinks the picture to a grid, measures how dark each cell is and picks a character with matching ink, or switches to Braille dots for finer detail. Silhouettes and high-contrast photos convert best; busy photos turn to noise.

How do you generate ASCII art with code?

The idea behind every converter fits in a few lines of Python with the Pillow library:

from PIL import Image

RAMP = "@%#*+=-:. "            # dark to light
img = Image.open("cat.png").convert("L")
cols = 60
rows = int(cols * img.height / img.width * 0.5)   # cells are about twice as tall as wide
img = img.resize((cols, rows))
for y in range(rows):
    print("".join(RAMP[img.getpixel((x, y)) * len(RAMP) // 256] for x in range(cols)))

For text banners in Python, the pyfiglet package uses the same FIGlet fonts.

What mistakes break ASCII art?

  • Pasting into a proportional font. Use a code block, terminal or monospace document.
  • Tabs. Editors show tabs at different widths. Convert tabs to spaces.
  • Automatic formatting. Markdown turns *text* into italics and lines of dashes into rules; chat apps turn :) into emoji. Code blocks prevent both.
  • Wide characters. Emoji and Chinese, Japanese or Korean characters take two columns and push everything after them out of line.

Once you know how to make ASCII art, learn from ready-made pieces by browsing the ASCII art galleries, and read what ASCII art is for its history.

Frequently asked questions

Basics

How to make ASCII art from scratch if I have never drawn any?
Open a plain text editor in a monospace font, turn off word wrap, and block out a simple shape such as a cat face with one character. Then swap the outline for slashes, underscores and brackets that follow its angles. Add small details last, and check the result in a code block.

Where it works

What is the best program for drawing ASCII art?
Any plain text editor with a monospace font works: Notepad, TextEdit in plain text mode, VS Code or any code editor. Turn off word wrap and automatic formatting. Dedicated ASCII editors add features such as drawing lines with the mouse, but they are not needed to start.
Can I make ASCII art on my phone?
Yes. The ASCII art generator and image to ASCII converter run in a mobile browser, so you can type a word or choose a photo, then copy the result. Hand drawing is harder on a phone because the keyboard and font are not monospace in most notes apps.

How it works

How do I make ASCII art of a photo?
Use an image to ASCII converter. Pick a photo with a clear subject and plain background, crop it, raise the contrast, then choose a width of 40 to 80 characters. Our converter runs in your browser, so the photo is not uploaded.
How to make ASCII art in Python?
Open the image with Pillow, convert it to greyscale, resize it to a column count with the row count halved for character shape, then map each pixel brightness to a character from a dark-to-light ramp such as @%#*+=-:. and print the rows. For text banners, the pyfiglet package uses FIGlet fonts.
How do I make ASCII art in the terminal?
Install figlet or toilet from your package manager or Homebrew, then run a command such as figlet -f slant Hello to print the word in the Slant font. Both tools print to standard output, so you can redirect the result into a text file, and toilet adds colour and filter options.

Tips & limits

What characters should I use for shading in ASCII art?
Pick characters by how much ink they show. A common ramp from dark to light is @ % # * + = - : . followed by a space. Use the dense end for shadows and the sparse end for highlights, and keep to five or six characters so the gradient stays smooth rather than speckled.
Why do round shapes look tall and thin when I draw ASCII art by hand?
Characters are about twice as tall as they are wide, so a grid of 20 by 20 characters is a tall rectangle, not a square. When you draw by hand, use about twice as many columns as rows for round shapes; converters do this automatically.
How to make ASCII art look right, and which font should I use?
Use a monospace font such as Consolas, Menlo or DejaVu Sans Mono, because every character, including the space, then takes the same width. Turn off word wrap, convert tabs to spaces, and paste finished art into a code block so chat apps and Markdown do not reformat it.