Tech

How to Make ASCII Art

May 12, 2026 · 6 min read

ASCII art is the practice of making images, banners, and decorative typography out of nothing but plain text characters. It’s older than the World Wide Web — it goes back to teletypes and dot-matrix printers in the 1960s — and it’s still everywhere: GitHub READMEs, terminal MOTD banners, Discord and Slack messages, retro forum signatures, social media bios. The reason it survives is that it works in places images don’t.

This guide covers how to actually make ASCII art that looks right when someone else pastes it.

The two ways to make ASCII art

1. Use a generator (90% of cases)

For converting text to a stylized banner, an ASCII art generator takes seconds. Type the text, pick a style (block letters, classic hash, mini, shadow), copy the result, paste it where you want it. That’s the whole flow.

When this works well:

  • README headers like the one at the top of a GitHub project
  • Terminal welcome banners (“Welcome to my server”)
  • Section dividers in code comments
  • Quick “AHHHH” emphasis in chat

When this doesn’t work:

  • You want a recognizable image (a logo, a face, a specific drawing) — generators only handle text
  • You need extremely compact output for a tight space — most generators produce 4–8 line tall banners
  • You want non-Latin characters or emoji-driven art — most generators are ASCII-only

2. Draw it by hand (specific image)

If you want something custom — a logo in ASCII, a small picture, a non-Latin character set — drawing it manually is still the way. Tools like JavE (an actual ASCII drawing editor) or even just a fixed-width text editor let you place characters precisely.

For converting a photo to ASCII art, image-to-ASCII converters trace pixel brightness and pick characters of varying density. The results are best at large sizes (200+ characters wide) and look like noise when scaled down.

The character palette

Classic ASCII art uses these characters most often:

 . , : ; ' " ` ~ - _ = + < > / \ | ! ? * # @ % & $

Plus Unicode block characters for modern “filled” looks:

 ░ ▒ ▓ █ ▀ ▄ ▌ ▐

The denser the character, the darker it reads on screen. A common density ramp from light to dark:

. , : ; - = + * # @

Or with blocks:

░ ▒ ▓ █

This matters because the same ASCII art can render differently in different fonts. A # in a thin font looks lighter than a # in a heavy font. If your art will be pasted into something you don’t control, stick to the bolder characters (@, #, ) and avoid relying on subtle shading.

Where ASCII art breaks (and how to fix it)

Proportional fonts

If you paste ASCII art into anything that uses a proportional font (Gmail, Notion, most word processors, Twitter), it will look broken because each character takes a different amount of horizontal space. ASCII art only works in monospaced fonts where every character is the same width.

Fix: Wrap it in a code block. Markdown code fences (triple backticks), Discord/Slack code blocks (also triple backticks), HTML <pre> tags — all force monospace. Without a code block, paste it nowhere except a terminal or text editor.

Trailing whitespace stripped

Some platforms (notably some email clients and forums) strip trailing whitespace on each line. ASCII art that relies on leading-or-trailing spaces for layout can collapse.

Fix: Use a generator that pads with characters rather than spaces, or test the result by sending it to yourself before posting.

Line wrapping

ASCII art that’s wider than the container will wrap onto the next line and lose its shape. This is a big issue in Discord on mobile, GitHub on narrow screens, and any chat with a sidebar.

Fix: Keep banners under 60 characters wide if it has to render on mobile, or under 80 for desktop-only contexts.

Inconsistent character rendering

Unicode block characters (, ) look different in different terminal fonts. Some fonts have gaps between blocks; others render them seamlessly. If you’re targeting a specific terminal, test there.

Where to use ASCII art that actually works

GitHub README headers. Project name in big block letters at the top of README.md, wrapped in a fenced code block. This is by far the most common use. Examples: most CLI tools you’ve installed include this in their --help output.

Terminal MOTD. The “message of the day” that shows when you SSH into a server. Plain text only, so ASCII is one of the only ways to add visual personality.

Code comments for section headers. Inside a long file, an ASCII banner makes sections findable when you scroll. Particularly useful in single-file scripts or long config files.

Discord and Slack. Wrap in triple backticks to get a monospace code block. The art will render correctly on both desktop and mobile. Keep it under 60 chars wide.

Plain-text email signatures. A small ASCII signature is still acceptable in plain-text emails to mailing lists, technical newsletters, or old-school forums.

Twitter / X bios and posts. Mixed results — bios sometimes render in a proportional font, sometimes monospace. ASCII art in tweets reliably works only in code-block formatting, which not all clients respect.

Quick anatomy of a good ASCII banner

 ████████╗ ██████╗  ██████╗ ██╗     ██████╗ ██╗   ██╗███████╗
 ╚══██╔══╝██╔═══██╗██╔═══██╗██║     ██╔══██╗██║   ██║██╔════╝
    ██║   ██║   ██║██║   ██║██║     ██████╔╝██║   ██║███████╗
    ██║   ██║   ██║██║   ██║██║     ██╔══██╗██║   ██║╚════██║
    ██║   ╚██████╔╝╚██████╔╝███████╗██████╔╝╚██████╔╝███████║
    ╚═╝    ╚═════╝  ╚═════╝ ╚══════╝╚═════╝  ╚═════╝ ╚══════╝

What makes this work:

  • Consistent character thickness (all box-drawing characters)
  • Even line height (every letter is 6 rows tall)
  • Closed shapes (no awkward gaps)
  • Under 80 chars wide (fits in any code block)

You can make this exact style with the ASCII generator — pick the Block style. For something lighter, the Mini style produces 4-row art that fits in tighter spaces like terminal status bars.

When ASCII art is wrong

For anything that needs to look polished — landing pages, professional docs, customer-facing UI — ASCII art is rarely the right call. Use an actual SVG or PNG. ASCII has a specific aesthetic (retro, terminal, hacker) that doesn’t fit clean modern interfaces.

But for places where you only have plain text to work with — and there are still a lot of them — ASCII is the only tool for the job.

Share