Home Tools Blog About

Draw ASCII Table

In short

Generate ASCII tables in pipe, Markdown, box-drawing, or CSV format. DEC/HEX/OCT/BIN columns, control names, HTML entities. Free, offline, client-side, instant.

  • Runs in your browser
  • Nothing uploaded
  • Free, no sign-up

Build an ASCII reference in 4 output formats with 8 selectable columns. Now you can render Unicode box-drawing borders (what "Draw" should have meant), GitHub Markdown, classic pipe, or RFC 4180 CSV, across control / printable / extended / full ranges, with binary, control-code names, HTML entities, and C escape sequences.

🛡
100% PrivateNo server uploads, ever
InstantRuns in your browser
💧
No WatermarksClean output, always
🆓
Free ForeverNo accounts, no limits

How to Use Draw ASCII Table

  1. Pick a range. Control (0-31): non-printable codes - NUL, BEL, TAB, LF, CR, ESC, etc. Printable (32-126): default - visible characters. Extended (128-255): Latin-1 supplement - gets rendered via your browser's font. Custom: type start and end (0-255 each).
  2. Pick a format. Pipe (classic): DEC | HEX | OCT | CHAR with header underline. Markdown (GitHub/Jira/Slack): | DEC | HEX | with --- | --- separator. Box-drawing: real Unicode borders ┌─┬─┐ │ │ │ ├─┼─┤ └─┴─┘ - what "Draw ASCII Table" was supposed to mean. CSV: RFC 4180 with header, quote-escapes commas/quotes.
  3. Toggle columns. DEC (decimal), HEX (uppercase, 2-digit zero-pad), OCT (3-digit zero-pad), BIN (8-bit zero-pad), CHAR (the character itself - control codes display as Unicode "Control Pictures" U+2400-U+2421), NAME (NUL/SOH/STX/… abbreviations for control codes), HTML entity (named `&`/`<`/`>`/`"`/`'` where conventional, numeric `A` otherwise), C-escape (n t xff).
  4. Watch the live preview. Every option change debounces 250 ms and re-generates. Stats line shows row count, column count, range, byte size, and format.
  5. Press Ctrl+Enter or click Generate to force a regenerate (debounce already covers it but the toast confirms).
  6. Copy or download. Download extension matches format: .csv for CSV, .md for Markdown, .txt for pipe/box.

Frequently Asked Questions

How do control codes (0-31) display in the CHAR column?

Unicode has a “Control Pictures” block (U+2400 to U+2421) specifically for displaying control characters visibly. NUL (0) shows as , BEL (7) as , LF (10) as , CR (13) as , ESC (27) as , etc. Code 32 (space) shows as so you can see it. Code 127 (DEL) shows as . Without this, control codes would render as invisible whitespace or terminal-disrupting bytes (BEL would beep, BS would erase). Most fonts support these picture chars; if yours doesn’t, you’ll see fallback boxes – pick a coding font.

Why do I see “?” instead of characters for codes 128-255?

Codes 128-255 are NOT standard ASCII – they’re the upper half of various 8-bit encodings (Latin-1/ISO 8859-1, Windows-1252, etc.). The CHAR column uses String.fromCharCode(n) which maps to Unicode codepoints U+0080-U+00FF, which are Latin-1 supplement characters (é, ñ, ©, ®, ½, etc.). If your font lacks those glyphs you’ll see boxes or “?”. If you’re seeing CP1252 differences (€ at 128, smart quotes at 145-148), that’s because Windows-1252 differs from Latin-1 in 128-159 – pick the font you actually need.

What’s the difference between HTML entities &, &amp;, and &#38;?

All three render as the same character (&) in HTML. &amp; is the NAMED entity (5 chars). &#38; is the NUMERIC decimal entity (5 chars). &#x26; is numeric hex. We emit NAMED entities for the 5 that HTML5 requires you to escape (&quot; &amp; &apos; &lt; &gt;) and NUMERIC for everything else (because not all “named” entities are widely supported – &copy; works but &loz; is iffy).

What’s the difference between ASCII and Unicode?

ASCII is a 7-bit encoding (128 codepoints, 0-127) standardized in 1963. It covers English letters, digits, common punctuation, and control codes. Unicode is a 21-bit codepoint space (1,114,112 possible codepoints, currently ~150,000 assigned) covering essentially every script and symbol set in the world. ASCII codepoints 0-127 map 1:1 to Unicode codepoints U+0000-U+007F – so all ASCII is valid Unicode. This tool’s “Extended” range (128-255) is NOT ASCII; it’s Latin-1 supplement (U+0080-U+00FF in Unicode).

Why does the pipe format use a fixed-width layout?

For the table to be readable in monospace fonts, columns must align. We measure the max width per column across all rows (including the header) and pad with spaces using String.padEnd. Without this, pipes wouldn’t line up vertically and the table would look broken in code editors, terminals, and ticket systems. CSV doesn’t pad (RFC 4180 requires no padding); Markdown doesn’t pad in the source either (GitHub renders it as a styled HTML table); only pipe and box modes pad.

Are the C-escape sequences correct for all codes?

For the ones C99 defines explicitly: yes. a b t n v f r " ' \ ?. For everything else < 32 or > 126, we emit xNN hex escapes – which work in C99 and all major C-derived languages (C++, Java, JavaScript, Python, Go, Rust). For printable ASCII (32-126 except " ' ?), we emit the literal character. Note: C also has NNN octal escapes (1-3 digits) but they have ambiguity at boundaries (12 vs 12) – we prefer hex.

Does the box-drawing output work in Slack / Discord / GitHub?

Slack: yes inside a code block (triple-backtick) – uses a monospace font that supports box-drawing. Discord: yes inside a code block. GitHub: yes in code blocks; Markdown tables get rendered as styled HTML so you’d want Markdown mode there instead. Email: maybe – depends on the recipient’s font. Terminal: yes everywhere if the terminal supports Unicode (all modern terminals do). Word processor: usually yes; pick a monospace font like Consolas first.

Is it secure?

Yes, 100% client-side, no network requests. Generation is pure JavaScript on the codes 0-255. Verify via your browser’s Network tab – no requests after initial page load.

Keep going

Related Tools

All Ascii tools →
Share

Embed this tool

Add this free tool to your website. Copy and paste the code: