creatorvalet Search

Text cleaner

Paste the mess, keep the words. Runs in your browser — nothing is uploaded, nothing is stored.

  • SECURE
  • NO UPLOADS
  • NO SIGNUP
  • BROWSER BASED
  • FREE
  • FOREVER.

Support us with a link or a share

waiting

№ 5926waiting

Nothing at the counter yet.

What is in this text

The problem starts at the paste, not at the copy

When you copy a selection out of a web page, a Word document or a PDF, your clipboard does not hold one thing. It holds several representations of the same selection at once. One of them is text/plain — characters and nothing else. Another is text/html, carrying fonts, sizes, colors, list markup and whatever the source page happened to have in its stylesheet. Every editor that is capable of choosing takes the HTML one, because that is what makes a paste look like where it came from. WordPress does it. Word does it. Pages does it. Most rich-text fields in most content management systems do it.

So the formatting that lands in your document was not added by the copy. It was already sitting on the clipboard, waiting for a destination willing to read it. That is why the advice you find everywhere — open the file in a browser, highlight the text, right-click and copy — fixes nothing at all. It describes the copy, and the copy was never the problem.

Why this text cleaner is close to trivial

A <textarea> accepts only text/plain. When you paste into the box above, the browser discards the HTML flavor before the tool sees a single character. The paste is the cleaning. Bold, headings, link colors, the font the source used, the invisible span wrappers a CMS leaves behind — all of it is gone at the moment the text lands, without any code of ours running.

Everything the checkboxes do happens afterward, on plain text that already survived that step. We would rather say that plainly than dress it up as an engine. A tool that is cheap to build and reliable to use is worth returning to, and a tool you return to without a search engine in the middle is worth more than an impressive-sounding one you use once.

What a plain text converter is, and why this is not one

Converting means one format in and a different format out: HTML to text, Markdown to rich text, a document to PDF. Nothing on this page does that. Text goes in and text comes out, in the same format it arrived in. What changes is which characters are present — a line break that should not be there, a zero-width space, a curly quote.

The distinction matters because roughly half the people searching for a plain text converter want the other job entirely, and sending them here would waste their time. If you need a format changed, you need a converter. If your text is the right format and the wrong shape, you need cleaning, and that is this.

One neighboring job is worth naming, since it looks like cleaning and is not. Text that arrives full of %20 and %E2%80%99 has not been damaged and does not need repairing — it has been percent-encoded for travel through a URL, and the fix is to reverse that rather than to strip characters out. Decoding it restores the original exactly, including the curly apostrophe, which you can then straighten here if you want it gone.

Cleaning up text from ChatGPT and other AI tools

Text pasted out of an AI chat interface arrives with a recognizable set of characters: em dashes, curly single and double quotes, ellipsis as one glyph rather than three periods, non-breaking spaces, and sometimes zero-width characters that come from the chat interface's rendering layer rather than from the model. None of it is visible in the chat window. All of it survives into your CMS, your code editor and your database.

Two options here cover it. Straightening turns curly quotes into straight ones, an em dash into two hyphens, an en dash into one, an ellipsis into three periods, and every exotic space width into an ordinary space. Removing invisible artifacts takes out zero-width spaces, word joiners and invisible math operators, byte order marks, soft hyphens, bidi controls and non-line-breaking C0/C1 control codes. Script-bearing ZWNJ and ZWJ characters stay, as do the tag sequences that build subdivision emoji flags. The invisible character viewer shows you where each one sits and what it is, if you want to look before deciding, and what Unicode is and how it works explains why characters you cannot see are characters at all.

Decorative compatibility text is outside these five operations. If you used the fancy text generator, those styled Unicode letters pass through this cleaner unchanged; no NFC, NFKC or other Unicode normalization runs here.

The tool makes no claim about where your text came from and has no way of knowing. It counts characters and removes the ones you ask it to. It is not an AI detector, and a clean result proves nothing about authorship in either direction. If you only need to measure unchanged text, the character counter reports graphemes, words and bytes without applying cleanup.

Ctrl+Shift+V is faster, where you have it

Paste as plain text is built into Google Docs, Microsoft Word, Slack and nearly every code editor: Ctrl+Shift+V on Windows and Linux, Cmd+Shift+V on a Mac. Where it works it is quicker than loading any web page, including this one, and pretending otherwise would be the one thing that could make this page dishonest.

Three situations are left over. Some editors and comment fields do not offer it at all, and a keyboard shortcut that does not exist is no help. A phone or tablet without a hardware keyboard has the same gap; the guide to copying and pasting without formatting gives the iPhone, iPad and Chromebook routes without pretending a desktop shortcut solves them. Some text is still broken after a plain paste — line breaks copied out of a PDF are ordinary newline characters and survive plain pasting perfectly well, which is why removing line breaks is a separate task with its own page. And sometimes you want to see what was wrong rather than make it disappear, which a shortcut can never show you.

The five options, and why four of them start switched off

Joining single line breaks inside a paragraph while keeping the blank lines between paragraphs is the one that is on by default, because it is the reason most people arrive here. Capping runs of blank lines at two collapses the gaps left behind by a page footer or a header that came along for the ride. Emptying whitespace-only lines clears lines that hold nothing but spaces and tabs — it empties them rather than deleting them, since a line of three spaces between two paragraphs is the paragraph boundary. The last two are the invisible-character and punctuation options described above.

Four start off because straightening punctuation and stripping characters are real edits to your writing. An em dash in the middle of a sentence is usually deliberate, and a tool that changes text you did not ask it to change is a tool you have to check afterward. Every checkbox carries a count measured on the text you submitted, before anything is changed and regardless of whether that box is checked, so a switched-off option still tells you whether it has work to do. Line endings are the one exception: Windows carriage returns and Unicode's logical line separators are normalized before anything else runs, because none of the line-based options can be defined without it. That change is automatic but not hidden — the receipt says so when it happens.

What it does not do

There is no language processing here. Nothing corrects spelling, rewrites sentences, adjusts grammar or changes a word. Nothing converts a file from one format to another. The five options touch whitespace, line breaks, invisible characters and punctuation glyphs, and nothing outside that list. Deduplication is a different job with a different page — removing duplicate lines handles it.

Replacing one exact sequence with another is also deliberately separate. The literal Text Replacer counts the specified matches and changes those spans without applying cleanup or normalization rules. Use it when you know the exact old and new text; use this page when the problem is a diagnosed class of pasted characters.

Structured XML is not safe cleanup input: indentation and line breaks can be significant character data. The XML formatter validates that grammar and protects mixed content before it changes presentation whitespace.

Two adjacent jobs are deliberately elsewhere for the same reason. Changing which letters are capitalized is an editorial decision rather than a cleanup, and the rules differ by house style, so title case asks rather than assumes. And pulling the addresses out of a pasted block is extraction rather than cleaning — the email extractor finds them wherever they sit, including inside signatures and quoted replies. Links out of the same block are a separate page again, because the interesting part there is deciding where the address stops when a full stop is pressed against it.

It also will not tell you what changed. Cleaning is a one-way operation and the receipt counts what it removed, which is enough most of the time and not enough when a cleaned file is about to replace something in a repository. For that, keep both versions and compare them character by character: every non-breaking space and zero-width joiner that came out is named and located, on the side it was on.

If the text is clean but still feels repetitive, cleanup is no longer the question. A word frequency counter ranks the vocabulary without rewriting it, so you can inspect the sentences around an overused term.

Nothing you paste leaves this tab. There is no upload endpoint for this tool, nothing is stored, and nothing is logged. You can confirm it in about ten seconds: open your browser's developer tools, switch to the Network panel, paste your text and check the boxes. The request list does not move. Whatever you pasted stays a string held in your own tab, and it is gone the moment you close it.

Have an idea for this tool?

Tell us what would make this tool more useful, or suggest another tool you would like us to build.

Questions

Why does text pasted from a PDF have a line break on every line?

Because a PDF does not store paragraphs. It stores text positioned on a page, line by line, and copying it out gives you a break wherever the line ended visually rather than where the sentence ended. Joining lines inside paragraphs while keeping the blank lines between them is the first checkbox, and it is on by default because it is the reason most people arrive here.

What are invisible characters and why is my text full of them?

Zero-width spaces, word joiners, byte order marks and bidi controls are real characters that take up no visible room. They arrive from web pages, word processors and broken exports. The optional cleanup names those classes, but preserves script-bearing ZWNJ and ZWJ characters and the tag sequences used by subdivision emoji flags.

Will this change words or fix spelling?

No. Nothing here rewrites language. The five options only touch whitespace, line breaks, invisible characters and punctuation glyphs, and four of the five are off until you turn them on. The tool does not change text you did not ask it to change.

Is Ctrl+Shift+V not the same thing?

It is, when the place you are pasting into supports it. Paste-as-plain-text is built into Google Docs, Word and most code editors, and if that works for you it is faster than any web page. This tool exists for the editors that do not have it, for text that is still broken after a plain paste — line breaks from a PDF survive plain pasting perfectly well — and for the times you want to see what was wrong rather than just make it go away.

Does my text get uploaded?

No — nothing is transmitted, nothing is stored, nothing is logged, and this site keeps no route your text could travel down. A paste box deserves the question asked out loud, because pasting is casual in a way that choosing a file never is. People drop in a half-written email, a clause out of a contract or a column of customer records without pausing over any of it. All of that stays on your side of the screen.