~/charsets/blocks · four fills and a space

Image to block ASCII art with filled cells

A space and four Unicode block elements: light shade, medium shade, dark shade, full block. Nothing here suggests tone with a punctuation stroke — each character paints the cell it sits in, so the output reads as a mosaic of pixels rather than as a page of letters.

 ░▒▓█
semaphore --charset blocks – □ ✕
[ how_the_ramp_works ]

Five levels of fill, one per cell

The mechanism is the same as any other ramp: brightness in, one character out. What changes is the vocabulary. These glyphs were designed for terminals that had no graphics mode, so their whole job is to cover a fraction of the cell — nothing, a quarter, half, three quarters, all of it.

01 measure the cell

Your column count sets the grid. Each cell of the source collapses to a single perceptual luminance value, so a dark region and a bright region are separated before any character is chosen.

02 quantize to five

That value is bucketed across five positions. Shadow becomes a space, the mid-tones step through , and , and anything bright enough lands on .

03 fill, do not sketch

Because the glyph occupies the full cell, neighbouring cells of the same level merge into one flat area. Edges land where the tone changes, not where a stroke happens to sit.

Five steps is coarse, and that is the point: banding is a feature here. Photographs posterize into visible terraces, which is why blocks flatter shapes and silhouettes far more than faces. Raise contrast to push those terraces apart, or drop the column count until the mosaic is honest about being a mosaic.

[ when_to_use_it ]

Pick blocks when you want flat tone, not texture

choose blocks

Pixel art, logos, posters, splash screens, retro game covers, anything already built from squares. The self-hosted font subset in Semaphore covers ░▒▓█, so these render in the site's own mono face — but a destination with a narrow font may substitute another one, and the four shades keep their order regardless. Solid is the most widely supported of the four.

choose something else

For a photograph you want read as a photograph, the detailed ramp has sixty-eight shades and braille packs eight dots into every cell. If the text has to survive a strictly 7-bit channel, minimal gets you five steps out of plain punctuation instead.

[ other_charsets ]

The other five charsets

standard

Ten shades of plain ASCII. The look people expect by default.

detailed

Sixty-eight shades of punctuation and letters. The photographic ramp.

minimal

Five steps, wide apart, all 7-bit. 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.

Four fills and a space.

Open the converter with blocks preselected, drop an image, and move columns and contrast until the terraces sit where you want them. The conversion runs in your own tab; your image bytes never leave the device.

Open the block ASCII converter