Telegram ASCII Tables
Format tabular data as ASCII box-drawing tables that render correctly in Telegram code blocks.
Quick Start
{baseDir}/scripts/ascii-table.py <<'EOF'
Name|Value|Status
Server|web-01|Online
Database|db-01|Syncing
EOF
Wrap output in triple backticks when sending to Telegram.
Usage
Heredoc (recommended)
# Desktop mode (default): Unicode box chars, 58 char width
ascii-table <<'EOF'
Server|Status|Uptime
web-01|Online|14d 3h
db-01|Syncing|2d 12h
EOF
# Mobile mode: ASCII chars, 48 char width
ascii-table --mobile <<'EOF'
Task|Status
Deploy|Done
Test|Pending
EOF
# Custom width
ascii-table --width 80 <<'EOF'
Column|Another Column
data|more data
EOF
Pipe
cat data.txt | ascii-table
echo -e 'Name|Value\nRow1|Data1' | ascii-table
some-command | ascii-table --mobile
Options
โโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Flag โ Short โ Description โ
โโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ --desktop โ -d โ Unicode box chars, 58 char width (DEFAULT) โ
โโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ --mobile โ -m โ ASCII chars, 48 char width โ
โโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ --width N โ -w N โ Override default width โ
โโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Mode Comparison
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โ Aspect โ Desktop (default) โ Mobile โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโค
โ Characters โ Box drawing โ ASCII (+ - chars) โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโค
โ Default width โ 58 chars โ 48 chars โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโค
โ Rendering โ Clean on desktop โ Reliable everywhere โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโค
โ Use when โ Recipient on desktop โ Recipient on mobile โ
โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโ
Unicode box-drawing characters render at inconsistent widths on mobile Telegram. Use --mobile for mobile recipients.
Input Format
- One row per line via stdin
- Columns separated by
| - Empty lines ignored
- Whitespace around cells trimmed
Output Examples
Desktop
โโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
โ Server โ Status โ Uptime โ
โโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโค
โ web-01 โ Online โ 14d 3h โ
โโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโค
โ db-01 โ Syncing โ 2d 12h โ
โโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
Mobile
+------------+----------+----------+
| Server | Status | Uptime |
+------------+----------+----------+
| web-01 | Online | 14d 3h |
+------------+----------+----------+
| db-01 | Syncing | 2d 12h |
+------------+----------+----------+
With Wrapping
โโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Task โ Status โ Notes โ
โโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Deploy โ Done โ Rolled out to prod successfully โ
โ API โ โ โ
โโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Fix bug โ WIP โ Waiting on upstream OAuth fix โ
โโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Design Note: Stdin-Only Input
This script intentionally does not accept row data as CLI arguments.
Shell argument parsing happens before any script runs. Characters like `, $, and ! in double-quoted args get executed or expanded by the shell โ not by the script receiving them. For example, `whoami` would execute and substitute its output before the script ever sees it.
By requiring stdin input, user data bypasses shell parsing entirely. A quoted heredoc (<<'EOF') passes everything through literally โ no escaping needed, no execution possible.
Limitations
- Pipe delimiter โ
|separates columns (cannot appear in cell content) - Word breaks โ long words may split mid-word
- Wide characters โ emoji/CJK may cause alignment issues
- Left-aligned only โ no numeric right-alignment