~/charsets/detailed · 68 steps

Photo to detailed ASCII art

Sixty-eight characters sorted by how much ink each one lays down, from a bare space to a dollar sign. Where the standard ramp gives you ten shades, this one gives you enough steps that a face keeps its cheekbones. It is the default charset in the converter for exactly that reason.

.'`^",:;Il!i~+_-?][}{1)(|\/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$
semaphore --charset detailed – □ ✕
[ how_the_ramp_works ]

Tone out of glyph density

A monospace glyph covers a fixed rectangle, and the fraction of that rectangle it actually inks is what your eye reads as brightness. A period inks almost nothing. A dollar sign inks nearly everything. Order every available character by that fraction and you have a grayscale palette made of punctuation.

01 weight the luminance

Each cell of the image collapses to a single perceptual brightness value. Green contributes most and blue least, matching how human vision actually distributes sensitivity.

02 index 68 steps

That value picks one of sixty-eight positions instead of one of ten. Adjacent shades differ by roughly a percent and a half of brightness, which is fine enough that gradients stop banding.

03 keep it text

Every glyph in the ramp is ordinary text. The output pastes into a comment block, a chat window or a .txt file with no font requirement beyond a monospace face.

The trade is legibility of the individual character against fidelity of the whole. Up close the output looks like scrambled source code; at arm's length it resolves into a photograph. That is the effect this ramp exists to produce, and it is why it wants more columns than the coarser sets — try 140–200.

[ when_to_use_it ]

Pick the detailed ramp for continuous tone

choose detailed

Portraits, faces, landscapes, product shots, film stills — anything where the subject is described by smooth gradients rather than hard edges. It is also the safer pick when you do not control the destination font, since every glyph is a common text character rather than a Unicode block.

choose something else

Braille resolves finer detail — eight dots per cell instead of one glyph — but JetBrains Mono ships no braille glyphs, so it always renders in a system fallback. For flat graphic areas blocks is cleaner, and for a small logo the standard ramp stays readable as characters.

[ other_charsets ]

The other five charsets

standard

Ten steps of plain ASCII. The classic look, maximum portability.

blocks

Four fills and a space. Reads as pixels rather than characters.

minimal

Five steps, wide apart. Built for tiny avatars and icons.

binary

A space, a zero, a one. The code-rain look.

braille

Eight dots per character. The highest detail Semaphore can reach.

Sixty-eight shades of punctuation.

Open the converter with the detailed ramp preselected, drop a photo, and push the column count until the face resolves. Your image bytes never leave the tab.

Open the detailed ASCII converter