ASCII art generator

Drop an image here

or click to choose — JPG, PNG, WebP, GIF — a clear subject on a plain background works best

Fit it into

Drop in an image or type a word and get ASCII art you can copy straight into Discord, a README or a text file. The tool picks the widest art that fits one Discord message with its code block, and the preview is drawn with the same character shape the art will have when you paste it. Nothing is uploaded.

Why ASCII art falls apart when you paste it

ASCII art only works when every character is exactly as wide as every other, so the columns line up. Most chat apps show messages in a proportional font, where an i takes far less room than an M, and the picture slides apart line by line. In Discord the fix is a code block: three backticks before the art and three after. Inside it, text is shown in a monospace font and keeps its shape. Copy for Discord adds those backticks for you.

How big can it be in one Discord message?

A Discord message holds up to 2,000 characters, and everything counts: every character of the art, every line break, and the eight characters of the code block around it. Each row costs its width plus one, so the limit arrives sooner than it looks. We ran three pictures through the tool with the default settings:

Picture shapeWidest that fitsCharacters usedOne column wider
Landscape photo, 4:373 × 271,9992,100 — too long
Widescreen, 16:983 × 231,9332,042 — too long
Portrait headshot58 × 331,9542,047 — too long

The tool searches for that widest version automatically when One Discord message is selected, and the counter above the preview shows how much of the limit is used. Spaces at the end of each line are removed, because they cost characters and show nothing. For a README, a text file or a terminal, pick No limit; for anywhere else with a cap, My own limit.

The usual character ramp is slightly out of order

Image-to-ASCII tools map bright and dark areas to characters that fill more or less of their box. The classic ramp is  .:-=+*#%@, from empty to full. We drew each of those characters in the monospace font this page uses on a Windows 11 PC and counted the ink. Two pairs came out the other way round: + is a little lighter than =, and % is lighter than #. With the long 70-character ramp that circulates online, the order drifts much further.

So this tool does not trust the list. It measures every character in your browser’s monospace font before it draws, and gives each patch of the picture the character whose ink is closest. Different fonts give slightly different orders, which is why the measurement happens on your device and not once on ours.

Why pictures come out stretched, and the shape setting

A monospace character is roughly twice as tall as it is wide. Turn every pixel into a character and a round face becomes a tall oval. The tool therefore uses fewer rows than columns: with the default shape of 0.5, an 80-column version of a 16:9 photo gets about 22 rows. Fonts and line spacing differ, so if the art looks squashed or stretched where you paste it, change Character shape. The preview is drawn with the same shape, so what you see here is what you will get there.

Pictures that turn out well

  • One clear subject on a plain background. At 60–80 characters wide there are only a few thousand cells, so busy backgrounds turn into noise.
  • Strong light and shade. The tool stretches the contrast automatically, mapping the darkest 2% of the picture to empty and the brightest 2% to full, but it cannot invent contrast a flat photo does not have.
  • Crop first with Crop Image so the subject fills the frame.
  • Pick where it will be shown. On a dark background dense characters look bright; on a light one they look dark. A transparent PNG is placed on that background colour before it is converted.

Text banners

The From text tab draws big letters with three classic FIGlet fonts: Standard, Small and Slant. Letters are pushed together until they touch, without any stroke landing on another, like the “fitted” setting of other banner generators. A five-letter word in Standard is about 27 characters wide, so even long names fit in a Discord message. Only basic ASCII letters exist in these fonts.

Nothing is uploaded

The picture is read, shrunk and turned into characters inside your browser. It never leaves your device, and there is no account or watermark.

How this was measured. On 30 September 2026, in Chrome 154 on Windows 11, with this tool and its default settings (dark background, classic characters, shape 0.5). The 2,000-character limit is from Discord’s developer documentation for message content. FIGlet fonts by Glenn Chappell, Ian Chai, Paul Burton and John Cowan, BSD licence.

Frequently asked questions

Why does my ASCII art fall apart when I paste it into Discord?

Discord shows normal messages in a proportional font, where an i is narrower than an M, so the columns stop lining up. Inside a code block every character has the same width. The Copy for Discord button wraps the art in the three backticks that make a code block.

Why is the width set automatically?

A Discord message can hold up to 2,000 characters, and the art, its line breaks and the code block all count. The tool finds the widest version that still fits in one message. You can type a smaller width, or choose No limit for a README or text file.

What is the character shape setting?

Characters in a monospace font are roughly twice as tall as they are wide, so a square picture needs about half as many rows as columns. 0.5 is a good default; if your art looks stretched or squashed where you paste it, change the number until the preview matches, since the preview uses the same shape.

Dark or light background?

On a dark background, dense characters look bright, so bright parts of the picture get characters like # and @. On a light background it is the other way round. Pick where the art will be shown, and use Swap light and dark if you want the negative.

Which fonts are there for text?

Standard, Small and Slant, the classic FIGlet fonts, drawn letter by letter and then pushed together until they touch, like the Fitted setting of other banner tools. Only basic ASCII letters are supported; anything else is shown as ?.

Is my picture uploaded?

No. The image is read, shrunk and turned into characters inside your browser. It never leaves your device.