Markdown Paste Cleaner
Clean Markdown-style formatting from pasted text copied from GitHub, README files, Notion, Obsidian, documentation sites, wikis, and other Markdown editors. Remove formatting marks while keeping your words intact — everything runs in your browser.
🔒 Your text is processed locally in your browser and never uploaded. We do not upload or store your text.
What this removes
Each rule below has its own checkbox above, so you can turn off anything you'd rather keep.
- Bold and italic markers —
**text**,__text__,*text*, and_text_are removed, leaving the plain word. - Inline code backticks —
`code`becomescode. - Heading markers — a leading
#through######is removed from the start of a line. - Blockquote markers — a leading
>is removed from quoted lines. - Markdown links —
[text](url)becomes just "text"; the URL is dropped. - Fenced code blocks — the
```marker lines (including any language tag) are removed; the code between them is kept exactly as written, with no other cleanup applied to it. - List markers — lines starting with
-,*, or+are normalized to "- " by default, or stripped entirely if you untick "Preserve bullet lists".
Before and after
Pasted Markdown
# Project notes from a README Here is a quick summary with a [reference link](https://example.com/). > This paragraph was copied with Markdown quote formatting. - First action item - **Second action item** with `inline code`
After cleaning
Project notes from a README Here is a quick summary with a reference link. This paragraph was copied with Markdown quote formatting. - First action item - Second action item with inline code
Common Markdown paste problems
Markdown is meant to be rendered, but when you copy text out of a tool that displays it, you often get the raw source instead of the formatted result:
- AI chat answers are written in Markdown, so a copied response can
arrive full of
**bold**,#headings, and[link](url)syntax instead of formatted text. - GitHub READMEs, issues, and pull requests render Markdown on the page, but copying from them — or from the raw file — brings the source marks along.
- Notion, Obsidian, and other Markdown-based notes apps store content as Markdown under the hood, which can leak through when you copy and paste elsewhere.
- Documentation sites and wikis are often generated from Markdown source, so copied snippets can carry headings, links, and emphasis marks.
- Code answers with fenced blocks wrap example code in
```markers, which paste as literal triple backticks around the code.
In each case the words themselves are fine — it's the leftover formatting marks that make the text look broken when pasted somewhere that doesn't render Markdown.
How it works
Text copied from GitHub, Notion, README files, and documentation sites often brings its
Markdown source along with it — asterisks around bold and italic words,
backticks around inline code, # marks in front of headings, > in front of quoted
paragraphs, and full [text](url) link syntax. This tool strips those marks
with a fixed set of rules, each one its own checkbox above, so the words underneath read
cleanly when pasted into an email, document, or plain-text note.
Bold and italic markers (**text**, __text__, *text*,
_text_) and inline code backticks are removed, leaving the plain word. Markdown
links become just their link text. Heading markers (# through ######)
and blockquote markers (>) are removed from the start of a line. Bullet
lines starting with -, *, or + stay as bullet lines by
default — untick "Preserve bullet lists" to remove the bullet marker too.
Fenced code blocks (text wrapped in triple backticks) are handled separately: the marker
lines — including any language tag, like ```js — are removed, but everything
between them is left exactly as written. No formatting rules run inside a fenced block, so
code samples keep their original spacing and punctuation.
Common uses
People reach for this tool whenever pasted text still looks like Markdown source:
- Pasting Markdown notes into an email or document without
**,#, or[link](url)marks showing up as literal characters. - Turning a GitHub README or issue into plain text for a report, ticket, or message.
- Copying notes out of Notion, Obsidian, or another Markdown editor for use in a plain-text field or non-Markdown document.
- Cleaning a documentation snippet before pasting it into a slide, email, or word processor.
- Stripping triple-backtick fences from a code example while keeping the code itself intact.
Got broken line breaks or hyphenated words from a PDF instead? The PDF Text Cleaner and Line Break Remover handle that. To compare two versions of cleaned text, try the Text Diff Checker, and the Text Case Converter can fix inconsistent capitalization afterward.
Common questions
Does my text get uploaded anywhere?
No. We do not upload or store your text. The cleaning rules ship with this page as JavaScript and run on your device; there is no server that receives your text, and nothing is kept after you close the tab.
What does this tool actually remove?
Bold (**text** and __text__), italic (*text* and
_text_), inline code (`text`), heading markers (#,
##, ...), blockquote markers (>), and Markdown links
([text](url), kept as just "text"). Fenced code blocks (```)
have their marker lines removed while the code inside stays untouched. List markers
(-, *, +) are normalized to "- " by default, or
removed entirely if you untick "Preserve bullet lists". Most of these have their own
checkbox above, so you can turn off the ones you don't want — fenced code handling is
always on.
Will it change my wording?
No. Only Markdown formatting marks are removed or converted. The words themselves, and the paragraph breaks between them, stay exactly as you pasted them.
What happens to my bullet lists?
By default, lines starting with -, *, or + stay as
bullet lines (normalized to "- "), and any formatting marks inside them are still
cleaned. Untick "Preserve bullet lists" if you want the leading bullet marker removed
too, leaving plain paragraph lines.
Is this an AI tool?
No. This is a fixed set of deterministic find-and-replace rules. The same input always produces the same output, and nothing is sent anywhere for processing.