Two ways to make a picture out of characters. Type something and it is built from smaller characters using one of 60 FIGlet fonts — each one previewed with your own text, not picked blind from a list. Or drop in an image and it becomes characters, in colour if you want, entirely inside your browser. The guide below covers the thing that actually decides whether this works for you: why ASCII art falls apart the moment it lands in a proportional font, and the one trick that fixes it almost everywhere.
Text mode
- 60 FIGlet fonts in six groups: Classic, 3D, Outline, Script, Tech, Compact - Every font is previewed with the text you typed, not with a fixed sample - Letter spacing: a continuous slider from 0 to 14. 0 is the font's own smushed layout, 1 is fitted, 2 is full, and each step above 2 inserts one more blank column - Text colour and background colour are both free choices, including a transparent background
Image mode
- Output width: 20 to 300 characters - Five character ramps: `@%#*+=-:. ` (standard), a 70-step detailed ramp, block characters `█▓▒░`, binary `10`, and minimal `#.` - Colour is kept per character. Copy as HTML or download a PNG; plain-text copy is monochrome because plain text cannot carry colour - Accepts JPG, PNG, WebP, HEIC, AVIF, TIFF and TGA, up to 10 MB - Conversion runs on a canvas in your browser. The file is never uploaded and nothing is stored
Export
- Copy as plain text, copy as coloured HTML, download .txt, download PNG (transparent background optional)
The one thing that breaks ASCII art: a proportional font.
Every piece of ASCII art on this page rests on one assumption — that every character occupies exactly the same width. Paste it somewhere that renders text in a proportional font (where `i` is narrower than `m`) and the columns slide out of alignment. The art does not get slightly worse; it stops being readable.
Where it survives:
- Code blocks. On Discord, Slack, GitHub, Reddit and most chat apps, wrapping the art in triple backticks forces a monospace font. This is the single most useful trick on this page. - Terminals, README files, .txt files, source-code comments. Monospace by default. - Anywhere you can set the font yourself.
Where it does not:
- Bios, captions, post bodies, document editors. These are proportional, and the art arrives skewed. - Inputs that collapse whitespace. Some fields turn runs of spaces into a single space, which destroys the left-hand alignment even in a monospace font. - Narrow screens. Art 100 characters wide needs a wide viewport or it soft-wraps, and a wrapped line of ASCII art is a broken line.
When in doubt, download the PNG instead. An image of ASCII art looks correct everywhere, because the alignment is baked in. That is the honest answer for Instagram captions, slide decks, and anywhere else you do not control the font.
They both produce pictures-made-of-text, and almost nothing else is shared.
Text mode is typography. A FIGlet font is a hand-drawn alphabet: somebody sat down and decided which characters make the best diagonal stroke for a capital A. The tool looks each letter up and stitches the blocks together. The output is crisp, always legible, and correct at any size — because nothing is being approximated. What you cannot do is put anything in it that is not a letter.
Image mode is sampling. The picture is shrunk to a grid, each cell's brightness is measured, and a character of matching density is dropped in — `@` where it is dark, a space where it is light. Nothing is hand-drawn; the whole result emerges from the brightness ramp. It can render anything, and it is always an approximation.
So: a word or a short phrase → text mode. A photo, a logo, a drawing → image mode. And if you want your name in Japanese, image mode is the answer too, via the tracing button — those letterforms are not in any .flf file.
The width in characters is the resolution. It decides everything else.
- 40–60 characters — an icon. Enough for a logo or a simple silhouette, not enough for a face. - 80–120 characters — the sweet spot. Fits in a terminal, still fits most code blocks, and keeps enough gradient for a photo to stay recognisable. - 150–300 characters — detail you will mostly lose. Wider than most screens, so it wraps, and a wrapped line of ASCII art is a broken line.
The character set is the second lever. `@%#*+=-:. ` is the classic ten-step ramp and the safe default. The detailed ramp has about seventy steps and gives smoother gradients on large photos, but at small widths those extra steps are just noise. Block characters (█▓▒░) give the most solid, poster-like result and are the best choice for logos.
Invert is not a style, it is a correction. The ramp assumes light characters on a dark background. If you are pasting into a light-background editor, or converting black text on white, turn invert on — otherwise you get a negative.
FIGlet fonts have no non-Latin letterforms. Not “poor support” — the glyphs are not in the files. Japanese, Chinese, Korean, Cyrillic, Greek, Arabic, emoji: none of them can come out of a .flf. Rather than returning an empty box, this page names the characters it cannot draw and offers to trace them through the image converter instead. That is the same technique the Japanese AA generators use.
Accented Latin does work. `café`, `señor`, `Müller` and `Ação` all render properly. Those characters are genuinely in the font files, and we ship the complete files rather than the trimmed-down versions that silently drop them — trimming would have cut the default font from 30 KB to 7 KB, and turned `café` into `caf`.
Colour is not really ASCII. Coloured output is characters plus markup. It looks good and it is genuinely useful, but it only survives as HTML or as an image — the moment it becomes plain text it is monochrome again. That is a property of plain text, not a limitation of this tool.
_ _ _ _ | | | | ___| | | ___ | |_| |/ _ \ | |/ _ \ | _ | __/ | | (_) | |_| |_|\___|_|_|\___/
Looks skewed where you pasted it? Wrap it in triple backticks — that forces a monospace font on Discord, Slack, GitHub and Reddit. Where you cannot set the font, download the PNG instead.