Ready, runs in your browser
0 chars · 0 words
bytes leaving your device
0
format characters checked for
14
no signup, no run limit
Free

Control character filter

What the control character filter does

A control character doesn't represent a letter or a symbol at all. It's an instruction embedded in the text: join two characters, force a chunk of text to read right to left, mark a spot a line break shouldn't cross. None of that renders as a shape you can see, and all of it is still real bytes sitting in the string.

This app scans for the whole category and strips it, without moving or altering a single visible character. It's local: filtering runs entirely in your browser, nothing is uploaded, and there's no limit on how much text you check or how often.

Given what these characters can be used for, running this locally isn't just a privacy nicety. You're often pasting in exactly the kind of text you don't yet trust, and sending it somewhere else first would defeat the point.

Workflow

How to filter control characters in three steps

Nothing to preview first, since these characters are non-printing by definition.

Step 1
Paste in text you suspect carries hidden formatting characters.
Step 2
Press Filter. It runs instantly, on your device.
Step 3
Copy the result; visible characters are exactly where they were.

What this actually is

What 'non-printing' means, in practice

Unicode groups every character into a category. Letters, digits and punctuation fall into categories a font actually draws as a shape. A separate category, generally called Format, has no shape assigned to it at all: those characters exist purely to modify how the text around them behaves, never to be seen themselves.

That's the category this app filters: zero-width joiners and non-joiners, word joiners, soft hyphens, and the directional formatting characters that flip text between left-to-right and right-to-left flow.

The one worth knowing

Directional overrides: more than a formatting quirk

U+202D and U+202E don't just fail to render. They actively reverse the display order of every character that follows, right up until a matching close character or the end of the text.

That's a genuine security issue, not just a display one: a right-to-left override embedded in a file name can make something like 'invoice_gpj.exe' visually read as 'invoice_exe.jpg', flipping the apparent file extension while changing nothing about what the file actually is. This app strips those override characters along with the rest of the format category.

Why it survives a paste

Why non-printing characters make it through copy and paste unnoticed

A control character has no shape, so there's nothing on screen to accidentally catch or delete while editing. Copying text moves the underlying string exactly as it is, invisible characters included, and most editors give no visual sign that anything beyond the visible letters came along for the ride.

That's the whole reason this class of problem is so hard to spot by eye: a message, a file name, a field all look entirely normal, right up until something downstream reads the raw bytes instead of the rendered display.

Why it matters

What control characters actually break

Logging pipelines and terminals can render control characters as garbage output, or in some cases interpret one as an escape sequence and change how subsequent output is displayed. A file name or URL carrying a directional override can visually present as something it isn't, a real technique for disguising a malicious attachment or link.

In code, a control character inside a string or identifier throws an error with a cause the editor never shows you. In structured data, one embedded in a field can break a strict parser outright.

Who it's for

Who uses a control character filter, and when

Security-minded users check suspicious file names, URLs or pasted messages here for directional-override tricks before opening or forwarding anything. Developers filter text from external sources before it reaches a log pipeline, a terminal or a parser that could misread a stray control character as an instruction rather than data.

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

FAQ

Everything answered. Nothing to click open.

How do I filter control characters from 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. No account, no paste limit, no length cap, since it runs on your own device.

Is my text uploaded anywhere?

No. Filtering happens entirely in your browser. Nothing is transmitted or logged.

What counts as a control character here?

A codepoint carrying a formatting instruction rather than representing a visible letter or symbol: joiners, word joiners, soft hyphens and directional overrides among them.

Does this strip tabs and line breaks?

No, it targets invisible Unicode format characters specifically, not tabs or newlines, which have their own visible effect on layout.

What is a directional override character?

U+202D or U+202E, which force everything after them to display in reversed order until cancelled. Legitimate in right-to-left languages, and misusable to disguise a file name.

Can a hidden character fake a file extension?

Yes. A right-to-left override placed inside a file name can make its visible extension read differently from the actual file, a known disguise technique.

Why do these characters survive a normal copy and paste?

They have no visible shape, so nothing on screen prompts a person to notice or remove them. A copy carries the underlying bytes exactly as they are.

Can these characters mess up a terminal or a log?

Yes, some terminals read certain control characters as escape sequences and change how later output is displayed.

Does filtering change any visible words?

No, only non-printing characters are removed. Every visible letter, digit and punctuation mark is returned exactly as it was.

Can control characters break JSON or CSV parsing?

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

Does it touch emoji?

No, emoji and the joiners that build multi-part emoji sequences are recognised and left in place.

Is it safe to use on Arabic or Hebrew text?

The letters are untouched. Legitimate directional marks in right-to-left scripts are treated differently from a stray override character.

Does it work on phones?

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

How's this different from the zero-width space remover?

They overlap. This filter covers the broader set of non-printing format characters, directional overrides included; the zero-width tool focuses specifically on zero-width and joiner characters.

Can I use it to check a suspicious file name or link?

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

Is there a batch mode or an API?

Not yet. Right now it's paste, filter and copy per file.

Is it safe for confidential text?

Yes, nothing is transmitted or retained by this tool.

Does this verify the actual file content after a rename trick?

It removes the hidden character from the text of the name, but you should verify the file's real content separately before trusting what the name now shows.

Why can't I see the problem before I run the filter?

Because these characters are non-printing by definition. The count and detail show up once you filter, since there's nothing to preview visually first.