Conversor para Texto Simples

Cleanup options

Up to 200,000 characters at a time. Everything runs in this tab — your text is never uploaded, and the page keeps working offline.

Cole o que você copiou. Receba texto simples e limpo de volta. A limpeza roda no seu navegador — o seu texto nunca sai dele.

Built by Bob Article by Lace QA by Ben Shipped

Como usar

  1. 1

    Cole no painel da esquerda. Se você copiou de uma página exibida, e não do código-fonte, esta ferramenta lê a versão formatada do que está na sua área de transferência, e não a achatada — então uma palavra em negrito dentro de um link chega com a marcação intacta e é removida direito, em vez de já chegar meio estragada.

  2. 2

    Leia o texto limpo à direita. Não tem botão Converter. A saída é recalculada a cada tecla, a cada colagem e a cada opção alterada, porque uma página que faz você clicar em Converter e depois em Baixar está cobrando dois cliques por algo que o seu navegador faz em menos de um milissegundo.

  3. 3

    Confira o relatório embaixo da saída. Ele conta o que foi removido por tipo — caracteres ocultos, tags de formatação, aspas curvas. Essa linha é a parte que a maioria dos limpadores deixa de fora, e é a que diz se o lixo invisível que você suspeitava estava mesmo lá.

  4. 4

    Desligue “Endireitar aspas curvas e travessões” se quiser manter a tipografia. Vem ligado por padrão porque aspas curvas são o que quebra comandos de terminal, leitores de CSV e exemplos de código. Desligue quando estiver movendo texto corrido entre dois lugares que lidam bem com elas.

  5. 5

    Ligue “Juntar linhas quebradas em parágrafos” para texto que saiu de um PDF ou de um programa de e-mail antigo. Eles quebram numa coluna fixa, então toda linha termina no meio da frase. Juntar remonta o parágrafo e mantém as linhas em branco entre os parágrafos.

  6. 6

    Ligue “Remover caracteres não ASCII” só quando o destino realmente não aceitar — uma coluna de banco de dados antiga, uma exportação de largura fixa, um sistema que estraga tudo acima de 127. Ele apaga letras acentuadas e emoji em vez de transliterá-los, então café vira caf.

  7. 7

    Copie ou baixe. Copiar coloca só texto simples na área de transferência, então colar num editor com formatação não arrasta estilo junto. Baixar salva plain-text.txt direto do seu navegador. Sem conta, nos dois casos.

Perguntas frequentes

Ratings & Reviews

Rate this tool

Sign in to leave a written review.
Loading reviews…

What does the Plain Text Converter do?

It takes whatever you copied — a formatted document, a rendered web page, a PDF, a chatbot answer — and hands back text with nothing hiding inside it. Three passes run on everything: it strips HTML tags, deletes the invisible characters, and turns exotic spaces into ordinary ones. Four switches handle the judgement calls after that.

Paste <p>Hello <b>world</b></p> and you get Hello world, with a line under the output pane that reads Removed 4 formatting tags. Paste ab 👨‍👩‍👧 with a zero-width space (U+200B) wedged between the a and the b, and you get ab 👨‍👩‍👧 and Removed 1 hidden character. The family emoji survives, which is harder than it looks: that emoji is three separate people held together by two invisible joiners, and the obvious way to build a hidden-character remover shreds it into parts.

The Plain Text Converter has no Convert button. The output recomputes on every keystroke and every paste, because a page that charges you a click to convert and another click to download is charging you two clicks for work that takes under a millisecond. The ceiling is 200,000 characters at a time, roughly a 400-page book, and all of it runs in this tab.

When you'll use the Plain Text Converter

Pasting into something that can't take formatting. A plain-text email field, a code comment, a YAML file, a chat box, a CMS that stores raw text. Copy out of a document and you drag a style stack behind you — fonts, colours, list markers, a link URL you never wanted. Remove formatting first and what lands is exactly what you can see.

Chasing a bug that isn't there. Two strings look identical and won't match. A password gets rejected that you swear is right. A product code fails validation. Nine times in ten something invisible rode along on the copy — a zero-width space, a soft hyphen, a byte-order mark from a file that opened in the wrong encoding. Paste a password carrying a zero-width space after the w and you get Pa55word! back with Removed 1 hidden character underneath. That line is the answer to the bug.

Moving text out of a PDF. PDFs wrap at a fixed column, so every line ends mid-sentence. Turn on "Join wrapped lines into paragraphs" and the sentences reassemble while the blank lines between paragraphs stay put.

Getting a command to run. Copy a command out of a styled document and the quotes come with it curled. A shell reads ‘fix’ as two ordinary letters, not as delimiters, and the command fails with an error that has nothing to do with the real problem. git commit -m ‘fix’ goes in, git commit -m 'fix' comes out, and the report says Removed 2 smart quotes.

Preparing data for something strict. A CSV reader, a legacy database column, a fixed-width export. Non-breaking spaces and curly quotes are the two things that break these imports most often, and both are invisible to proofreading. Convert to plain text before the import and neither one reaches the parser.

How the cleanup works

The first question the Plain Text Converter asks is whether your paste is markup at all. It looks for tags, and for a signal that those tags are really HTML rather than a less-than sign doing its day job; if either answer is no, the markup pass is thrown away entirely and your text is used as you typed it. That matters because whitespace means opposite things in the two worlds. In HTML, the indentation between tags is source layout and has to collapse — otherwise every paste comes back double-spaced. In plain text, a line break is content and has to survive. The two rules can't both run over the same string, so a paste either is markup or it isn't. There's no middle setting.

When it is markup, the converter strips HTML tags and turns block elements into line breaks — paragraphs, list items, headings, table rows. Table cells inside a row are separated by a tab, so a pasted table stays one row per line and imports cleanly into a spreadsheet. Script, style and head content is discarded rather than printed, which is why you never see a stray .c{color:red} in the output. Bold, italic, colour and link URLs are gone by definition; the link text stays.

Then the character-level work. Line endings normalise. Invisible characters are deleted — zero-width spaces, the word joiner, soft hyphens, the byte-order mark, the old control characters, and the bidi controls that reorder how text displays without changing what it says. Space-class characters like the non-breaking space, the em space and the ideographic space all become one ordinary space. Zero-width joiners and variation selectors are the exception: those are checked against their neighbours and kept when they're doing real work inside an emoji sequence.

Examples: what goes in, what comes out

Every row below is what the Plain Text Converter actually returns, switches at their defaults.

What you pasteWhat you getWhat the report says
<p>Hello <b>world</b></p>Hello worldRemoved 4 formatting tags.
<style>.c{color:red}</style><p>Real text</p><script>alert(1)</script>Real textRemoved 6 formatting tags.
“Hello,” he said—fine…"Hello," he said--fine...Removed 4 smart quotes.
customer ID: A4471 (carrying a BOM, a soft hyphen and a zero-width non-joiner)customer ID: A4471Removed 3 hidden characters.
ab 👨‍👩‍👧 (zero-width space between the a and the b)ab 👨‍👩‍👧Removed 1 hidden character.
already plainalready plainNothing to clean — that text was already plain.

A heading and a list survive as structure, because line breaks are the most plain text can carry. Paste a heading followed by a two-item list and you get three lines — the heading, then each item on its own line — and Removed 8 formatting tags. A two-column, two-row table comes back as Name⇥Plan and Ada⇥Pro, tab-separated.

The four switches, and what each one actually changes:

SwitchDefaultExample
Straighten smart quotes and dashesOngit commit -m ‘fix’ → git commit -m 'fix'
Collapse extra spaces and blank linesOnone⎵⎵⎵⎵two → one⎵two
Join wrapped lines into paragraphsOfftwelve⏎percent → twelve percent
Strip non-ASCII charactersOffcafé naïve 😀 ok → caf nave ok

That last row is worth reading twice. Stripping non-ASCII deletes rather than transliterates: café becomes caf, not cafe. Leave it off unless the destination genuinely can't take anything above character 127.

What the tool won't do

Four honest limits, because finding them mid-task is worse than reading them now.

The report counts three things, not everything. It names hidden characters, formatting tags and smart quotes. Non-breaking spaces, em spaces, Windows line endings and collapsed whitespace are all fixed — silently. Paste a sentence whose only problem is a non-breaking space and the output is correct while the report still reads Nothing to clean — that text was already plain. The text changed; the counter just doesn't track that class.

If you suspect a non-breaking space and want proof rather than a guess, watch the character counts instead of the report. They sit under both panes — characters in on the left, characters out on the right. A drop with no report line means something in an uncounted class was fixed.

Angle brackets in prose are safe; real markup is not. A paste from a rendered page carries a formatted flavour on the clipboard, so it is markup by definition and gets stripped. Typed text switches into markup mode only on a signal prose doesn't produce: a closing tag, an attribute with an equals sign, an HTML comment, or a bare <br>, <hr>, <img> or <wbr>. An element name on its own isn't enough, because 63 HTML element names are ordinary English words — link, input, form, data, time, code, section — and a tool that treats meet at <time> in <section> 4 as markup deletes half the sentence. So #include <stdio.h>, #include <map>, if (a<b) { return 1; }, a<b and c>d and From: Daniel <[email protected]> all come back untouched, with the report confirming nothing was removed. <p>Hi</p> does not. The trade is deliberate: a fragment with no closing tag and no attribute anywhere, like <p>hello<b>world, is left alone rather than guessed at — and a real paste from a page never lands there, because it arrives with its formatting flavour attached. HTML to plain text is exactly what this does, and "plain" means the markup is gone rather than preserved. To turn markup into readable structure instead of into nothing, the HTML to Markdown converter is the better stop.

Joining wrapped lines doesn't repair hyphenation. A PDF that broke per-cent across two lines gives you per- cent after joining, not percent. Rejoining hyphenated words needs a dictionary and a guess, and a tool that guesses at your text silently is worse than one that leaves a seam you can see.

Straightening quotes is a trade. It's on by default because curly quotes are what break shell commands, CSV parsers and code samples. If you're moving prose between two places that both handle typography fine, turn it off and keep the curls.

Tips for getting clean text

Copy from the rendered page, not from "view source". This tool reads the formatted flavour of what's on your clipboard, so a bold word inside a link arrives with its markup intact and gets stripped properly, instead of arriving already half-flattened by the browser.

Work in one pass rather than several. Cleaning text by pasting it through three different pages is how you end up with a soft hyphen that survived all three, because each one fixed a different subset and none of them said so.

When something still won't match after a clean, check the ends of the string. Trailing whitespace per line is always removed and the whole text is trimmed, but a hidden character sitting outside what you selected never entered the tool in the first place. Select generously, then clean.

Use Copy rather than selecting the output by hand. Copy puts plain text on your clipboard and nothing else, so pasting into a rich editor won't drag styling along behind it — paste without formatting, in one step, from any app to any other. Download saves plain-text.txt straight out of the browser. No account either way.

Related text tools

If the only thing wrong with your text is spacing, the whitespace remover is the narrower tool for the job — it owns spaces, tabs and blank lines and nothing else. For text that came out of an email client with a line break every 72 characters, the line break removal tool handles that one problem directly.

After cleaning, the word counter tells you what you actually have, and the case converter fixes the shouty heading that came out of the document as capitals. If two cleaned versions still disagree, the text diff checker shows you where. Every one of them runs in the browser on the same terms as the Plain Text Converter: no account, no trial clock, nothing uploaded. That's the whole shape of the thing — one job per tool, and the tool is the whole product rather than the free sample at the front of a subscription.

Frequently asked questions

Why does the report say nothing was cleaned when my text obviously changed?

Because the report counts three classes — hidden characters, formatting tags, smart quotes — and some fixes fall outside all three. Non-breaking spaces, em spaces, ideographic spaces, Windows line endings and collapsed runs of whitespace are all corrected without being counted. The character counts under the two panes are the honest signal there: if characters out is lower than characters in and the report is quiet, something uncounted was fixed.

Does it work on text copied out of a PDF?

Yes, and that's one of the cases it's tuned for. Turn on "Join wrapped lines into paragraphs" — PDFs wrap at a fixed column, so without it every line ends mid-sentence. The paragraph breaks survive the join; only the single line breaks inside a paragraph become spaces. The one thing it won't fix is a word the PDF hyphenated across the break, which comes back as per- cent rather than percent.

Will this break my code snippets?

Straightening quotes helps code far more often than it hurts it — curly quotes are the single most common reason a pasted command fails. Angle brackets are safer than you'd expect: <T>, <stdio.h> and x<y aren't HTML signals, so a snippet carrying them comes back whole. What does get stripped is a genuine HTML example — <p>Hi</p> pasted into a tutorial you're cleaning is markup by every test there is, and nothing can tell markup you meant from markup you didn't. If your text quotes HTML on purpose, clean the prose around it and paste the example separately.

Does it work in languages other than English?

Yes. Accented letters, Cyrillic, Arabic, Hindi and CJK characters all pass through untouched by default — only the invisible control characters are removed. Arabic and Hebrew text keeps its letters and digits; what goes is the bidi control characters that reorder display without changing content, which are a known trick for disguising a filename. If you deliberately want everything above plain ASCII gone, the fourth switch does that, and it deletes rather than transliterates.

Can I keep the curly quotes and em dashes?

Turn off "Straighten smart quotes and dashes" and the typography is left exactly as it came in. It's on by default because the most common reason people arrive at a text cleaner is something downstream choking on a curly quote — but if you're moving prose between two places that both handle typography properly, there's no reason to flatten it.

How much text can I clean at once?

200,000 characters, about a 400-page book of prose. Past that the live cleanup can't keep up with typing, so it stops and asks you to split the text into sections. There's no daily cap and no limit on how many times you use it.

What does it cost, and where does my text go?

It's free, there's no account, and your text goes nowhere — the cleanup is JavaScript running in this tab, and the page keeps working with your network off after the first load. That's worth being specific about, because what people paste into a text cleaner is often a draft contract, a customer list or a block of source code, and plenty of sites that clean text online upload your file to a server to do a job your browser can already do. Microapp funds itself through membership rather than by charging for a cleanup, and 10% of every dollar of revenue goes to charity off the top, audited and published quarterly.