#Slack message formatting
1 messages · Page 1 of 1 (latest)
Slack renders “mrkdwn” (Slack’s markdown-ish syntax). The unreadable output usually comes from (a) missing \n line breaks, or (b) trying to write “lists” without putting each item on its own line.
Practical rules that make Slack messages readable
-
Use real newlines
- Each paragraph/list item should be separated by
\n(and often a blank line:\n\n). - Watch out for accidentally sending the literal characters
\+n(\\n) instead of an actual newline.
- Each paragraph/list item should be separated by
-
Bulleted lists: one item per line
*Next steps* • Do the thing • Do the other thing • Ship it•tends to look best in Slack, but-also works:
- Do the thing
- Do the other thing
-
Numbered lists: also one item per line
*Plan* 1) First step 2) Second step 3) Third step -
Use bold section headers
*Summary*
...
*Details*
...
- Use code blocks for anything “loggy” or alignment-sensitive
*Logs* ```text line 1 line 2(Triple backticks, optionally with `text` / `json` / `bash`.)
- Quote blocks for callouts
> This is a warning / note / highlight
A good “template” message
*Deploy status: API*
*Summary*
• Prod deploy completed
• Error rate stable
*Changes*
1) Increased timeout for /search
2) Added caching for /users
*Notes*
> If latency spikes, roll back to build 1823
*Logs*
```text
request_id=abc123 latency=240ms
### If this is coming from a bot/integration
If you control the sender (Slack API), the “best” formatting is usually:
- plain `text` with mrkdwn + real `\n`, **or**
- **Block Kit** (`blocks`) for consistently formatted sections (harder to screw up, best readability).
If you tell me *how* you’re sending (OpenClaw message tool? Slack webhook? chat.postMessage API?), I can give the exact shape to send so lists/newlines render correctly.
I’m talking about the messages openclaw sends me via slack
OpenClaw’s Slack adapter renders Markdown → Slack mrkdwn (so it can do nice formatting), but it won’t “invent” line breaks/lists for you — it mostly sends what the model wrote. So the fix is usually: force a Slack-friendly style via a system prompt (optionally per Slack channel).
1) Add a Slack-specific systemPrompt (best fix)
In ~/.openclaw/openclaw.json (JSON5), you can do per-channel:
{
channels: {
slack: {
channels: {
"#your-channel": {
systemPrompt: `
Format for Slack readability:
- Use short paragraphs with blank lines between sections.
- Use bullet lists with one item per line (start with "• " or "- ").
- Use *bold* headers for sections.
- Prefer code fences for logs/examples.
Never output dense wall-of-text.
`.trim(),
},
},
},
},
}
Docs:
- Slack channel config + per-channel
systemPrompt: https://docs.openclaw.ai/gateway/configuration-reference#slack - How Markdown is rendered for Slack: https://docs.openclaw.ai/concepts/markdown-formatting
2) If long replies get “weirdly split”, set chunking to break on newlines
This doesn’t add line breaks, but it prevents OpenClaw from splitting a long message in the middle of a paragraph/list:
{
channels: {
slack: {
chunkMode: "newline", // instead of "length"
textChunkLimit: 4000,
},
},
}
3) If you paste one ugly example, I can tune the prompt
If you drop:
- one “badly formatted” Slack message OpenClaw sent, and
- what you wish it looked like (or just “more scannable”)
…I can give you a tighter systemPrompt that reliably produces proper Slack lists + spacing.
(Also: what OpenClaw version are you on? openclaw --version — formatting/chunking changed a bit over time.)
You can just tell that this is hard to read - the bullets are not truly formatted (no tabbed space after bullet and bulleted text on a new line isn’t tabbed either)
Yeah — that’s a Slack limitation + an LLM habit.
What’s actually happening
-
Slack only treats a list item as “a list” if it’s
-(dash + space) (same for*).
If OpenClaw outputs-Thing(no space), Slack renders it as plain text, so you get “fake bullets”. -
Slack doesn’t do “hanging indents” for wrapped / multi-line bullet items.
So if the model writes:
- Item: blah blah blah
more text on a new line
Slack will not auto-indent the “more text…” line under the bullet. You have to format that explicitly.
The most reliable fix: force “one bullet per line” (and never wrap)
Add a Slack channel systemPrompt that bans multi-line bullets and enforces - :
channels: {
slack: {
channels: {
"#your-channel": {
systemPrompt: `
Slack formatting rules:
- Lists must use "- " (dash + space) or "• " (bullet + space).
- Each bullet item must be a SINGLE line (no wrapped lines).
- If extra detail is needed, use a sub-bullet as its own line, or a quote block.
Example:
- Main point — short description
> Extra detail line 1
> Extra detail line 2
`.trim(),
},
},
chunkMode: "newline", // keeps lines from being split mid-list item
},
}
If you need multi-line items, use quote blocks for the continuation
This is the cleanest “indent” Slack gives you:
- Main item
> continuation line 1
> continuation line 2
If you paste one of the ugly OpenClaw messages (raw text is fine), I’ll rewrite the prompt so it matches your style and stops producing those broken “bullets.”
Recent Discord Updates (Feb 4, 2026):
I reviewed the latest patch notes — no major message UI facelift in the official updates. Here's what did ship recently:
Performance/UX improvements:
• Dramatic render performance boost on desktop (especially for lower-end systems) — primarily from optimizing slow CSS selectors
• Zoom/pan on screenshares via scroll wheel/trackpad (highly requested)
• @time command on desktop — easily generate timezone-aware Linux timestamps
• 80% of A/V traffic now on Rust backend (migration from old stack)
• Stats for Nerds — right-click videos to inspect codecs/bitrates
Message-related changes:
• Spoilered emoji handling fixes
• Link rendering in subtext headers (-# formatting)
• Display Name Styles improvements
• Message draft saving fixes
• Various mobile keyboard/input fixes
Nothing about "native looking messages" in the official changelog.
Possible Alternatives:
- Third-party bot/integration?
• AutoMod/Dyno/MEE6 style embeds with "cleaner" message formatting?
• Webhook-based messages with custom avatars/formatting?
2. Client mod (BetterDiscord/Vencord)?
• Custom themes that make messages look more "native" (iOS/macOS/Windows 11 style)?
• Plugins for message styling?
3. Something you saw on Twitter/social?
• Link/screenshot of what you're referring to would help me track it down
4. Discord Experiments (feature flags)?
• Sometimes features roll out slowly via A/B testing before appearing in patch notes
• Could be a hidden feature testing "native" message bubbles (iMessage/WhatsApp style)?
Here’s an example
Questions to narrow it down:
• Where did you hear about this? (Twitter, Reddit, Discord server?)
• Is it a visual change (message bubbles, colors, layout) or functional (reactions, threading, etc.)?
• Desktop or mobile?
If you've got a link/screenshot, drop it and I'll dig deeper!
You’re not wrong — but the annoying part is: Slack “mrkdwn” doesn’t actually have real list layout / hanging indents in normal messages. It’s mostly just text rendering, so:
- there’s no true “tabbed” continuation line under a bullet
- multiple spaces/tabs won’t reliably indent like you expect (Slack collapses whitespace unless you’re in a code block)
- so a “bullet + wrapped line” will always look a bit janky
What works best with OpenClaw → Slack today
1) Force “one bullet = one line”
Don’t let the model wrap bullets. If it needs more detail, split into more bullets, or use a quote block.
2) Use - (dash + space) consistently
Unicode • is just a character; - tends to read more like an actual list in Slack.
3) For “indented details”, use quote blocks
This is the closest Slack gets to a clean visual indent:
- Performance/UX improvements
> Dramatic render perf boost on desktop
> Zoom/pan on screenshares
The OpenClaw-side fix: a Slack channel systemPrompt
Put this under your Slack channel config:
channels: {
slack: {
chunkMode: "newline",
channels: {
"#slack-message-formatting": {
systemPrompt: `
When replying in Slack:
- Use *bold* section headers.
- Use "-" dash-space lists (not "•").
- Each list item must be ONE line only (no wrapped/continuation lines).
- If extra detail is needed, add another bullet or use "> " quote lines.
Keep it scannable; no wall-of-text.
`.trim(),
},
},
},
}
Example: your pasted message, reformatted in a “Slack-friendly” way
*Recent Discord Updates (Feb 4, 2026)*
*Performance / UX*
- Dramatic desktop render performance boost (CSS selector optimizations)
- Zoom/pan on screenshares (scroll wheel/trackpad)
- @time command on desktop (timezone-aware timestamps)
- 80% of A/V traffic now on the Rust backend
- “Stats for Nerds” for video codecs/bitrates
*Message-related*
- Spoilered emoji handling fixes
- Link rendering in subtext headers (-#)
- Display Name Styles improvements
- Message draft saving fixes
- Mobile keyboard/input fixes