Convertidor a Texto Plano

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.

Pega lo que copiaste. Obtén texto plano limpio. La limpieza se hace en tu navegador: tu texto nunca sale de él.

Built by Bob Article by Lace QA by Ben Shipped

Cómo usar

  1. 1

    Pega en el panel izquierdo. Si copiaste de una página renderizada y no del código fuente, esta herramienta lee la versión con formato de lo que hay en tu portapapeles, no la aplanada; así, una palabra en negrita dentro de un enlace llega con su marcado intacto y se limpia bien, en lugar de llegar ya medio destrozada.

  2. 2

    Lee el texto limpio a la derecha. No hay botón Convertir. El resultado se recalcula con cada tecla, cada pegado y cada interruptor, porque una página que te obliga a pulsar Convertir y luego Descargar te cobra dos clics por algo que tu navegador hace en menos de un milisegundo.

  3. 3

    Revisa el informe bajo el resultado. Cuenta lo que se eliminó por tipo: caracteres ocultos, etiquetas de formato, comillas tipográficas. Esa línea es lo que la mayoría de los limpiadores omiten, y es lo que te dice si la basura invisible que sospechabas estaba de verdad ahí.

  4. 4

    Desactiva «Enderezar comillas tipográficas y rayas» si quieres conservar la tipografía. Está activado por defecto porque las comillas curvas son lo que rompe comandos de terminal, lectores de CSV y ejemplos de código. Desactívalo cuando muevas prosa entre dos sitios que las manejan bien.

  5. 5

    Activa «Unir líneas cortadas en párrafos» para texto que salió de un PDF o de un cliente de correo antiguo. Esos cortan las líneas en una columna fija, así que cada línea termina a mitad de frase. Unirlas recompone el párrafo y deja intactas las líneas en blanco entre párrafos.

  6. 6

    Activa «Quitar caracteres no ASCII» solo cuando el destino de verdad no los admita: una columna de base de datos antigua, una exportación de ancho fijo, un sistema que estropea todo lo que pasa de 127. Elimina las letras acentuadas y los emojis en lugar de transliterarlos, así que café se convierte en caf.

  7. 7

    Copia o descarga. Copiar pone en tu portapapeles texto plano y nada más, así que pegar en un editor enriquecido no arrastra estilos detrás. Descargar guarda plain-text.txt directamente desde tu navegador. Sin cuenta, en ningún caso.

Preguntas frecuentes

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.