How to Make ASCII Art from Any Image
ASCII art — images constructed from text characters — is one of the oldest forms of digital art. A well-made ASCII conversion captures the mood of a photo using nothing but keyboard characters. This guide explains how it works and how to get the best results.
Open the ASCII Art ConverterHow it works
The converter samples the image at a grid of points — one per column, with rows spaced to account for character aspect ratio (characters are roughly 2× taller than wide, so row count is halved to maintain proportions). For each sample, it calculates luminance using the perceptual formula:
luminance = 0.2126×R + 0.7152×G + 0.0722×B
This weighting matches how the human eye perceives brightness — green contributes most, blue least. The luminance value (0–255) maps to a character in the selected ramp, ordered from darkest to lightest.
Column width
| Width | Effect | Best for |
|---|---|---|
| 40–60 | Blocky, abstract | Logos, retro poster look |
| 80–100 | Readable, classic terminal | Portraits, sharing as text |
| 120–160 | High detail | Complex scenes, landscapes |
| 180–220 | Near-photographic | PNG export only, maximum fidelity |
The 80-column tradition: 80 columns is the classic terminal width. ASCII art designed at 80 columns pastes cleanly into any terminal, code comment, or README.
Character sets
Classic: .:-=+*#%@
9 characters, strong contrast. The standard ASCII art look from 1980s bulletin boards. Works at 80–120 columns. Best for faces and simple scenes.
Detailed: 67-character ramp
Fine-grained luminance steps for maximum tonal range. Better at capturing subtle gradients. Use at 100+ columns for best results.
Blocks: ░▒▓█
Unicode block elements for a graphic, pixelated look. Great for bold portraits and graphic design use.
Custom ramp
Type any characters, darkest left to lightest right. Try 01 for binary aesthetic, or your brand name as the ramp.
Colored ASCII mode
Each character is drawn in the color of its source pixel rather than flat ink. The result looks like a photo rendered in text with full color. Colored ASCII is best exported as PNG — the text copy has no color information.
Best combination: Colored ASCII + Detailed ramp + 140–180 columns + dark background PNG export. The result is often striking enough to share as standalone art.
When to invert brightness
Flip the ramp so dense characters fall on bright areas instead of dark ones. Use invert when: printing on white paper; exporting with a light background; or when your subject is light-on-dark (snow scene, white text).
Best source images
- High contrast — strong light/dark separation produces the most legible output
- Clear subject — a single well-lit face or object converts better than a busy scene
- Simple background — complex backgrounds compete with the subject in the character mapping
- Large subject — the subject should fill most of the frame
Export options
- Copy text — clipboard, ready for terminal, README, email. Set width to match target (80 for terminal, 60–70 for email).
- Save .txt — downloads as a text file, opens anywhere.
- Download PNG — rendered at 14px font, high-resolution. Background: Dark (terminal look), Light (print-friendly), or None (transparent for compositing).
Related: Turn a Photo into Pixel Art · Extract a Color Palette
What makes a photo ASCII-friendly
ASCII art is brutal downsampling: your image becomes perhaps 80–120 “pixels” wide, each drawn from a dozen brightness levels. Images that survive this have a strong silhouette (portraits against plain walls, a cat on a windowsill, logos, landmarks), broad tonal separation between subject and background, and little fine texture that would turn to noise. Busy scenes — foliage, crowds, patterned clothing — average out into grey mush. If your source is borderline, raise the contrast first and try a tighter crop around the subject; framing does more for ASCII output than any converter setting.
Character ramps, and why dark mode flips them
Converters map brightness onto a ramp of characters ordered by ink density — the classic short ramp is .:-=+*#%@, from empty space to nearly solid. That ordering silently assumes dark ink on a light background. Paste the same art into a dark terminal or Discord’s dark theme and the tones invert: your subject’s shadows become the brightest glyph clusters. The fix is simply reversing the ramp (or toggling “invert” in the converter) for dark destinations. Longer ramps of 60+ characters buy smoother gradients but reproduce less reliably across fonts; the short ramp is short because it is portable.
The 2:1 correction, and where ASCII survives
Monospace characters are roughly twice as tall as they are wide, so a converter that maps one pixel to one character produces art stretched to double height. Good tools (the PixelLab converter included) pre-squash the image vertically by ~0.5 to compensate — if your output looks like a funhouse mirror, that correction is what is missing. The other survival rule is monospace or death: ASCII art holds together only where every character is equal-width, which means code blocks (wrap it in triple backticks on Discord/Slack/GitHub), terminals, <pre> tags, and plain-text email — and falls apart in Word, Instagram captions and anywhere proportional fonts live. When you need the art in a proportional-font world, screenshot it: the pixels don’t care about typography.