Logs are supposed to be plain text, but the world does not always cooperate. Binary payloads leak into text streams, terminal captures drag in escape and control bytes, Windows files carry carriage returns, and sloppy writers emit form feeds, backspaces, and NULs that look like nothing on screen and break everything downstream. Control Character Remover cleans all of that up in one click, entirely in your browser.
Every ASCII control byte from NUL (0x00) through US (0x1F) is handled by default, minus whichever of tab, newline, and carriage return you choose to keep, plus DEL (0x7F) and the C1 range (0x80 — 0x9F) when you switch those options on. The tool scans the input one character at a time and removes or neutralizes those bytes while preserving the whitespace that actually structures your log: tabs, newlines, and carriage returns stay by default and each can be kept or stripped independently with its own checkbox, so you can, for example, keep newlines but strip stray carriage returns to normalize a Windows-authored file to Unix line endings. What you get back is a log a parser can read, a shipper can accept, and a database can store without choking on an unexpected byte.
When you need to know exactly what was cleaned, switch on caret notation and every removed byte is replaced with a printable marker instead of silently vanishing. C0 controls and DEL get standard caret notation — ^A for 0x01, ^M for a stray carriage return, ^[ for a lone ESC byte, ^? for DEL — the same convention terminals and editors have used for decades. C1 control bytes (0x80—0x9F) do not have a standard caret form, so instead of collapsing every one of them into the same ambiguous symbol, each is shown as its own hex escape like \x85, so two different C1 bytes never look identical in the output. The summary cards report the exact number of control bytes removed and the byte size before and after (measured in real UTF-8 bytes, not character count), confirming the log is really clean — or, in caret mode, showing you honestly that the output grew because every removed byte was replaced by a two-to-four character marker.