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.