Skip to content

ASCII Diagram Editor

Draws boxes, lines, arrows and labels on a character grid, deriving every corner and junction from which neighbours are occupied, in Unicode box drawing or pure ASCII.

The thing that makes ASCII diagrams painful by hand is the corners. Put a ┌ where a ┬ belongs and the drawing is subtly wrong; decide later that it has to go in a source comment and every one of those characters has to be found and replaced. This editor never lets you choose one. You say where a box is and where a line runs, and each cell works out its own glyph from which of its four neighbours are occupied — so crossing lines produce ┼ without either line knowing about the other, and switching the whole drawing to pure ASCII is one setting.

🔒 Runs entirely in your browserasciidiagrameditordevelopertext
Tool

U+2500 box drawing. In every monospaced font in use since about 1995.

Selected shape

Nothing selected. Pick the select tool and click a shape.

Diagram

 
No corner or junction character is ever chosen by hand. A box says where its border is and a line says where it runs; each cell then works out its own glyph from the four directions it connects in. That is why two lines crossing give a ┼ without either line knowing about the other, and why switching to pure ASCII is one setting rather than a find-and-replace over your drawing.
The ASCII set is deliberately lossy — one + for all eleven junctions and both corner pairs. A diagram that has to survive going into a source comment, a commit message, a Makefile or a terminal with a 1994 font is worth more than a prettier one that arrives as boxes.
Three things it does not do. No diagonal lines, because no box-drawing character is one — a diagonal drag is routed as an elbow. No automatic routing around obstacles; a line goes where you put it. And no text wrapping inside a box.

How to use it

  1. Drag boxes first, then connect them

    A drag with the box tool makes a box; a click makes the smallest one that is still a box. Then take the arrow tool and drag from one to another — an endpoint that lands inside a box is pulled to the nearest edge cell, because dragging *to* a box means attaching to it and a line through the middle is never what was meant.

  2. Choose the character set for where it is going

    Unicode box drawing for a README or a terminal. Pure ASCII — only - | + < > ^ v — for a source comment, a commit message, a Makefile, or anywhere the encoding is not certain. The ASCII set is deliberately lossy: one + for all eleven junctions. A diagram that arrives intact beats a prettier one that arrives as boxes.

  3. Label boxes from the panel, not by typing into them

    Select a box and type its label in the panel below; it is centred inside automatically and moves with the box. A label wider than its box is clipped rather than reflowed, and the page says which ones — reflowing would change the shape of the drawing, which is not a thing a label should do.

Common questions

Can I draw a diagonal line?

No, and that is not a missing feature. There is no box-drawing character for a diagonal — the block has ─ │ and the corners and nothing at 45 degrees. A drag that is neither horizontal nor vertical is routed as an elbow instead, which is what the diagram wanted, and you can pick which leg goes first.

Will it route lines around my boxes?

No. Orthogonal auto-routing around obstacles is a real algorithm and a bad one is worse than a straight line you placed yourself — it moves your diagram around while you are trying to draw it. Lines go where you put them.

Feed it from

Next

These accept what this tool produces, so the result can go straight in.