Invisible Character Detector
Find zero-width, control, variation, private-use and spacing characters.
Remove C0, DELETE and C1 control characters while optionally preserving tabs and line breaks. Inspect every removed code point before copying the cleaned text.
Remove deletes selected controls, space replacement inserts U+0020 SPACE, and visible markers show the code point and Unicode name for review.
The original input is preserved. Character position is one-based and counts Unicode code points.
| Position | Code point | Unicode name | Group | Action | Replacement |
|---|
This control character remover scans text by Unicode code point, removes selected C0 controls, removes U+007F DELETE, and removes selected C1 controls. It preserves tabs and line breaks by default, can normalize line endings, and can replace removed controls with spaces or visible markers instead of deleting them. Printable Unicode is preserved exactly, and every control-character action is shown in the log below. Cleaning runs locally in the browser.
Rendered input (contains a real BELL and a real TAB):
Hello world
Keep this line
Escaped representation:
Hello\u0007 world\nKeep\tthis line
Expected cleaned output with defaults:
Hello world
Keep this line
Expected summary with defaults: characters removed 1, C0 controls removed 1, tabs preserved 1, line breaks preserved 1. The removed code point is U+0007 BELL.
C0 controls occupy U+0000 through U+001F. These characters originated in ASCII and terminal or control protocols. Some are common in everyday text, especially U+0009 TAB, U+000A LINE FEED and U+000D CARRIAGE RETURN. Others, such as U+0000 NULL, U+0007 BELL, U+0008 BACKSPACE and U+001B ESCAPE, can cause problems in text processing, logs or file formats. This tool preserves tabs and line breaks by default while removing other selected C0 controls.
C1 controls occupy U+0080 through U+009F. They are control codes rather than ordinary printable text. Some, such as U+0085 NEXT LINE and U+009B CONTROL SEQUENCE INTRODUCER, may appear because of legacy encodings or damaged text. Removing them can help when cleaning imported or copied data. Not every code point in this range is visually distinguishable, so review is still recommended.
U+0009 TAB may carry useful layout information, and U+000A LINE FEED represents a line break. U+000D CARRIAGE RETURN may be part of a CRLF pair or appear alone. This tool preserves tabs and line breaks by default. Optional line-ending normalization converts CRLF and lone CR to LF as a single logical change rather than counting the CR and LF separately. Removing line breaks can merge content and should be a deliberate choice.
C0, DELETE and C1 are control-character ranges. Zero-width and bidirectional format characters, such as U+200B ZERO WIDTH SPACE, U+200C ZERO WIDTH NON-JOINER, U+200D ZERO WIDTH JOINER, U+2060 WORD JOINER and U+00AD SOFT HYPHEN, are Unicode format characters instead, and they require different review and cleanup rules. This tool does not remove format characters by default. To inspect zero-width and formatting characters, use the Invisible Character Detector. For broader cleanup, use the Unicode Text Cleaner.
Remove mode deletes selected control characters. Space mode preserves visual separation without showing the control character. Visible-marker mode displays the code point and Unicode name, such as ⟦U+0007 BELL⟧, for debugging. Marker output is diagnostic and may not be suitable as final cleaned text. The original input is never changed by any mode.
Cleaning runs with JavaScript directly in your browser. Your pasted text is not submitted to UnicodeNow servers.
A control character is a Unicode code point that represents a control function rather than a printable symbol, such as NULL, BELL, ESCAPE or DELETE. This tool targets the C0, DELETE and C1 control ranges.
By default it removes C0 controls (U+0000–U+001F) and U+007F DELETE and C1 controls (U+0080–U+009F), while preserving tabs and line breaks.
C0 controls occupy U+0000 through U+001F. They come from ASCII and terminal protocols. TAB, LINE FEED and CARRIAGE RETURN are commonly used; others such as NULL, BELL and ESCAPE can cause text-processing problems.
C1 controls occupy U+0080 through U+009F. They are control codes rather than printable text and often appear because of legacy encodings or damaged text.
Not by default. U+0009 TAB is preserved when "Preserve tabs" is enabled, even though TAB falls inside the C0 range.
Yes by default. U+000A LINE FEED is preserved when "Preserve line breaks" is enabled. CRLF and lone CR can be normalized to LF first.
DELETE is a single control character outside the C0 and C1 ranges, historically used to mark a character for deletion on punched tape. It is removed by default and can be preserved separately.
No. Zero-width spaces, joiners and similar characters are Unicode format characters (general category Cf), not C0/C1 controls, and this tool does not remove them by default. Use the Invisible Character Detector and Remover for those.
Yes. Space replacement mode replaces each selected control character with U+0020 SPACE instead of deleting it.
Visible-marker mode replaces each selected control character with a printable diagnostic token showing its code point and Unicode name, such as ⟦U+0007 BELL⟧. It is meant for review, not as final cleaned text.
No. Cleaning runs with JavaScript directly in your browser; your pasted text is not submitted to UnicodeNow servers.
To inspect zero-width and formatting characters, use the Invisible Character Detector. For broader cleanup, use the Unicode Text Cleaner. For copied PDF text, use Clean Copied PDF Text.
Find zero-width, control, variation, private-use and spacing characters.
Remove hidden Unicode controls and zero-width characters from text.
Normalize, trim and clean problematic Unicode text safely.
Normalize tabs, special spaces, duplicate spaces and line endings.
Repair common spacing, hyphenation and line-break issues from copied PDF text.