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 seeIt meansRendered in the chatPasted raw
**text**Boldbold textStray asterisks around words
*text* or _text_Italicitalic textSingle asterisks or underscores
# / ## / ###Heading level 1, 2, 3Large section titlesPound signs at line start
- item or * itemBulleted list• itemHyphens or asterisks at line start
1. itemNumbered list1. item (auto-numbered)Numbers survive as typed
- sub-itemNested list (2–4 spaces indent)Indented bulletLeading spaces plus hyphen
```lang … ```Code block, optional languageMonospace box with highlightingThree backticks on their own lines
`code`Inline codemonospace spanBackticks around words
| a | b | + |---|---|Table (header row, then separator)GridPipes and dashes
> textBlockquoteIndented, bar on the leftGreater-than signs
[text](url)LinkClickable textBrackets and parentheses
---Horizontal ruleDivider lineThree hyphens
~~text~~Strikethroughcrossed outDouble tildes
- [ ] / - [x]Task listCheckboxesBrackets after a hyphen
$x^2$ or \( x^2 \)Math (LaTeX)Typeset formula in some UIsDollar 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:

  1. Rotate the key in the dashboard
  2. Update API_KEY in .env
  3. 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 |
OptionCostBest for
ALowPrototypes
BHighProduction

The second line of dashes is required; without it the pipes stay literal text.

Table guide: alignment and line breaks in cells →

Stripping markdown

Before: raw answer

**Decision:** ship on *Friday*.

- Owner: `@sam`
- Risk: ~~medium~~ low

Decision: ship on Friday.

  • Owner: @sam
  • Risk: medium low

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: low

The converter removes emphasis markers and code ticks, keeps list lines readable and drops struck-through text.

Markdown to plain text converter →

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.

Code block guide: nesting fences →

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.

GoalPrompt phraseWhy it works
No markdown at allReply 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-readyWrite 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 symbolsUse numbered steps written as "Step 1:", "Step 2:" on their own lines, with no markdown.Keeps structure without list markers.
Full markdown for a READMEAnswer 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 messageFormat for Slack: *single asterisks* for bold, _underscores_ for italic, • for bullets, no headings and no tables.Slack mrkdwn differs from markdown.
Discord messageFormat 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 onlyReturn 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 linesUse Title Case lines instead of # headings and leave a blank line after each.Survives paste into Word without stray pound signs.
Code onlyReturn 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

DestinationKeepsBreaksFixTool
Microsoft WordRendered rich text copied from the chat windowRaw **, #, |, ``` pasted as literal charactersConvert the markdown source to .docxMarkdown to Word
Google DocsRich text from the chat; markdown typing shortcuts for *bold* and listsTables and code fences as raw textConvert to .docx and import, or paste renderedMarkdown to Word
Gmail / OutlookRich text from the chat (bold, lists)All symbols if pasted as plain text; tablesStrip to plain text, or paste the rendered answerMarkdown to plain text
NotionMost markdown on paste: headings, lists, bold, code, tablesFootnotes, HTML, nested fencesPaste the raw markdown source directlyMarkdown formatter
SlackCode fences, > quotes, single-marker emphasis**bold**, # headings, | tables, [text](url)Translate to mrkdwnMarkdown to Slack
Discord**bold**, *italic*, headings, lists, quotes, ``` code| tables, images, __underline__ means underlineDrop tables, check lengthMarkdown to Discord
GitHub / GitLab / docs siteEverything (GFM)Nothing, but heading levels and list markers may be inconsistentNormalise and lintMarkdown formatter
Plain text field (forms, CRMs, SMS)Line breaks onlyEvery symbolStrip markdownMarkdown to plain text
A shareable linkEverything including mermaid diagramsNothingPaste and shareDocs 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.

Markdown to plain text converter →

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.

Markdown to Word converter →

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.

Slack formatting cheat sheet →

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.

Markdown table generator →

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.

Markdown formatter →

Related

Markdown cheat sheet · What is markdown? · Slack formatting · Discord markdown · WhatsApp formatting · Agent handoff template · Escape characters guide