Markdown in ChatGPT and Claude answers: read it, strip it, keep it
Updated
AI assistants write their answers in markdown: **bold**, # headings, - bullets, ``` code fences and | tables. The chat window renders them; raw copies, API responses and pastes into the wrong app do not. This page decodes each symbol, gives prompt phrases that switch markdown on or off, and maps every common paste destination to what breaks and which converter fixes it.
Symbol table: what each mark in an AI reply means
| You see | It means | Rendered in the chat | Pasted raw |
|---|---|---|---|
**text** | Bold | bold text | Stray asterisks around words |
*text* or _text_ | Italic | italic text | Single asterisks or underscores |
# / ## / ### | Heading level 1, 2, 3 | Large section titles | Pound signs at line start |
- item or * item | Bulleted list | • item | Hyphens or asterisks at line start |
1. item | Numbered list | 1. item (auto-numbered) | Numbers survive as typed |
- sub-item | Nested list (2–4 spaces indent) | Indented bullet | Leading spaces plus hyphen |
```lang … ``` | Code block, optional language | Monospace box with highlighting | Three backticks on their own lines |
`code` | Inline code | monospace span | Backticks around words |
| a | b | + |---|---| | Table (header row, then separator) | Grid | Pipes and dashes |
> text | Blockquote | Indented, bar on the left | Greater-than signs |
[text](url) | Link | Clickable text | Brackets and parentheses |
--- | Horizontal rule | Divider line | Three hyphens |
~~text~~ | Strikethrough | crossed out | Double tildes |
- [ ] / - [x] | Task list | Checkboxes | Brackets after a hyphen |
$x^2$ or \( x^2 \) | Math (LaTeX) | Typeset formula in some UIs | Dollar signs or backslash parens |
Reading an AI answer: what the symbols mean
A typical assistant reply uses a small subset of GitHub Flavored Markdown. Left: what arrives when you copy the raw text; right: what the chat window shows.
A typical answer, raw
## Summary
The deploy failed because the **API key expired**. To fix it:
1. Rotate the key in the dashboard
2. Update `API_KEY` in `.env`
3. Redeploy with:
```bash
npm run deploy
```
> Note: keys expire every 90 days.Summary
The deploy failed because the API key expired. To fix it:
- Rotate the key in the dashboard
- Update
API_KEYin.env - Redeploy with:
npm run deploy
Note: keys expire every 90 days.
Everything that looks like noise — ##, **, backticks, > — is formatting instruction, not content.
A table in an answer
| Option | Cost | Best for |
|--------|------|----------|
| A | Low | Prototypes |
| B | High | Production || Option | Cost | Best for |
|---|---|---|
| A | Low | Prototypes |
| B | High | Production |
The second line of dashes is required; without it the pipes stay literal text.
Stripping markdown
Before: raw answer
**Decision:** ship on *Friday*.
- Owner: `@sam`
- Risk: ~~medium~~ lowDecision: ship on Friday.
- Owner:
@sam - Risk:
mediumlow
Pasted into an email or a CRM field, every one of these symbols shows literally.
After: plain text
Decision: ship on Friday.
- Owner: @sam
- Risk: lowThe converter removes emphasis markers and code ticks, keeps list lines readable and drops struck-through text.
Keeping markdown: ask for the source
Wrap the whole answer in a fence
Prompt: "Return the README as GitHub Flavored Markdown inside a single ```markdown code block."An outer fence stops the chat UI from rendering, so the Copy button gives you exact source with no rich-text conversion.
Nested fences need a longer outer fence
````markdown
# Install
```bash
npm install
```
````Four backticks outside, three inside; otherwise the inner fence closes the outer one.
Prompt phrases to request or suppress markdown
Formatting instructions work best when they name the symbols and the destination. These are plain requests to the model, not settings; restate them in long chats.
| Goal | Prompt phrase | Why it works |
|---|---|---|
| No markdown at all | Reply in plain text only. Do not use markdown: no asterisks, no # headings, no bullet symbols, no code fences, no tables. | Lists every symbol so there is nothing to interpret loosely. |
| Email-ready | Write this as an email body in plain prose with short paragraphs. No markdown formatting; I will paste it into Gmail. | The destination explains the constraint. |
| Lists but no symbols | Use numbered steps written as "Step 1:", "Step 2:" on their own lines, with no markdown. | Keeps structure without list markers. |
| Full markdown for a README | Answer in GitHub Flavored Markdown with headings, a table and fenced code blocks, inside one ```markdown code block so I can copy the source. | The outer fence stops the UI rendering it. |
| Slack message | Format for Slack: *single asterisks* for bold, _underscores_ for italic, • for bullets, no headings and no tables. | Slack mrkdwn differs from markdown. |
| Discord message | Format for Discord markdown: **bold**, __underline__, ``` code blocks, no tables, keep it under 2000 characters. | Discord has no tables and a message length cap. |
| A table only | Return only a markdown table with the columns Name, Price, Notes — no text before or after it. | Clean source for a table generator or spreadsheet import. |
| Headings as plain lines | Use Title Case lines instead of # headings and leave a blank line after each. | Survives paste into Word without stray pound signs. |
| Code only | Return only the code in a single fenced block with the language tag; no explanation. | Easiest thing to copy from a chat UI. |
Paste destinations: what breaks and which converter fixes it
| Destination | Keeps | Breaks | Fix | Tool |
|---|---|---|---|---|
| Microsoft Word | Rendered rich text copied from the chat window | Raw **, #, |, ``` pasted as literal characters | Convert the markdown source to .docx | Markdown to Word |
| Google Docs | Rich text from the chat; markdown typing shortcuts for *bold* and lists | Tables and code fences as raw text | Convert to .docx and import, or paste rendered | Markdown to Word |
| Gmail / Outlook | Rich text from the chat (bold, lists) | All symbols if pasted as plain text; tables | Strip to plain text, or paste the rendered answer | Markdown to plain text |
| Notion | Most markdown on paste: headings, lists, bold, code, tables | Footnotes, HTML, nested fences | Paste the raw markdown source directly | Markdown formatter |
| Slack | Code fences, > quotes, single-marker emphasis | **bold**, # headings, | tables, [text](url) | Translate to mrkdwn | Markdown to Slack |
| Discord | **bold**, *italic*, headings, lists, quotes, ``` code | | tables, images, __underline__ means underline | Drop tables, check length | Markdown to Discord |
| GitHub / GitLab / docs site | Everything (GFM) | Nothing, but heading levels and list markers may be inconsistent | Normalise and lint | Markdown formatter |
| Plain text field (forms, CRMs, SMS) | Line breaks only | Every symbol | Strip markdown | Markdown to plain text |
| A shareable link | Everything including mermaid diagrams | Nothing | Paste and share | Docs MD share |
Why does ChatGPT or Claude put asterisks and pound signs in its answers?
The answer is written in markdown, a plain-text formatting convention: **text** means bold, # starts a heading, - starts a bullet, and ``` fences a code block. The chat interface renders those symbols into formatting; when you copy the raw text or read it through an API, the symbols come along as literal characters.
How do I ask ChatGPT or Claude to stop using markdown?
Say so explicitly in the prompt: "Reply in plain text only. No markdown: no asterisks, no pound-sign headings, no bullet symbols, no code fences." Adding "I will paste this into an email" gives the model a reason to comply. Repeat the instruction at the start of long conversations; it is a request, not a setting, so it can drift.
How do I remove markdown formatting from an AI answer?
Paste it into the markdown to plain text converter, which strips the symbols while keeping line breaks and list structure. For a one-off, search-and-replace ** and # in any text editor; for repeated use, ask the model for plain text up front.
How do I paste an AI answer into Word or Google Docs with the formatting kept?
Copying from the chat window usually keeps rendered headings and bold because the browser copies rich text. If you have raw markdown instead (from an API, a file or a "copy" button that gives source), run it through the markdown to Word converter and open or paste the .docx; Google Docs also accepts a .docx import.
Why does the formatting break when I paste an AI answer into Slack or Discord?
Both apps use their own dialects. Slack treats *single asterisks* as bold and ignores **double**, # headings and | tables; Discord handles most inline markdown and code blocks but has no tables and renders __double underscores__ as underline. Convert first, or ask the model for the dialect by name.
How do I ask for a table from an AI assistant?
Ask for "a markdown table with columns A, B and C". In the chat UI it renders as a grid; the source is a GFM pipe table you can paste into GitHub, Notion, Obsidian or the markdown table generator. Word, Gmail and Slack do not understand pipe tables — convert or paste the rendered version.
How do I get clean markdown out of an AI answer for a README or docs?
Ask for "GitHub Flavored Markdown in a single code block" so the source is not rendered and can be copied verbatim, then run it through the formatter and linter to normalise heading levels, list markers and table alignment before committing.
Related
Markdown cheat sheet · What is markdown? · Slack formatting · Discord markdown · WhatsApp formatting · Agent handoff template · Escape characters guide