User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Drop image here or click to browse Supports JPG, PNG, GIF, BMP, WebP
Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

About

ASCII art representation maps pixel luminance to a density-sorted character ramp. The perceived brightness of each pixel block is computed via the ITU-R BT.601 luma formula: L = 0.299R + 0.587G + 0.114B. Characters with greater glyph coverage (like @ or #) represent dark regions. Characters with minimal coverage (like . or a space) represent bright regions. Getting the aspect ratio wrong produces vertically stretched output because monospace characters are roughly twice as tall as they are wide. This tool corrects for that with a 0.5 cell aspect ratio. Resolution is capped by character count, not pixel count, so a 1920ร—1080 image can be faithfully represented in 200 columns.

The color mode preserves average RGB per cell block and applies it as an inline style to each character. This approximation works well at moderate resolutions but degrades at very low column counts where each cell spans hundreds of source pixels. The tool processes everything locally in your browser via Canvas API. No server upload occurs. Export options include plain .txt (monochrome) and self-contained .html (color-preserving).

ascii art image converter text art pixel art ascii generator image to text

Formulas

The core conversion maps pixel luminance to a character index in a density-sorted ramp.

Perceived luminance (ITU-R BT.601):

L = 0.299 โ‹… R + 0.587 โ‹… G + 0.114 โ‹… B

Character index from luminance:

i = floor(L255 โ‹… (n โˆ’ 1))

Effective cell dimensions with aspect correction:

cellW = round(imgWcols)
cellH = round(cellWaspectRatio)
rows = floor(imgHcellH)

Where L = perceived luminance (0 - 255), R, G, B = red, green, blue channel values, n = number of characters in the ramp, i = index into the character ramp, cols = desired output width in characters, aspectRatio = character width-to-height ratio (typically 0.5 for monospace fonts), imgW and imgH = source image dimensions in pixels.

Reference Data

Character Ramp NameCharacters (Dark โ†’ Light)Density LevelsBest For
Standard 10@%#*+=-:. 10General purpose, good contrast
Extended 16$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. 70High detail, fine gradients
Block Onlyโ–ˆโ–“โ–’โ–‘ 5Retro terminal look
Minimal 5#=:. 5Low resolution, bold output
Dots@โ—โ—‰โ—‹โ—Œ 6Artistic dot-matrix style
Binary10 3Matrix-style effect
CustomUser-definedVariableSpecialized artistic control
Luminance Coefficients by Standard
ITU-R BT.601 (SD)Rร—0.299 + Gร—0.587 + Bร—0.114 - Default, best for art
ITU-R BT.709 (HD)Rร—0.2126 + Gร—0.7152 + Bร—0.0722 - HD video content
Average(R + G + B) รท 3 - Fast approximation
Aspect Ratio Correction Factors
Monospace (typical)Cell ratio 0.5 - Most terminals & code fonts
Courier NewCell ratio 0.55 - Print output
ConsolasCell ratio 0.48 - Windows terminals
Recommended Resolution by Use Case
Social media post80 - 120 columns - Readable on mobile
Terminal display120 - 200 columns - Standard terminal width
Print (A4)150 - 250 columns - Font size 4 - 6pt
High detail poster300 - 500 columns - Large format printing
Common Image Aspect Ratios
Square1:1 - Instagram, profile photos
Landscape (HD)16:9 - Screenshots, video stills
Portrait (Phone)9:16 - Mobile screenshots
Classic Photo4:3 - Digital camera output

Frequently Asked Questions

Monospace characters are taller than they are wide, typically at a ratio around 0.5 (width รท height). If the converter does not correct for this, each character cell is treated as square, causing vertical stretch. This tool applies an aspect correction factor so that cellH = cellW รท 0.5, producing proportionally correct output. If you change the display font, the ratio may shift slightly - Courier New is closer to 0.55, Consolas around 0.48.
A longer character ramp provides more discrete luminance levels, producing smoother gradients and finer detail. The standard 10-character ramp maps each pixel block to one of 10 brightness levels. The extended 70-character ramp provides 70 levels, which approaches the perceptual limit for most viewing distances. For high-contrast images (logos, silhouettes), a 5-character ramp often suffices. For photographs with subtle gradients, use 16+ characters.
Column count determines horizontal detail. At 80 columns, you get a thumbnail-quality rendering suitable for terminal display. At 200 columns, most photographic subjects are clearly recognizable. Beyond 300 columns, gains diminish because character-level detail saturates. For print at A4 size, 200 columns at 5pt monospace font fills the page width. The tool caps at 500 columns to prevent browser memory issues with extremely large character grids.
Yes. In monochrome mode, each character is a single byte. In color mode, each character is wrapped in an HTML span with an inline RGB style, adding roughly 40-50 bytes per character. A 200ร—100 character grid produces ~20,000 characters. In monochrome, the .txt file is approximately 20 KB. The equivalent color .html file can reach 800 KB - 1 MB. The visual payoff is significant for photographic content but unnecessary for line art or logos.
ASCII art excels with high-contrast subjects against simple backgrounds. Portraits, silhouettes, and architectural images convert well because they contain strong edges and clear luminance regions. Low-contrast scenes (foggy landscapes, flat-lit interiors) produce muddy output because adjacent pixel blocks map to identical or neighboring characters. Pre-processing the source image - increasing contrast, applying edge sharpening - before conversion can dramatically improve results.
The invert toggle reverses the luminance-to-character mapping so that bright pixels map to dense characters (like @) and dark pixels map to spaces. This is necessary when displaying ASCII art on a dark terminal background, because on dark backgrounds, character ink is the light element. Without inversion, the art appears as a photographic negative. The tool's preview background automatically switches to dark when inversion is enabled.