Basics

What Is ASCII Art? A Short History and the Main Types

How pictures made from keyboard characters work, and where they came from.

Last updated:

ASCII art is a picture made only from characters you can type on a keyboard. There are no colors and no lines. Characters such as /, \, _, and | are arranged in rows until they form letters or a drawing.

 /\_/\
( o.o )
 > ^ <

A three-line cat and the large logo a terminal program prints on startup are both ASCII art.

What is ASCII?

ASCII is a character code first published as a United States standard in 1963. It gave every computer the same number for each character. Of its 128 codes, 95 are printable: the upper- and lowercase English letters, the digits, the space, and symbols such as ! @ # $ % ^ & * ( ) - _ = + [ ] { } ; : ' " , . < > / ? \ | ~.

Almost every computer and font supports these 95 characters, so a picture that uses nothing else can be pasted anywhere without turning into broken glyphs. That is a large part of why ASCII art has lasted so long.

A short history

  • Typewriter pictures. Drawing with characters is older than computers. From the late 19th century, people made pictures on typewriters by striking letters and symbols over each other.
  • Printers and research labs. In the 1960s, printers that could draw images were rare, so pictures were printed with characters instead. A well-known example is the 1966 work by Ken Knowlton and Leon Harmon at Bell Labs, who turned a photograph into a grid of small symbols.
  • Emoticons. In 1982, Scott Fahlman at Carnegie Mellon University proposed :-) as a marker for jokes on a message board.
  • BBS and ANSI art. On the dial-up bulletin boards of the 1980s and 1990s, login screens and signatures were decorated with character art. Pictures that use the block characters of the IBM PC (█ ▓ ▒ ░) together with color are called ANSI art.
  • FIGlet. In 1991, Glenn Chappell and Ian Chai wrote FIGlet, a program that turns text into a large banner made of characters. It is still the most common way to make startup logos for terminal programs and banners for README files.
  • Kaomoji. In Japan, faces that are read upright, such as (^_^), became popular. As Unicode spread, people began mixing characters from many scripts, as in ʕ•ᴥ•ʔ and ¯\_(ツ)_/¯.

Types of ASCII art

Type What it is Example
Text banner Text turned into large multi-line letters with a FIGlet font Startup screens, README titles
Line art Outlines drawn with characters such as / \ _ | A cat, a cake
Shaded art Areas filled with characters of different density, such as .:-=+*#%@ A converted photograph
Block and ANSI art Pictures built from block characters such as █ ▓ ▒ ░ Game logos, pixel art
Kaomoji and one-liners A face or an action on a single line (╯°□°)╯︵ ┻━┻

Strictly speaking, only pictures limited to the 95 ASCII characters are ASCII art. Pictures that use characters outside that set, such as █ or ツ, are Unicode art or text art. In everyday use, people call all of it ASCII art.

Why does it need a monospaced font?

ASCII art assumes that every character has the same width. In a monospaced font, the kind used in code editors and terminals, i and W take up the same space, so the rows line up.

Most messengers and social apps use proportional fonts, where each character has its own width. Paste ASCII art there and spaces and i become narrow, W and @ become wide, and the picture shifts sideways.

There are three ways around this.

  1. Use a code block. On Discord, Slack, GitHub, and other places that support code blocks, wrapping the art in ``` switches it to a monospaced font. See How to paste ASCII art into Discord.
  2. Use narrow art. A one-line kaomoji or a narrow font hides the problem. See Why ASCII art breaks in chat apps.
  3. Send an image. Save the art as a PNG and it looks the same in every app.

Where is it used?

  • Logos for terminal programs and server login screens
  • Title banners in a GitHub README and section markers in code comments
  • Discord server announcements and game chat
  • Birthday messages and social media bios

Type your text on lab.ascii to get text banners in 12 fonts at once. To convert a photo, use the image to ASCII converter.