Choosing the best character set for your ASCII art
The character set is the palette of your ASCII art. It determines which characters represent dark areas, which represent light areas, and how many shades exist in between. Pick the wrong set and your conversion looks flat, banded, or unreadable. Pick the right one and the same image transforms into something sharp and recognizable.
EZASCII's Image to ASCII and Video to ASCII converters include nine built-in character set presets, plus a custom mode where you define your own. This guide breaks down what each one does, when to use it, and how to build a custom set that fits your specific project.
How character sets work
The converter maps pixel brightness to characters. Dark pixels get dense, heavy characters. Light pixels get sparse, open characters. The character set defines the full spectrum from darkest to lightest, read left to right.
For example, the Standard preset:
.:-=+*#%@The space on the left represents the brightest pixels (white). The @ on the right represents the darkest pixels (black). Everything in between maps to a brightness level along that gradient.
Two things matter about a character set:
- Length — More characters means more brightness levels. A 2-character set (like Binary) can only show black and white. A 70-character set (like Full ASCII) can show 70 distinct shades.
- Distribution — How evenly the characters are spaced in visual density. If three characters in a row look almost identical, you waste resolution. The best sets have perceptually even spacing between each step.
The nine built-in presets
Here's every preset available in the converter, with the exact characters used and the number of brightness levels each provides.
Minimal (4 characters)
░▓█Four Unicode block elements: empty space, light shade, medium shade, and full block. This is as simple as it gets — essentially four brightness levels. The result looks like a heavily posterized image with bold, chunky areas of light and dark.
Best for: Extreme simplification. Icons at small sizes. When you want a stark, graphic look with no subtlety. Also useful when pasting into environments with limited character support, since the block elements are widely supported across platforms.
Simple (8 characters)
.-=+*#%@Eight basic ASCII characters. No Unicode required — every single one of these characters exists on every keyboard and renders in every font. The transitions between levels are noticeable but workable.
Best for: Maximum compatibility. Terminal output that needs to work everywhere. Scripts, bots, and automated systems where you can't guarantee Unicode support. README files where you want zero rendering risk.
Standard (10 characters)
.:-=+*#%@The default preset. Ten characters with slightly smoother gradients than Simple — the addition of the colon and hyphen fills gaps in the mid-brightness range. This is the classic ASCII art character ramp that most people recognize.
Best for: General-purpose conversions. The safe default when you're not sure what to pick. Works well for most photos, illustrations, and screenshots. Start here and switch only if you have a specific reason.
Detailed (16 characters)
dbkhao*#MW&8%B@$Sixteen characters using a mix of lowercase letters, symbols, and uppercase letters. The increased resolution means smoother gradients and better representation of subtle tonal changes. Faces, landscapes, and images with soft lighting benefit significantly from the extra levels.
Best for: Portrait photography. Images where mid-tone detail matters — skin, hair, fabric, clouds. Any image where the Standard set produces visible banding between shades.
Extended (24 characters)
Q0OZmwqpdbkhao*#MW&8%B@$Twenty-four characters. This is where the output starts looking more photographic than graphic. The tonal range is wide enough to handle gradients, shadows, and highlights without obvious stepping.
Best for: High-detail conversions where you want the image to be clearly recognizable. Detailed photos, artwork reproductions, and anything where fidelity matters more than style. Pair with a low scale (3-5) for maximum detail.
Full ASCII (70 characters)
`^",;:!Ili><~+_-?][}{1)(|/\tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$Seventy characters covering nearly the full printable ASCII range, ordered by visual density. This is the highest resolution character set available — 70 distinct brightness levels means almost imperceptible transitions between shades.
Best for: Large-format ASCII art where the output will be viewed at full size. Art prints, large terminal displays, and detailed reproductions where you want the smoothest possible gradients. The trade-off: each character carries less visual weight because you need to see many of them together for the image to resolve.
Full ASCII works best at scale 2-4 with a wide output. At small sizes or high scales, 70 brightness levels is overkill — many adjacent characters will look identical and you won't benefit from the extra resolution. Use Detailed or Extended for smaller outputs.
Blocks (5 characters)
░▒▓█Five Unicode block elements: space, light shade, medium shade, dark shade, and full block. Similar to Minimal but with the extra medium-dark shade for a smoother step between light and full density.
Best for: Pixel art, retro game sprites, and anything where you want a blocky, mosaic-like aesthetic. Block characters form a continuous surface without gaps, so the output looks more like a low-resolution image than traditional ASCII art. Pair with an oldschool PC font for the full retro effect.
Dots (15 characters)
⡀⣀⣤⣦⣶⣾⣽⣻⢿⡿⣟⣯⣷⣿Fifteen Braille pattern characters. Each step fills in more dots within the Braille cell, creating a smooth progression from empty to fully filled. The result has a distinctive stippled, pointillist texture.
Best for: A unique, artistic aesthetic that doesn't look like traditional ASCII art. The Braille characters are smaller and more uniform than standard ASCII characters, which gives the output a smoother, more photographic quality at first glance. Also works well for high-contrast images where you want texture without obvious letterforms.
Braille characters require Unicode support and a font that covers the Braille Patterns block (U+2800–U+28FF). Most modern terminals, browsers, and editors handle them fine, but very old systems or minimal fonts may show blank squares.
Binary (2 characters)
█Two characters: space or full block. Every pixel is either on or off. No gradation. The result is a pure black-and-white threshold conversion — like running a photo through a 1-bit filter.
Best for: Logos, silhouettes, QR-code-style graphics, and high-contrast line art where you only need two tones. Also useful when you want to create a stencil or stamp-like effect. Pair with the Contrast and Brightness adjustments to fine-tune where the threshold falls.
Choosing the right preset
The right preset depends on three things: your source image, your destination, and the look you're going for.
| Use Case | Recommended Preset | Why |
|---|---|---|
| General photos | Standard or Detailed | Good balance of detail and readability |
| Portraits and faces | Detailed or Extended | Smooth skin tones, subtle shadows |
| Logos and icons | Binary or Blocks | Clean shapes, no unnecessary detail |
| Pixel art / retro | Blocks | Preserves the grid aesthetic |
| Large-format prints | Full ASCII or Extended | Maximum tonal resolution |
| Terminal / scripts | Simple or Standard | Maximum compatibility |
| Artistic / textured | Dots | Unique stippled look |
| Video conversion | Standard or Blocks | Fast rendering with clear shapes |
| Discord / chat | Standard or Simple | Readable at small sizes in code blocks |
For video conversion in the Video to ASCII converter, character set choice also affects readability at speed. Simpler sets (Standard, Blocks, Binary) tend to read better in motion because the shapes are bolder and more distinct. Dense sets like Full ASCII can look noisy when the frame changes rapidly.
Using custom character sets
None of the presets are perfect for every image. The custom mode lets you define exactly which characters to use and in what order.
How to set up a custom character set
- Open the Image to ASCII or Video to ASCII converter
- In the Settings panel, find the Character Set dropdown
- Select Custom from the list
- A text input appears — type your characters from darkest to lightest (or lightest to darkest if you have Invert Colors on)
- You need at least 2 characters. The converter updates in real time as you type
Building an effective custom set
The goal is a sequence of characters that increases smoothly in visual density. Here are some principles:
Order by visual weight. A period . is lighter than a colon :, which is lighter than a hash #. If you put a heavy character between two light ones, you'll get unnatural banding in your output.
Test with a gradient image. Convert a simple black-to-white gradient with your custom set. If the output shows smooth progression, your ordering is good. If there are visible jumps or plateaus, rearrange the characters at those points.
Match character count to detail needs. More characters isn't always better. For a clean, bold look, 4-8 characters is enough. For photographic detail, aim for 15-30. Beyond 30, individual characters become very similar and the benefit drops off.
Custom set ideas for specific projects
Emoji-style output:
·•●Four circles of increasing size. Creates a dot-matrix look that's clean and unusual.
Slash-heavy for diagonal textures:
/|\\#Emphasizes diagonal and vertical lines. Works well with architectural images and geometric patterns.
Numbers only:
1234567890Creates a Matrix-style effect where the image resolves from numbers instead of traditional ASCII characters.
Alphabet gradient:
ciloOQ0MWHandpicked letters ordered by visual density. Each letter is distinct enough to read individually, making the art feel like text and image simultaneously.
When building a custom set, open a monospace text editor and type each candidate character on a line by itself. Squint at the list — you should see a smooth darkening from top to bottom. If two adjacent characters look the same density, drop one.
Character sets and other settings
The character set doesn't work in isolation. It interacts with several other converter settings:
Scale
Smaller scale values (2-4) show more characters per image, so dense character sets like Extended and Full ASCII get room to express their full tonal range. At high scale values (12+), most of the detail is lost regardless of character set, so simpler presets (Standard, Blocks) work better because each character is more visually distinct.
Contrast
If your chosen character set has 10 levels but your image only uses 4 of them (because the image is low-contrast), you're wasting resolution. Bump contrast up to spread the image's brightness range across more of your character set.
Invert Colors
This reverses the character mapping — dense characters represent light areas instead of dark. Whether you need this depends on your destination. Dark background (terminal, Discord dark mode) usually works best with the default mapping. Light backgrounds (documents, light-mode apps) often benefit from inversion.
Color mode
In Original color mode, the character set still controls the shape and texture of the output, but each character also gets the color of the pixels it represents. Denser character sets produce richer, more saturated color output because more of each character cell is filled with ink. Sparse sets look lighter and more airy in color mode.
Quick decision guide
Not sure which character set to use? Start here:
- Is compatibility critical? (Old terminals, scripts, bots) → Simple
- Do you want a retro or pixel-art look? → Blocks
- Is it a logo or silhouette? → Binary
- Is it a photo with subtle tones? → Detailed or Extended
- Do you want something artistic and unusual? → Dots or Custom
- Not sure? → Standard — it's the default for a reason
Try a few options on the same image. The Image to ASCII converter updates in real time when you switch presets, so you can cycle through all nine in seconds and see which one clicks.