Text Cleaner
Seven cleanup passes over one paste — extra spaces, punctuation, special characters, numbers, emoji, HTML tags and accents — each on its own switch, all of them on to start.
Runs 100% in your browser•Nothing is uploaded to a server•Instant results
What to remove
Fine tuning
Input
Before and after
One paste, seven passes
Text that has been somewhere else always arrives carrying the shape of where it came from. A paragraph copied out of a web page brings non-breaking spaces and the indentation of the HTML source. An export from a CMS brings the tags themselves. A chat log brings emoji, a PDF brings its line numbering, a European name list brings accents a legacy field cannot store. Cleaning any one of those is a two-second job. Cleaning all six at once, by hand, in the right order, is not — which is what this page is for.
Every switch starts on. Paste something and the default pass strips the markup, drops the emoji, folds the accents, removes the whole numbers, cuts the punctuation back to sentence endings and apostrophes, removes the symbols outside basic punctuation, and evens out the whitespace. That is a deliberately aggressive default, and it is meant to be edited: the switches are the first thing on the page precisely because the right answer depends on what you are cleaning. Untick Numbers if the dates matter. Untick Punctuation if a human has to read the result.
The order the passes run in is fixed and is not the order of the checkboxes: HTML tags, emoji, accents, numbers, punctuation, special characters, extra spaces. That sequence is doing real work. Markup has to go before punctuation, or <p> loses its angle brackets and leaves a stray p in the middle of the sentence. Accents have to be folded before any ASCII-only pass, or every accented letter is deleted rather than simplified. Whitespace has to be last, because every earlier step leaves gaps where the characters it removed used to be.
The counters underneath show the character count in, the character count out, how many characters went, and the word count either side. Everything runs in your browser: nothing you paste is uploaded, which is the point when the thing you are cleaning is a contract, a transcript, a customer email or an export you are not allowed to put through a web service.
Each pass, on its own page
Every switch above is the same code as the page below it, with more room for the settings that only matter for that one transform — and with the specifics of when it goes wrong.
- Remove Extra Spaces — collapse double spaces, trim line ends, and clear out the non-breaking and zero-width spaces that find-and-replace cannot see.
- Remove Punctuation — commas, quotes, brackets and dashes, with a choice about the apostrophes and hyphens inside words.
- Remove Special Characters — symbols, currency signs and control characters, cut back to letters and digits, to basic punctuation, or to plain ASCII.
- Remove Numbers — every digit, only whole numbers so mp3 and H2O survive, or only the “1.” at the start of each line.
- Remove Emojis — whole clusters, so flags, keycaps, skin tones and family sequences come out in one piece rather than in fragments.
- Remove HTML Tags — strip the markup, keep the line structure, decode the entities and drop the script bodies.
- Remove Accents — é ü ñ to plain letters, including ß, ø and ł, which normalisation alone silently destroys.
Text cleaner questions
In what order do the cleaners run?
Always the same order, and it is not the order of the checkboxes: HTML tags, emoji, accents, numbers, punctuation, special characters, then extra spaces. The order changes the answer. Markup has to go before punctuation, or a stripped tag leaves a bare p behind for the punctuation pass to keep. Accents have to be folded before an ASCII-only pass, or the accented letters are simply deleted. And the whitespace tidy-up runs last so it can close up the gaps every earlier step opened.
Why did my dates and prices disappear?
Because the numbers switch is on. Every switch on this page starts on, which is what makes it a one-click cleaner, but that also means it is a destructive default. Untick Numbers and the digits come back. The numbers setting starts on “whole numbers only”, so a digit welded into a word such as mp3 or H2O survives either way — it is the standalone years, quantities and invoice numbers that go.
Is any of this uploaded?
No. Every transform on this page is plain JavaScript running in your own browser, and the page makes no network request of any kind with what you paste. That matters here more than on most tools, because the text people clean is usually the text they cannot send anywhere: a contract, a transcript, a customer message or an export from an internal system.