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.

runs locally on your browser. Your data never leaves your device.
0Characters
0Whitespace Chars
0Non-Whitespace Chars

Common Use Cases

Spot mixed tabs and spaces before they cause a Python IndentationError that looks perfectly aligned on screen
Check whether a file uses Windows-style \r\n or Unix-style \n line endings before it causes a giant, misleading git diff
Find a stray non-breaking space copied from a web page or Word document that's silently breaking a string comparison
Confirm trailing whitespace on lines before committing code that a linter or a strict reviewer would flag

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.

Frequently Asked Questions

What symbol does each type of whitespace turn into?
A space becomes a middle dot (·), a tab becomes an arrow (→), a newline becomes a pilcrow (¶) placed right before the actual line break, a carriage return becomes the dedicated control-picture character (␍), and anything else whitespace-shaped, like a non-breaking space or a form feed, becomes an open box (␣).
Does visualizing my text change or remove any of the original whitespace?
No. The visualized text is a display copy with symbols substituted in; your original text in the left-hand panel is never modified, and the underlying whitespace characters, spaces, tabs, newlines, carriage returns, and everything else, stay exactly as you typed or pasted them.
What counts as "other whitespace"?
Anything that JavaScript's whitespace matching treats as blank but isn't a plain space, tab, newline, or carriage return: a non-breaking space (U+00A0, common in text copied from Word or a web page), a form feed, a vertical tab, and various Unicode space separators used in some fonts and East Asian typography.
Why does a carriage return get its own symbol instead of being treated like a newline?
Because the two mean different things depending on the file's line-ending style. A Unix-style file uses a bare newline (\n) to end a line, while a Windows-style file uses a carriage return followed by a newline (\r\n). Showing them as separate symbols lets you tell at a glance which convention a piece of text is actually using, instead of both looking like the same generic line break.
Can I show only one type of whitespace and hide the rest?
Yes. Each of the five whitespace categories, spaces, tabs, newlines, carriage returns, and other whitespace, has its own toggle, and they work independently in any combination. Turning a category off doesn't delete anything, it just displays that whitespace as itself instead of its symbol.
Is my text uploaded, logged, or stored anywhere?
No. Every character is inspected and every symbol substituted with plain JavaScript running locally in your browser. Nothing you paste into this tool is ever sent to a server, which matters since the text people check for hidden whitespace is often source code, config files, or log output they don't want leaving their machine.