Image to ASCII Art
Turn any image into ASCII text art. Adjust width, character set, contrast, and invert, then copy or download the result. Free, private, runs in your browser.
Image to ASCII Art
…or drag & drop a JPG, PNG, GIF, or WebP. Your image never leaves your browser.
How to Use the Image to ASCII Converter
Add an image
Click "Choose an image" or drag a photo, logo, or icon onto the drop zone. The picture is converted entirely on your device — nothing is uploaded anywhere. High-contrast images with a clear subject convert best.
Set the width
The width slider controls how many characters wide the art is — more characters mean more detail but a larger result. Start around 90 and increase for portraits or detailed images, decrease for simple shapes or to fit a narrow space.
Tune the look
Choose a character set — Standard, Detailed (more grey levels), Blocks (shaded squares), or Simple — and adjust contrast to make the subject pop. Tick "Invert" if you will paste the art onto a dark background so the light and dark areas read correctly.
Copy or download
When you are happy, copy the text to your clipboard or download it as a .txt file. Paste it into a README, a terminal banner, a chat message, a code comment, or anywhere monospaced text is shown.
How Images Become Text
Brightness, Mapped to Characters
ASCII art turns a picture into text by exploiting a simple visual trick: different characters have different "ink coverage." An @ or a # fills most of its cell with dark pixels, a + or = fills some, and a period or a space fills almost none. Line up characters from heaviest to lightest and you have a greyscale ramp made of glyphs. To convert an image, the tool shrinks it to a small grid — one character per cell — measures the brightness of each cell, and picks the character whose ink coverage matches that brightness. Bright areas of the photo become light characters or spaces; dark areas become dense characters. Step back from the screen, or shrink the text, and your eye blends the characters back into a recognisable image. It is the same principle as newspaper halftone printing, just with letters instead of dots.
Two details make the difference between a smudge and a recognisable picture. The first is brightness measurement: human eyes are far more sensitive to green than to red or blue, so the tool weights the colour channels accordingly — it uses the ITU-R BT.601 luma weights, 0.299 red, 0.587 green and 0.114 blue — rather than averaging them naively — this keeps the tones faithful to how the image actually looks. The second is aspect ratio. Monospaced characters are taller than they are wide — typically about twice as tall — so if you used one character per pixel the result would look vertically stretched. The tool compensates by sampling roughly half as many rows as columns, which restores the image's true proportions. Add adjustable contrast to separate a subject from its background, an invert option for dark-themed displays, and a choice of four character ramps — the 70-character "Detailed" ramp is Paul Bourke's 1997 grey-scale ramp, and "Standard" is his 10-character ramp reversed — and you have control over exactly how the conversion reads. Fully transparent pixels (alpha below 125 of 255) are always written as a space, whatever their colour.
"ASCII art is halftone printing for the keyboard era — brightness becomes a character, and a grid of letters becomes a picture your eye reassembles."
An Art Form Older Than the Web
Text-based images predate the modern internet by decades. Typewriter art goes back at least to 1898 — Flora Stacey's typewritten butterfly is the best-known early example — the technique flourished on teletype machines and line printers, and it became a defining aesthetic of bulletin-board systems, early email signatures, and Usenet in the 1980s and 90s. It endures because it is the most portable image format imaginable: pure text works in any terminal, any chat app, any code comment, any plain-text file, with no image support required at all. Developers still use it for command-line tool banners and README headers; gamers and chat communities use it for emotes and flair; and it remains a fun, low-stakes way to turn a favourite photo into something you can paste anywhere. Because this converter runs entirely in your browser, you can turn private photos, screenshots, or unreleased logos into ASCII without uploading them to anyone — the image is read locally and never leaves your device.
Characters are twice as tall as wide, and the tool corrects for it
ASCII art works by matching each character's ink coverage to a patch of brightness.
Typewriter art dates to at least 1898 — Flora Stacey's butterfly, reproduced in Alan Riddell's Typewriter Art (1975).
It became iconic on 1980s–90s bulletin-board systems and Usenet.
A dense glyph like @ reads as dark; a space reads as light.
Brightness uses the ITU-R BT.601 weights: 0.299 red, 0.587 green, 0.114 blue.
Monospace characters are about twice as tall as wide — the tool corrects for it.
The Detailed ramp is Paul Bourke's 70-character ramp (1997); Standard is his 10-character ramp reversed.
Inverting the ramp makes art readable on dark terminal backgrounds.
Rows are sampled at half the column count (× 0.5), the correction for a 1:2 monospace cell.
This converter runs in your browser — your image is never uploaded.
Frequently Asked Questions
- Upload or drag in an image and it is converted instantly. The tool shrinks the picture to a character grid, measures the brightness of each cell, and replaces it with a character of matching density. Adjust the width, character set, contrast, and invert option to taste, then copy the text or download it as a .txt file.
- High-contrast images with a clear subject convert best — a face, a logo, a silhouette, or anything where the subject stands out from its background. Busy or low-contrast photos can read as mush, but raising the contrast slider often rescues them. Simple, bold graphics give the cleanest results.
- It should not, because the tool already corrects for the fact that monospaced characters are taller than they are wide by sampling about half as many rows as columns. If it looks off when pasted elsewhere, make sure you are viewing it in a true monospaced font — proportional fonts will distort the alignment that ASCII art depends on.
- Each set is a "ramp" of characters from dark to light. Standard is a 10-character ramp (
@%#*+=-:.and space); Detailed is Paul Bourke's 70-character ramp from his 1997 note on character representation of grey-scale images; Blocks uses the four shade characters █▓▒░ plus a space; and Simple uses five characters for a bold, minimal style. Try each — the best one depends on your image and where you will paste it. - By default the art is built for dark text on a light background (like this page). If you will paste it somewhere with a dark background — a terminal, a dark-themed chat, or a code editor in dark mode — tick Invert so that bright areas of the image use dense characters and dark areas use sparse ones, keeping the picture readable.
- No. The conversion happens entirely in your browser: the image is drawn onto an HTML canvas at the chosen width and read back with getImageData. It is never uploaded, stored or transmitted — the page makes no network request while converting — so you can safely convert private photos, screenshots or unreleased artwork.
- Anywhere that shows monospaced text: a README or wiki, a terminal banner, a code comment, a chat or forum message, a .txt file, or a command-line tool's startup output. For correct alignment, the destination must render it in a monospaced font — most code and terminal contexts do this automatically.
- This tool produces classic monochrome ASCII based on brightness, which is the most portable form — it works as plain text anywhere. It converts colour to brightness using a perceptually weighted formula so the tones stay faithful, but the output itself is plain characters with no colour codes, so you can paste it into any text context without worrying about formatting.
- It depends on where it will live. For a chat message or a narrow code comment, 60–80 characters keeps it compact; for a detailed portrait you want to view large, 120–200 captures far more nuance. A good habit is to match the width to the line length of wherever you will paste it so it does not wrap.
- Any cell whose alpha is below 125 of 255 is written as a space before its colour is even measured, so a transparent PNG logo keeps its silhouette instead of turning into a black or white block. If you want the background to read as solid, flatten the image onto a colour first. Semi-transparent edges above that threshold are treated as opaque and mapped by brightness like any other pixel.
Method & sources
How it computes
Draws the image onto an HTML canvas of W × round(W × H/W × 0.5) cells (one canvas pixel per character;
What this tool implements
- Luma is ITU-R BT.601 (0.299, 0.587, 0.114) applied to the browser's 8-bit sRGB values — a perceptual weighting, not a plain channel average, so green-heavy and blue-heavy areas of equal brightness read the same.
- Aspect correction is a fixed 0.5 row factor: monospace cells are treated as twice as tall as wide, which matches most terminal and code fonts and is why the output must be viewed in a monospaced font.
- The 'Detailed' ramp is Paul Bourke's 70-character grey-scale ramp (1997) verbatim; 'Standard' is his 10-character ramp reversed to run dark-to-light; 'Blocks' is █▓▒░ plus space; 'Simple' is #+-. plus space. Mapping is a linear index round(Y/255 × (ramp length − 1)).
- Transparency is honoured before brightness: alpha < 125/255 → space, so a transparent PNG logo keeps its silhouette rather than becoming a solid block.
- Contrast uses the common 259/255 contrast-factor formula clamped to 0–255; invert flips Y to 255 − Y before mapping, for dark backgrounds.
- Width is bounded to 40–200 characters by the slider; output is plain text (no colour codes) so it pastes into any monospaced context.
Sources
- Recommendation ITU-R BT.601-7 (03/2011). Studio encoding parameters of digital television for standard 4:3 and wide-screen 16:9 aspect ratios — the luma coefficients 0.299/0.587/0.114. https://www.itu.int/rec/R-REC-BT.601/en
- Bourke P. Character representation of grey scale images. February 1997 — source of the 70-character and 10-character ramps. https://paulbourke.net/dataformats/asciiart/
- WHATWG. HTML Living Standard — §4.12.5 The canvas element: drawImage() scaling and getImageData(). https://html.spec.whatwg.org/multipage/canvas.html
- Riddell A (ed.). Typewriter Art. London: London Magazine Editions; 1975 — reproduces Flora Stacey's 1898 typewritten butterfly, the early example cited on the page.
What can make this go out of date
- none at runtime — the ramps and weights are constants in the page; browser image decoding determines which input formats open (JPEG, PNG, GIF and WebP everywhere; HEIC only where the OS decodes it).
Abridged — the full review record for this tool runs longer than the list above.
Pick up where you left off
Stored only in this browser — never sent to our servers.