Whitespace Visualizer
Reveal every space, tab, newline, carriage return, and other whitespace character hiding in your text without changing a single character of the original.
Common Use Cases
About Whitespace Visualizer
A blank-looking gap between two words could be a single space, a tab, a non-breaking space copied from a web page, or several of those stacked together, and a plain text box has no way to tell you which. That ambiguity causes real problems: a trailing space at the end of a line makes "hello" and "hello " compare as different strings, a stray tab mixed in with spaces produces Python's IndentationError even though the code looks perfectly aligned on screen, and a file saved with Windows-style carriage-return-plus-newline line endings shows every single line as changed in a git diff against a file saved with Unix-style newlines alone, even when the actual text content never changed.
This tool makes every whitespace character visible without altering the original text underneath it. Paste or type into the Original Text panel, and the Visualized Text panel on the right shows the exact same content with each whitespace character replaced by a distinct symbol: a middle dot for a plain space, an arrow for a tab, a pilcrow at the end of a line for a newline, the dedicated carriage-return control-picture character for a bare \r, and an open-box symbol for anything else whitespace-shaped, including non-breaking spaces, form feeds, vertical tabs, and other Unicode space separators. Five independent toggles let you show or hide each of those five categories on its own, so you can, for example, reveal only carriage returns while leaving ordinary spaces alone.
Because carriage returns and newlines get their own separate symbols and their own separate toggle, this tool is a fast way to tell whether a file uses Windows-style \r\n line endings, classic Mac-style \r alone, or Unix-style \n alone, something that is otherwise invisible until a version control tool or a cross-platform script starts behaving unexpectedly. The same separation makes it easy to spot a non-breaking space (Unicode U+00A0) sitting where a normal space should be, the kind of character that survives a copy-paste from Word or a web page and then silently breaks a string comparison, a CSV import, or a search-and-replace that was looking for an ordinary space.
Every symbol substitution happens with plain JavaScript directly in your browser the moment you type or paste, and the character and whitespace counts update the same way. Nothing you enter is ever uploaded, logged, or sent to a server, which matters here specifically because the text people need to inspect for hidden whitespace is often exactly the kind of thing that shouldn't leave their machine: a config file, a piece of source code, or a log line pulled from a production system.