Guide
Making whitespace and hidden characters visible
Some of the most frustrating bugs live in characters you cannot see. A spreadsheet lookup fails because one value has a non-breaking space. A Python file refuses to run because of mixed tabs and spaces. A login fails because a username copied from a chat contains a zero-width space. A script breaks on Linux because of Windows line endings. This tool makes every kind of whitespace and hidden character visible, counts them and cleans them up.
The visible view
Your text is redrawn with a marker for every whitespace character. Ordinary spaces become faint dots and tabs become arrows, so indentation is easy to read. Unusual spaces — no-break, narrow no-break, thin, figure, em and ideographic spaces — are highlighted with ⍽, and invisible format characters such as zero-width spaces, joiners, byte order marks, soft hyphens and direction marks with ¦. Hover a highlight to see its name. Spaces and tabs at the end of a line are shaded red.
Line endings
Every line ending is shown as ␊ for LF (Linux and macOS), ␍␊ for CRLF (Windows) or ␍ for CR (classic Mac OS), and counted in the summary. If a file mixes them, a warning appears. Browsers convert line breaks to LF when you paste into a text box, so pasted text always shows LF; open the file with the Open button to see its true line endings.
The report
The summary counts lines, each type of line ending, lines with trailing whitespace and lines whose indentation mixes tabs and spaces. A table lists every unusual character found, by name, with its count — the quickest way to discover that a document is full of non-breaking spaces from Word or narrow no-break spaces from French typography.
Cleaning up
Choose what to fix: remove trailing spaces and tabs, turn unusual spaces into ordinary ones, delete zero-width characters and the byte order mark, convert tabs into a chosen number of spaces, and make all line endings LF or CRLF. The cleaned text appears below, ready to copy or download as a file.
When to keep them
Not every special character is a mistake. Non-breaking spaces keep “10 kg” together and are required before some punctuation in French; zero-width joiners hold together emoji and some scripts. Clean deliberately, and keep a copy of the original.
A worked example
The sample contains a non-breaking space in “Name: Ann”, a double space between “Ann” and “Lee” followed by a trailing tab, a zero-width space inside the email address followed by three trailing spaces and a CRLF line ending, and lines indented with a tab and with spaces. In the view, each appears as its marker; the report counts them; and the default clean-up removes the trailing spaces and the zero-width space and turns the no-break space into a normal one, leaving “[email protected]” clean enough to match.
Preventing hidden characters
Paste into plain-text fields with your editor’s “paste as plain text” option, set code editors to show whitespace and to trim trailing spaces on save, and agree on tabs or spaces in a team style guide. Checking imported data here before loading it into a system saves hours of debugging later.
Related tools
Convert line endings of whole files with the Line Ending Converter, copy blank characters or check names with Invisible Character, clean pasted text with the Text Cleaner, or compare two versions with the Diff Checker.
Checked against the current version of the Whitespace & Hidden Character Visualizer on .

