User Rating 0.0
Total Usage 0 times
A–Z, 0–9, basic punctuation. Max 30 chars.
Is this tool helpful?

Your feedback helps us improve.

About

ASCII art maps visual information onto a fixed grid of printable characters from the standard 95-character ASCII set (codes 32 - 126). For text banners, each input glyph is projected onto a bitmap matrix - typically 5×7 cells - then rendered row-by-row using a fill character. For image conversion, pixel luminance L is computed per cell and quantized against an ordered density ramp of n characters sorted by visual weight. Getting the ramp wrong collapses contrast: shadows merge with midtones and detail disappears. This tool implements both modes with adjustable width, multiple font styles, and invertible ramps so the output reads correctly on both light and dark terminal backgrounds.

Limitations: bitmap fonts here approximate letter shapes at low resolution. Ligatures, CJK glyphs, and emoji are outside the supported input range. Image mode assumes uniform character cell aspect ratio of roughly 2:1 (height:width). Results depend on the monospace font used for display. Pro tip: paste output into a code block or <pre> tag to preserve spacing.

ascii art text to ascii image to ascii ascii generator character art text art ascii banner

Formulas

Image-to-ASCII conversion relies on per-cell luminance quantization. Each pixel's brightness is computed using the ITU-R BT.601 luma formula:

L = 0.299 R + 0.587 G + 0.114 B

The luminance L falls in the range [0, 255]. It is then mapped to a character index i in the density ramp string of length n:

i = floor(L255 (n 1))

Where R, G, B are the red, green, and blue channel values (0 - 255). L is the computed luminance. n is the length of the character density ramp. i is the index selecting the output character. When inverted mode is active, the index becomes (n 1 i), flipping light and dark characters.

For text banner mode, each input character is looked up in a bitmap font table. The bitmap is a 5×7 binary matrix. A 1 in the matrix emits the fill character. A 0 emits a space. Rows from all characters in the input string are concatenated horizontally with a 1-column gap to form each output line. The aspect ratio correction factor for image mode is approximately 0.5, applied to the vertical sampling rate to compensate for monospace character cells being taller than wide.

Reference Data

CharacterASCII CodeRelative DensityCommon Use
(space)320.00Background / empty
.460.05Very light shading
:580.10Light shading
-450.15Horizontal strokes
=610.25Medium-light fill
+430.30Medium fill
*420.40Star / medium-heavy
#350.60Heavy fill
%370.70Very heavy fill
@640.85Darkest standard
$360.75Dense vertical strokes
!330.12Light vertical accent
/470.18Diagonal strokes
\920.18Diagonal strokes
|1240.20Vertical bars
(400.15Curves
)410.15Curves
&380.65Complex dense glyph
^940.08Caret / pointer
~1260.10Wavy / water effect
_950.12Floor / underline
<600.18Arrows / direction
>620.18Arrows / direction
[910.22Borders
]930.22Borders

Frequently Asked Questions

Monospace font characters are typically about twice as tall as they are wide (aspect ratio near 2:1). The generator compensates by sampling half as many rows as columns. If your display font has a different aspect ratio, the output will distort. Adjust the output width or try a different monospace font (Courier New, Consolas, or SF Mono all have slightly different metrics).
The ramp is an ordered sequence of characters from visually lightest (space) to darkest (@). A longer ramp provides more tonal gradations - the default 10-character ramp gives roughly 25.5 luminance units per step. A shorter ramp compresses the tonal range and loses detail in shadows or highlights. You can also invert the ramp for dark-background terminals where "@" should represent bright areas.
Each banner character occupies 6 columns (5-wide bitmap plus 1 gap). At a width of 80 columns (standard terminal), you can fit about 13 characters per line. At 120 columns, roughly 20. Longer input strings will produce very wide output that wraps unreadably in narrow displays. Keep input under 15 characters for banners intended for terminal use.
Yes, but you must preserve whitespace. In HTML, wrap the output in <pre><code> tags. In Markdown, indent each line by 4 spaces or use a fenced code block (triple backticks). Without preformatted wrapping, browsers and renderers collapse consecutive spaces and destroy the alignment.
The built-in bitmap font covers uppercase A - Z, digits 0-9, and common punctuation. Lowercase letters are mapped to uppercase automatically. Characters outside this set (accented letters, CJK, emoji) have no bitmap definition and are replaced with a blank 5×7 space. This is a limitation of the 5×7 grid resolution - complex glyphs cannot be represented meaningfully at that scale.
The image is downscaled to match your chosen output width (in characters). A 4000×3000 pixel photo and a 400×300 pixel photo both produce the same number of characters - but the higher-resolution source averages more pixels per cell, yielding slightly smoother tonal transitions. For best results, source images with strong contrast and simple composition (portraits, silhouettes, logos) convert better than busy scenes.