Free control character filter

Filters out what you can't see, leaves what you can.

Free control character filter. Remove non-printing Unicode format characters, including bidirectional overrides, from pasted text without changing a word.

Paste your text to begin
0 chars / 0 words
bytes uploaded
0
usage limit
None
always
Free

Control character filter

What the control character filter does

A control character is a codepoint that does not represent a printable letter or symbol at all. It carries an instruction instead: join two characters, force text to flow right to left, mark a boundary that a line break shouldn't cross. None of that renders as a glyph, so none of it is visible, while all of it is still sitting in the text as real bytes.

This tool scans pasted text for that whole category and removes it, leaving every visible character, every letter, digit and punctuation mark, exactly where it was. It runs in your browser: nothing is uploaded, there's no account, and no limit on how much you filter.

How it works

How to filter control characters from text in three steps

There's nothing to see beforehand, since these characters are non-printing by definition.

Step 1
Paste text you suspect carries hidden formatting characters.
Step 2
Press Filter. It runs instantly, on your own device.
Step 3
Copy the result; every visible character is untouched.

Non-printing, defined

What 'non-printing' actually means

Every character in Unicode belongs to a category. Letters, digits and punctuation belong to categories that a font renders as a shape on screen. A separate category, generally labelled Format, contains characters with no shape at all: they exist purely to modify how neighbouring characters are treated, not to be seen themselves.

That's the category this tool targets: zero-width joiners and non-joiners, word joiners, soft hyphens and, most consequentially, the directional formatting characters that control whether text flows left to right or right to left.

The sharper risk

Directional override characters, and why they matter more

U+202D and U+202E, the left-to-right and right-to-left override characters, don't just fail to render. They actively change the display order of every character that follows them, until a matching pop character or the end of the text cancels the effect.

That's a real security concern, not just a formatting one: a right-to-left override placed inside a file name can make 'invoice_gpj.exe' display as 'invoice_exe.jpg', reversing the visible order of the extension while the actual file stays exactly what it was. This tool removes those override characters along with the rest of the format category.

Why it survives

Why these characters survive a copy and paste

A control character has no shape, so there's nothing on screen to notice or accidentally delete while editing. Copy and paste operations move the underlying text exactly as it exists, invisible characters included, and most editors give no visual indication that anything beyond the visible letters was carried along.

That's the whole reason this category of bug is hard to catch by eye: the file, the field, the message all look completely normal, right up until something downstream reads the bytes rather than the rendered page.

Why it matters

What control characters actually break

Log files and monitoring tools can render control characters as stray glyphs or line-noise, or worse, interpret one as a terminal escape sequence and change how subsequent output displays. A filename or URL carrying a directional override can display differently from what it actually is, which is a real vector for disguising a malicious link or attachment.

In code, a control character sitting inside a string literal or an identifier produces an error with a cause that's invisible in the editor. In structured data, one embedded in a field can break strict parsing outright.

Who uses it

Who uses a control character filter, and when

Security-conscious teams reviewing file names, URLs or pasted text for directional-override tricks before opening or forwarding anything suspicious. Developers cleaning text pulled from an external source before it reaches a log pipeline, a terminal or a parser that could misread a stray control character as an instruction.

Anyone maintaining a system that stores or displays user-submitted text uses it to strip formatting characters that could otherwise scramble how that text displays to someone else.

FAQ

Control character filter FAQ

Everything below is answered in full, nothing to click open.

How do I filter control characters out of text?

Paste it into the box above and press Filter. Non-printing format characters are removed, and the result appears on the right.

Is the control character filter free?

Yes, entirely free. No signup, no trial and no usage limit, since it runs in your browser.

Is my text uploaded anywhere?

No. Filtering happens on your own machine in JavaScript. Nothing is sent over the network.

What is a control character?

A codepoint that carries a formatting instruction rather than representing a printable letter or symbol. It renders no glyph but is a real character in the text.

Does this remove ASCII control codes like tab and newline?

No, it targets the invisible Unicode format characters, zero-width joiners, word joiners, soft hyphens and directional overrides, not tabs or line breaks, which have their own visible effect on layout.

What are directional override characters?

U+202D and U+202E, which force the characters after them to display in reversed order until cancelled. They're used legitimately in right-to-left languages and can be misused to disguise a file name.

Can a hidden character disguise a file name?

Yes. A right-to-left override inserted into a file name can make its visible extension read differently from what the file actually is, which is a known trick for disguising a malicious file.

Why do these characters survive copy and paste?

They have no shape, so there's nothing to notice on screen. A copy carries the underlying text exactly as it is, invisible characters included.

Can control characters break a log file or terminal?

Yes. Some terminals interpret certain control characters as escape sequences, which can change how subsequent output is displayed.

Does it change any visible letters?

No. Only non-printing format characters are removed. Every visible letter, digit and punctuation mark comes back exactly as it was.

Can these characters break JSON or CSV parsing?

Yes, a control character embedded in a field or string value can cause a strict parser to fail or misread the data.

Does it affect emoji?

No, emoji and the zero-width joiners that build multi-part emoji sequences are recognised and left alone.

Does it work on Arabic and Hebrew text?

The letters themselves are untouched. Legitimate directional marks used in right-to-left scripts are a separate case from stray override characters and are handled carefully.

Does it work on phones?

Yes, it works the same in any modern mobile browser.

Is this the same as the zero-width space remover?

They overlap. This filter covers the wider set of non-printing format characters, including directional overrides; the zero-width tool is focused specifically on zero-width and joiner characters.

Can I use it to check a suspicious link or filename?

Yes, paste the text in and inspect what's flagged before deciding whether to trust it.

Is there a batch mode or an API?

Not yet. For several files, paste, filter and copy each one for now.

Is it safe for confidential text?

Yes, nothing is transmitted or retained, so it's fine for data you haven't shared anywhere.

Will it fix a file that's already been renamed with an override trick?

Filtering the text of a name removes the hidden character, but you should verify the actual file content separately before trusting what the name now shows.

Why can't I see what's being removed before I run it?

Because these characters are non-printing by definition. This tool reports what it found once you filter, since there's nothing to preview visually beforehand.

Filter hidden formatting in about four seconds.

Paste, filter, copy. Nothing to install, nothing leaving your browser.

Filter my text