#Displaying tables in chats
1 messages · Page 1 of 1 (latest)
Yep — usually the best fix is to add a style instruction to that agent’s instructions / AGENTS.md, something like:
When presenting tabular information in Discord/chat, do not use ASCII box-drawing tables. Prefer short bullet lists, grouped sections, or compact key/value lines. If an actual table is necessary, use a simple fenced code block with aligned columns.
One catch: Discord doesn’t really render Markdown tables nicely like GitHub does, so asking for “Markdown tables” often won’t help much. For Discord, bullets or compact sections are usually the cleanest.
Example:
Plan options:
- Basic: $10/mo — good for testing
- Pro: $30/mo — best default
- Team: $80/mo — shared usage + admin controls
If you’re using the web UI or another surface that supports richer rendering, you can be more specific there, but for Discord I’d steer it away from table borders entirely. 🦞
I use telegram rather than discord
Ah, for Telegram the advice changes a bit: Telegram still doesn’t render GitHub-style Markdown tables as real tables. So if the agent sends | col | col |, Telegram will usually just show it as plain text.
I’d tell the agent to avoid tables for Telegram and use one of these instead:
When replying in Telegram, do not use ASCII-bordered tables or Markdown tables. Prefer compact bullet lists, grouped sections, or key/value lines. For dense tabular data, use a fenced monospace code block with aligned columns only if necessary.
Good Telegram-friendly format:
Options:
• Basic — $10/mo — testing/small use
• Pro — $30/mo — best default
• Team — $80/mo — shared/admin features
For structured info:
Pro plan
Price: $30/mo
Best for: normal daily use
Limits: higher than Basic
If you really need a proper table, the cleanest route is usually to have the agent generate an image/PDF/CSV attachment rather than trying to make Telegram render one inline.
So a fence monospace code block should work?
Yes — a fenced monospace code block is the most reliable inline option for Telegram.
Use triple backticks:
```text
Name Price Notes
Basic $10 Small/testing
Pro $30 Best default
Team $80 Shared/admin
```
That should preserve spacing and avoid the ugly ASCII border boxes. The tradeoff is it’s not responsive: on narrow phone screens, wide tables may still wrap or require horizontal scrolling/copying. So I’d only use it for small tables; for bigger data, bullets or an attached CSV/PDF/image will usually read better.
I do have a chart MCP server available
Nice — then that’s probably the better route when the data is genuinely table/chart-shaped.
I’d add an instruction like:
When presenting structured numeric/comparison data in Telegram:
- Prefer concise bullets for small datasets.
- For small tables, use a fenced `text` code block with aligned columns.
- For larger tables, trends, rankings, or comparisons, use the chart MCP server to generate a chart/image instead of rendering ASCII tables.
- Include a short plain-language summary before the chart.
So the agent chooses:
• 2–5 rows: bullets/key-value lines
• small matrix: fenced monospace block
• larger/comparative/numeric data: chart MCP image
• raw data needed: attach CSV too, if available
For Telegram specifically, an image chart often reads much better on mobile than a wide code-block table.
I’d put a small “chat formatting” section in AGENTS.md, something like this:
## Chat Formatting
When replying in Telegram, optimize for mobile readability.
- Do not use ASCII box-drawing tables, e.g. `+---+---+` borders.
- Do not rely on Markdown tables; Telegram does not render them as real tables.
- For small comparisons, prefer bullets or key/value lines.
- For small fixed-width tables, use a fenced `text` code block with aligned columns.
- For larger datasets, rankings, numeric comparisons, or trends, use the chart MCP server to generate a chart/image instead of an inline table.
- Include a short plain-language summary before any chart or table.
Examples:
Good small comparison:
- Basic — $10/mo — testing/small use
- Pro — $30/mo — best default
- Team — $80/mo — shared/admin controls
Good compact table:
```text
Plan Price Best for
Basic $10 Testing
Pro $30 Daily use
Team $80 Groups/admin
For larger or visual data:
Use the chart MCP server and attach the generated image.
Tiny gotcha: because that snippet itself contains triple backticks, if you paste it manually you may need to remove the outer code fence from my message and keep the inner examples.
Yep — copy this straight into your AGENTS.md:
## Chat Formatting
When replying in Telegram, optimize for mobile readability.
- Do not use ASCII box-drawing tables such as `+---+---+` or `|---|---|` borders.
- Do not rely on Markdown tables; Telegram usually does not render them as real tables.
- For small comparisons, prefer bullets or key/value lines.
- For small fixed-width tables, use a fenced `text` code block with aligned columns.
- For larger datasets, rankings, numeric comparisons, or trends, use the chart MCP server to generate a chart/image instead of an inline table.
- Include a short plain-language summary before any chart, table, or generated image.
Good small comparison format:
- Basic — $10/mo — testing/small use
- Pro — $30/mo — best default
- Team — $80/mo — shared/admin controls
Good compact table format:
```text
Plan Price Best for
Basic $10 Testing
Pro $30 Daily use
Team $80 Groups/admin
```
When using the chart MCP server, attach the generated image and briefly explain what it shows.
The agent didn't notice it the first time and I had to remind it, will that change over time?
Not automatically in a reliable “it learned forever” way.
If the instruction is in AGENTS.md, the agent should see it on future runs/sessions, but models can still miss softer guidance sometimes — especially if the task strongly suggests a table. Reminding it once in-chat usually helps for that conversation, but that reminder may not persist unless it’s written into durable instructions/memory.
I’d make the rule more forceful and decision-like, e.g.:
## Telegram Output Rules
For Telegram replies, never use ASCII table borders or Markdown pipe tables.
If information would normally be shown as a table, choose one of these instead:
1. Use bullets or key/value lines for small comparisons.
2. Use a fenced `text` code block only for small fixed-width tables.
3. Use the chart MCP server for larger datasets, rankings, trends, or numeric comparisons.
Before sending any table-like output, check whether it will be readable on a phone screen. If not, convert it to bullets or a chart image.
That “never” + explicit decision tree tends to work better than “prefer”. Still not 100%, but much better. If it keeps ignoring it, put the rule near the top of AGENTS.md under something like “Important output rules” so it’s harder to miss.