What ASCII Art Actually Is
ASCII art is a picture made only of characters that exist in a plain text file. No colour, no font choice, no image data — just letters, punctuation and symbols arranged so that the gaps between them read as shapes. The restriction is the whole point: a text file survives being emailed, pasted into a comment, printed on a dot-matrix printer or displayed in a terminal that has no graphics at all.
The practice predates the personal computer. Typists were arranging letters into pictures on typewriters in the 1960s, because a typewriter offers exactly one thing: a fixed-width grid. When terminals arrived they inherited the same grid, and the art form moved with it. Bulletin board systems in the 1980s and 1990s made it a culture — a 2400-baud connection could not carry an image, but it could carry a few kilobytes of text, so signatures, menus and title screens were all drawn in characters.
The name is slightly wrong, and worth knowing. Strict ASCII art uses only the 95 printable characters of the original ASCII set. What most people call ASCII art today also uses the box-drawing and block characters from later Unicode blocks — █ ▓ ▒ ═ ║ ╔ — which did not exist in 1963. That is why the art below can use solid blocks and still be called ASCII: the term stuck even after the character set grew.
How A Banner Generator Works
Every letter on this page is defined as a grid of seven rows and five columns, stored as ones and zeros. That is the entire font — 55 glyphs, each a short string like 01110/10001/10001/11111/10001/10001/10001 for the letter A. When you type a word, the generator does four things:
- Uppercases and trims the input to 18 characters, because a longer word would run off the right edge of any normal window.
- Looks up each glyph in the table, falling back to a question mark for anything unmapped.
- Walks one row at a time, printing your chosen character wherever the bitmap has a one and a space wherever it has a zero.
- Adds the letter gap — one, two or zero spaces — between glyphs so the letters do not merge into a smear.
Because the font is a bitmap rather than a real typeface, the output is exactly as tall as it is defined to be. There is no hinting, no kerning and no antialiasing to go wrong, which is why the same input produces identical output in every browser, in a terminal, in a code comment and in a printed manual.
How To Use It
- Type your word. One word in capitals reads best; the bitmap font has no lowercase, so everything is converted. Eighteen characters is the ceiling.
- Pick the character. # and @ give the classic look. Full block █ gives a solid headline weight; light shade ░ gives a ghosted, more delicate version. The character changes the weight, not the shape.
- Set the letter gap. One space is the default. Two spaces helps when you are using a character that is visually narrow, like + or *. Zero gap is only usable with block characters, where adjacent cells touch and form continuous shapes.
- Copy it. The copy button puts the raw text on your clipboard with the line breaks intact, ready to paste into a code comment, a README, a Discord message or a text file.
Two practical notes. Paste into something monospace — a proportional font like Arial will destroy the alignment instantly, because each character occupies a different width. And if you are pasting into a platform with a line-height override, expect the vertical gaps between rows to open up; block characters look worst when that happens.
Why The Character Set Changes The Look
The bitmap is fixed, so the only variable left is how much ink each cell carries. That single choice changes whether the result reads as a headline, a texture or a rumour.
- # and @ — the traditional choice. The glyphs are dense but their edges are ragged, so the letters look hand-stamped. This is what most people mean by ASCII art.
- █ (U+2588 full block) — the cell is filled edge to edge, so the letters come out solid and geometric. Best for a title that has to read at a glance.
- ▓ (U+2593) and ▒ (U+2592) — the block characters with a dither pattern. The letter is still legible but the fill looks like a halftone screen, which reads as "printed" rather than "terminal".
- *, +, X — thin glyphs. At small sizes the letters start to break up, which is either a bug or a style, depending on what you wanted.
One caveat on the block characters: they require a font that actually contains U+2588 through U+2593. Almost every system font does, but a few terminal fonts and some web-safe stacks fall back to a replacement box, which turns your banner into a row of tofu. If that happens, switch to # — the shape is identical.
Where ASCII Art Still Works Today
The obvious question about a 1960s technique is why anyone would use it now. The answer is that there is still a large amount of text-only surface area on the internet, and it all rejects images.
- Source code. A banner in a file header survives every editor, every diff and every code review tool. It is the only graphic that will still be there when the repository is cloned in ten years.
- READMEs and terminal output. Tools that print a logo on startup use it because the terminal cannot load a PNG. It is the standard way to make a command-line program feel finished.
- Plain-text email and signatures. Many mailing lists strip HTML. A block-character banner survives where an inline image is silently removed.
- Chat platforms with fixed-width blocks. Wrapped in a code block, ASCII art keeps its alignment on Discord, Slack and most forums — which is still the cheapest way to post a large graphic without an upload.
- Anything that must be copyable. If the reader needs to take the thing with them, a picture is a dead end and text is not.
It is also worth saying plainly where it fails: on a phone. A 60-character-wide banner does not fit a 390-pixel screen at a readable size, so it will either shrink to illegibility or force horizontal scrolling. If the audience is mostly mobile, a real image is the better answer and this tool is the wrong one.
Box-Drawing Characters And The ANSI Era
The reason ASCII art looks the way it does today owes less to ASCII than to what came after it. When IBM's PC character set arrived it included a block of box-drawing characters — the single and double lines, the corners and the tees that let a text-mode program draw a window with a border. Combined with the shading blocks, a programmer could make a menu, a frame or a frame around a logo without a single pixel of graphics.
Bulletin board systems pushed this further into a style called ANSI art, which added colour escape codes to the same character grid. A BBS title screen was a 80×25 grid where each cell could carry a colour, so artists built gradients, portraits and logos out of blocks and lines. That tradition is why so much surviving ASCII art uses ╔ ═ ╗ ║ ╚ rather than + - |: the double-line versions read as deliberate design, while the plain versions read as a quick sketch.
Two lessons carry over to modern use. First, frames are cheap — a box drawn with box-drawing characters costs a few bytes and instantly makes plain text look composed. Second, alignment is everything: in a fixed 80-column grid a single character too many on one line breaks the whole drawing, which is why the classic pieces are so carefully measured and why they still break the moment someone pastes them into a proportional font. Nothing about the art has changed since; what changed is that the grid is no longer guaranteed.
The Copy-Paste Library
The pieces below are the survivors — the handful of drawings that have been copied from signature to signature since the dial-up era. They work for the same reason the banners do: they are short, they are symmetric enough to survive minor mangling, and they read as a shape rather than as a sequence of punctuation.
A word of warning about one of them. The shrug and the table flip contain characters outside the original ASCII set, and some older systems render the raised arms or the table as boxes. If you paste one and it comes out mangled, the receiving platform is at fault, not the art — try a different channel rather than editing the drawing.
If you want to make your own rather than copy one, start with a small canvas — five rows by seven columns is plenty for a single object — and draw it on paper first. The two things that make a character drawing succeed are a silhouette that is recognisable at a glance and a set of rows that are all exactly the same length. Symmetry helps enormously, because the reader's eye fills in the gaps; that is why cats, hearts and stars dominate the genre and photorealistic portraits almost never appear in it.
FAQs
Click Copy ASCII under the banner, or the Copy button on any card in the library. The raw text goes to your clipboard with line breaks intact.
Because the place you pasted it into is using a proportional font. ASCII art only lines up in a monospace font — Courier, Consolas, Menlo, or a code block on most chat platforms.
Eighteen. Beyond that the line is trimmed, because a 5-column glyph plus a gap per character gets very wide very fast and stops fitting in any normal window.
The classic 5×7 bitmap font only defines capitals, digits and punctuation. Lowercase input is converted to uppercase rather than dropped.
Only the fill. The bitmap is identical, so # gives a ragged, stamped look and █ gives a solid geometric one.
Strictly, no — █ and ▒ come from later Unicode blocks. The name "ASCII art" stuck anyway and is used for any character-drawn picture.
The banners you generate, yes. The library pieces are traditional anonymous drawings with no known author, but if you are putting one on merchandise, do your own check first.
Wrapping the pasted art in a code block (three backticks) fixes alignment. Without it, Discord's proportional message font scrambles the spacing.
No. It converts text into a banner using a bitmap font. Turning a photo into ASCII is a different process and needs image processing, which this page does not do.
# if the README renders as plain text, or █ if it renders as Markdown in a proportional font — neither will align, but the block version still reads as a solid shape.
No. The whole conversion runs in JavaScript in your browser, and the font table ships with the page.