Box-Drawing Tool
Last reviewed on April 27, 2026.
Type any text into the box below, pick a frame style, and the tool wraps it in a clean ASCII or Unicode frame. The output is plain text — paste it anywhere monospace works.
Picking a frame style
Each style sends a slightly different message:
- ASCII uses only
+,-, and|. Survives every encoding pipeline ever shipped. Use it for emails, CI logs, and anywhere you cannot guarantee UTF-8. - Unicode single line is the default. Clean, restrained, reads as a deliberate frame in modern terminals and editors.
- Heavy uses bold line characters. Pulls focus. Good for a single warning frame at the top of a script's output, weak when used repeatedly.
- Double line reads as old-school terminal — early DOS dialog boxes, BIOS menus. Pair it with monospace fonts that ship the line-drawing block; some web fonts do not.
- Rounded softens the visual weight without adding any. Best for friendly UI in a TUI: prompts, hints, settings panels.
- Dashed uses dash and pipe characters at sparse spacing. Looks like a "draft" or "edit me" frame and is the lightest visual on this list.
Line breaks and width
The tool calculates the frame width from the longest line you typed. That gives you predictable output, but it also means a single very long line stretches the whole frame. If your content includes a long URL or a long error string, break it manually with a newline at a sensible point — the frame respects every line break you give it.
Padding adds blank columns on the left and right inside the frame. One column of padding is the typical default for a heading block; two or four work well for callout boxes that need to feel airier.
How alignment changes the read
Left alignment reads as documentation: the eye starts at the left and scans down a column. Center alignment reads as a heading or a banner. Right alignment is rarely useful — it is the inverse of how most people scan and tends to feel deliberately stylized rather than informative. Use right alignment when the destination is decorative (a stream lower-third, a graphic) and left alignment everywhere else.
Worked example: a CI log section header
A common use case is to print a clear separator before a long step in a CI pipeline. Type three lines into the tool — the step name, an empty line, and the command — choose heavy, set padding to 2, and align center. The result drops directly into a Bash echo:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ DEPLOY STAGE ┃ ┃ ┃ ┃ kubectl apply -f infra/ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
That single block makes a 2,000-line CI run navigable. The reader does not need to read the surrounding lines to know which stage they are looking at.
Common mistakes
- Mixing line weights. A heavy frame around a paragraph that has light box-drawing characters inside it reads as a typo. Pick one weight per page.
- Tab characters in the input. Tabs render at different widths in different editors. Convert tabs to spaces before using the tool, or the frame will appear ragged in some destinations.
- Long single lines. A 200-column frame fits no terminal. If the longest line is over about 80 columns, split it.
- Pasting into a proportional font. The frame only lines up in monospace. The web previews above use a monospace font; the destination must too.
- Frames inside frames. The line-drawing characters do not stack visually; nested boxes look like a glitch, not a hierarchy.
Pairs with other tools on this site
For text inside the box, an ASCII banner turns short titles into multi-row block letters before they go into the frame. For inline glyphs, the Unicode symbol reference has the box-drawing characters individually so you can build a custom frame by hand. For everything together — banners, frames, simulators — see how a real workflow uses them in the streaming and content-creator toolkit.