Whitespace Visualizer

Reveal invisible whitespace: tabs, spaces, CRLF/LF, BOM, trailing whitespace.

Open tool

Overview

Reveal every invisible whitespace character in your text. Spaces show as dots, tabs show as arrows, line endings show as ↵ with a label indicating CRLF or LF, byte-order marks (BOM) appear at the top of the file, and trailing whitespace lights up at the end of each line.

Developers debugging "why does my build fail on Windows", data engineers tracking down CSV parsing errors caused by hidden tabs, writers finding stray spaces before line breaks, and anyone troubleshooting why two files that look identical actually aren't all reach for it. Invisible whitespace is responsible for an outsized share of confusing bugs.

How it works

The tool walks each character of your input. Whitespace characters are replaced (visually) with symbols: middle dot (·) for space, arrow (→) for tab, return arrow (↵) for line endings, and pilcrow or block character for trailing-whitespace markers. The detection covers more than just ASCII — no-break space, zero-width space, em space, and ideographic space all get their own labels. A summary panel lists totals per category.

Examples

Input:    "Hello   World\t!\r\n"
Display:  "Hello···World→!↵(CRLF)"
Input (with trailing space):    "line with trailing "
Display:                        "line with trailing·"   (highlighted)
Input:    "start of file"
Display:  "[BOM]start of file"

FAQ

Why does it matter whether line endings are CRLF or LF?

Windows tools default to CRLF, Unix/Linux tools to LF. Some scripts, build pipelines, and configuration parsers behave differently on inconsistent line endings. Spotting the mismatch is the first step in fixing it.

What's a BOM?

A byte-order mark (U+FEFF) is a special character at the start of a file that hints at the encoding. It's invisible but real, and some tools choke on it when present unexpectedly.

Are zero-width characters whitespace?

They behave like whitespace in some contexts (they're invisible and can separate tokens) but Unicode classifies them separately. The visualizer flags them too because they're a common source of bugs.

Try Whitespace Visualizer

An unhandled error has occurred. Reload ×