# A picture made from the only characters available

> ASCII art exists because there were no images — only a fixed grid of monospaced characters. It's the purest constraint art there is, and the constraint is exactly what fabric wants.

August 17, 2026 · https://justog.club/stories/bbs-ascii-art-tee

A skull, drawn entirely from slashes, brackets, hashes and full stops, in amber on black. Above
it, a line reading `CONNECT 14400`.

Nothing in that image is a picture. Every mark is a character somebody typed, positioned on a grid
they couldn't change.

## Why did anybody draw like this?

Because there was nothing else to draw with.

A terminal displayed a fixed grid of monospaced characters and no images. If you wanted a logo on
your bulletin board, you built it from the character set — choosing glyphs for their *density*
rather than their meaning, so `#` is a dark area and `.` is a light one.

That's constraint art in its purest form, and the results have a specific quality that no filter
reproduces: the marks are all the same size, all on a grid, and all recognisably typed.

## What does that mean for the design?

Everything is uniform, which is unusual and useful.

- **One monospaced face**, every character the same width and height.
- **A fixed grid** — nothing between cells, no half positions.
- **Density as tone**: `@` and `#` for shadow, `:` and `.` for light.
- **One colour** — amber, green or white on black, from the phosphor.
- **A header line**, which is where the period detail lives.

The colour choice isn't decorative. Amber and green were the phosphors monitors actually used, and
naming one places the design in a specific decade.

## What's the header line for?

Timestamping the whole thing.

`CONNECT 14400` is a modem negotiating a speed, and it dates the image more precisely than any
visual element could — 14400 baud is a specific couple of years. So is `ATDT`, a phone number, or
`NO CARRIER`.

Same device as
[a version number on a hackathon shirt](/stories/hackathon-shirts): a small technical string
that fixes the design in time.

## Can I use somebody's ASCII art?

Individual pieces of ASCII art have authors, and the scene-based art groups of that era signed
their work — so a copied piece is somebody's.

The technique isn't. Building images from a character grid is a method as old as the teletype,
and the constraint that produced it belongs to the hardware.

There's also a live tradition worth respecting: ASCII art groups still exist, still sign pieces,
and still care about attribution.

## Why does it print so well?

Because it's already reduced to hard marks on a grid, which is what cloth wants.

No gradients, no fine curves, one colour, maximum contrast. And crucially it has **no small
detail** — the smallest element is a whole character, so as long as the character size is above
[the weave's floor](/stories/bold-shapes-survive-fabric), nothing is lost.

The failure mode is trying to fit too many characters. A 120-column piece at chest scale is grey
texture. Forty columns is a design.

## What subject works?

Something with a strong silhouette and no fine features.

Skulls, ships, animals, machines, logos, a single large word. What doesn't work is a face — at
forty columns a face is about six characters of information, and the difference between an
expression and a smudge is one glyph.

That's the same constraint
[pixel art runs into](/stories/retro-pixel-art-tee), and the same solution applies:
exaggerate rather than add detail.

## How do I get one made?

Describe the subject at [JustOG](/) — what it is, roughly how many columns wide, and which phosphor
colour. Pick a direction, drag the crop frame, see it composited on the real garment, and it's
made to order and shipped.

Designs other people have published are in the [shop](/shop).

Somebody typed every one of those characters, on purpose, in the right place.
