Why does ChatGPT text paste broken into Slack?
Because Slack was never running the Markdown you think it was. ChatGPT, Claude, and Gemini write their answers in standard Markdown — **bold**, ### headings, pipe-separated tables — and the chat window renders that into styled HTML before you copy it. Slack messages, though, use a different, narrower syntax of their own called mrkdwn. It looks similar at a glance but diverges in exactly the ways that matter for a pasted AI answer: bold is one asterisk, not two, and headings do not exist as a concept at all.
The result is predictable once you know the cause: a pasted **Revenue** shows up in the Slack message as literal text — asterisks included — instead of bold, and a pasted ### Next steps line shows up as a plain sentence still wearing its hash marks. Slack isn't failing to parse Markdown; it's correctly parsing its own syntax, which the pasted text was never written in. This is the same character-versus-formatting mismatch covered in general terms on why text pastes weird — Slack is simply a destination with an unusually strict, unusually narrow syntax of its own.
Slack's mrkdwn vs. the Markdown ChatGPT writes
Slack documents its own syntax as mrkdwn, a deliberately smaller set of formatting rules than standard Markdown. Here is where every AI chatbot's output collides with it:
| Formatting | ChatGPT/Claude write | Slack mrkdwn | Pasted into Slack as-is |
|---|---|---|---|
| Bold | **bold** | *bold* | Literal **asterisks**, not bold |
| Italic | *italic* or _italic_ | _italic_ | Single *asterisks* italicize by accident; underscores work |
| Strikethrough | ~~struck~~ | ~struck~ | Literal ~~tildes~~, not struck |
| Heading | # / ## / ### | Not supported | Literal ### text, no heading |
| Table | | a | b | | Not supported | Literal pipes and hyphens |
| Inline code | `code` | `code` | Works — same syntax |
| Code block | ```code``` | ```code``` | Works — same syntax |
| Bulleted list | - item | - item (composer only) | Renders as a bullet while typed; a pasted block often lands as plain lines |
Slack's own help center documents this syntax and lets each person choose between typing mrkdwn directly or using the composer's formatting toolbar — see Slack's message formatting preference documentation. A more detailed third-party syntax breakdown, including how bot and API messages differ from the composer, is in Knock's developer guide to Slack Markdown.
What Cmd/Ctrl+Shift+V actually fixes in Slack
Slack follows the same browser convention as most apps: a normal paste (Ctrl/Cmd+V) tries to carry over rich formatting such as bold, italic, and links from the source, while Ctrl+Shift+V on Windows/Linux or Cmd+Shift+V on Mac pastes as plain text and strips that styling. Neither one touches the literal characters already inside the text — which is the half of the problem a plain-text paste can't reach:
| Artifact | Survives Ctrl/Cmd+Shift+V? | What fixes it |
|---|---|---|
| Rich styling carried from the source | No — this is what plain paste removes | Ctrl/Cmd+Shift+V alone |
| Markdown markers (**, ###, ~~) | Yes — they're literal text | Strip Markdown, then re-bold in Slack syntax if needed |
| Curly quotes and em dashes | Yes | Typography normalization |
| Non-breaking / narrow no-break spaces (U+00A0, U+202F) | Yes | Whitespace normalization |
| Invisible characters (U+200B, U+2060, U+FEFF) | Yes | Invisible-character removal |
Those special spaces and hidden characters are especially easy to miss in Slack, because the composer is small and single-line messages rarely get a second look before you hit Enter. The full breakdown of what each character does is on the non-breaking space guide and the invisible character remover.
The practical fix: clean it, then re-bold in Slack syntax
Run the chatbot's answer through the cleaner at the top of this page first. The default AI Clean preset normalizes curly quotes, em dashes, and special spaces, and removes hidden characters — all of which are identical problems no matter which app you paste into. Markdown markers are left alone by every preset by default, because some destinations (Notion, most CMS editors) do use them; Slack is one of the destinations that doesn't. Switch on Strip Markdown in Advanced Controls to remove **, ###, and ~~ entirely, rather than leaving them as literal characters in your Slack message.
What you copied from ChatGPT
### Deploy checklist **Owner:** Priya Ship by 5:00[U+202F]PM — no exceptions.
After AI Clean + Strip Markdown
Deploy checklist Owner: Priya Ship by 5:00 PM - no exceptions.
The bracketed tag [U+202F] stands in for a narrow no-break space that is invisible in real text — that's exactly the kind of character that makes a Slack message's line breaks look wrong for no visible reason. From that clean starting point, adding real Slack formatting takes seconds: retype *Owner:* for genuine bold, since only you know which one or two words in a short Slack message are worth emphasizing — a cleaner can safely strip markup, but it can't guess your intent well enough to re-apply it correctly. Everything runs in your browser; no message text is uploaded anywhere.