Fix misaligned ASCII boxes and tables — perfect for AI-generated diagrams.
LLMs frequently produce ASCII diagrams with inconsistent widths, ragged borders, and misaligned columns. ascii-align detects and fixes these automatically.
- ASCII boxes (
+,-,|) - Unicode box-drawing (light
┌─┐, heavy┏━┓, double╔═╗) - Markdown tables (
| col | col |) - Lateral (side-by-side) boxes — fixed independently without merging
- Wide character support — CJK, emoji, ANSI codes handled correctly
npm install ascii-align# Fix a file in-place
ascii-align fix diagram.txt
# Fix from stdin
cat diagram.txt | ascii-align fix
# Output to stdout instead of overwriting
ascii-align fix diagram.txt --stdout
# Check alignment (exit code 1 if misaligned)
ascii-align check diagram.txtimport { fixAsciiAlign, checkAlignment, detectRegions } from 'ascii-align';
// Fix all misaligned structures in a string
const fixed = fixAsciiAlign(input);
// Check without fixing
const { aligned, issues } = checkAlignment(input);
if (!aligned) {
console.log('Issues:', issues);
}
// Detect regions only
const regions = detectRegions(input);
// => [{ startLine: 0, endLine: 4, type: 'box', style: 'ascii' }, ...]Input (misaligned):
+--------+
| hello |
| longer content |
+--+
Output (fixed):
+----------------+
| hello |
| longer content |
+----------------+
Side-by-side boxes are detected and fixed independently:
+------+ +------+ +----------+ +----------+
| left | | right | → | left | | right |
+--+ +------+ +----------+ +----------+
Fix all detected ASCII structures. Returns the corrected text.
Check if any structures are misaligned. Returns issue descriptions.
Detect all ASCII box/table regions. Each region has startLine, endLine, type, style, and optional startCol/endCol for lateral boxes.
Get the visual display width of a string (handles CJK, emoji, ANSI).
Pad right to a target visual width.
Pad left to a target visual width.