ASCII Art Character Sets Explained
An ASCII character set (or "ramp") is the alphabet of dark and light characters used to redraw an image as text. Different ramps give very different looks. Here's what each one is good for.
Classic
The traditional terminal-style ramp. Eleven characters, well-balanced from dense (@) to sparse (space). Works well for almost any image — portraits, landscapes, logos. Start here if you're not sure.
Detailed
A 70-character ramp from very dense ASCII ($@B%8&WM#*) to extremely sparse (:,"^`'. ). Use when you want maximum tonal range — typically for photographic content rendered at high width (200+ chars). Looks closer to a photo print at distance.
Blocks
Five Unicode block characters of decreasing density. Gives a chunky, retro Game-Boy or Teletext feel. Particularly good for logos, low-resolution renders and anything where you want recognisable blocks instead of letters.
Lines
Unicode box-drawing characters. Creates a wireframe, vector-style look — almost technical-drawing. Great for architectural photos, product shots, or anything with strong geometric lines.
Binary
Just zeros and ones. Extreme but recognisable — perfect for any "Matrix" or hacker-aesthetic context. Best at width 80-120 chars; loses detail at lower widths.
Density
Geometric Unicode dots and small squares. Halfway between Blocks and Classic — recognisable as text but reads as image. Works well in editorial print contexts where you want ASCII to feel intentional rather than nostalgic.
Hatching
Crosshatch box-drawing characters that mimic engraving and pen-and-ink shading. Good for portraits and illustration-style renders. Try at width 100-150 for best balance of detail and texture.
Custom
Type your own ramp from dense to sparse. Examples:
♥♦♣♠.— playing-card aestheticSTUDIO.— your brand spelled out as the image█▇▆▅▄▃▂▁— fine-grained block bars (8-step gradient)•·∙.— minimalist dots only
Custom ramps are sorted dark-to-light internally, so put the densest character first.
Edge detection mode
Instead of mapping brightness to characters, edge detection uses a Sobel filter to find outlines, then maps each edge angle to a directional character (/ \ | _). Use this for line-art ASCII rather than tonal shading — great for portraits where you want crisp facial outlines, and for architecture / product shots with strong geometric edges.
Picking a width
Character width controls resolution. Rough guide:
- 40-80 chars — tweet-friendly, README-friendly. Lose detail but read fast.
- 80-120 chars — fits in a typical terminal window. Good default.
- 120-180 chars — fits modern monitors. Detail-rich while still readable.
- 180-300 chars — photo-realistic, best with the Detailed ramp and a Pro PNG/SVG export.