This page finds U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR and converts them to real newlines. The sample below contains a string that is secretly two lines. Everything runs in your browser — nothing is uploaded.
Unicode's "unambiguous newline" — a line break that isn't \n or \r\n. Its sibling U+2029 is the paragraph separator. Almost nothing displays them, almost nothing types them, and a surprising number of tools choke on them.
Adobe InDesign's "forced line break" (Shift+Enter) exports as U+2028, some Apple apps and old text editors emit it, and it survives inside JSON string values because JSON has always allowed it raw. Copy text out of a layout tool or an API response and it comes along, invisibly.
The famous one: before ES2019, a raw U+2028 inside a JavaScript string literal was a line terminator, so JSON embedded in a <script> tag threw SyntaxError: Invalid or unexpected token — valid JSON, invalid JavaScript. Today it still breaks line-based tooling: split("\n") treats it as one line, JS regex . refuses to match across it, grep and log shippers disagree with editors about how many lines a file has, and CSV "one record per line" parsers silently merge records.
VS Code: regex-search [\u2028\u2029]. Command line: grep -rP '[\x{2028}\x{2029}]' . — or paste the text above: each one is flagged (LS/PS) and converted to a plain \n in the cleaned output, so every tool agrees on the line count again.
Guides for the common cleanup jobs — what the source puts into your text, exactly what it breaks, and the tool preloaded with a demonstration:
AI-generated text · Text copied from Word / Google Docs · Text copied from a PDF · Pasted code that won’t run · CSV & spreadsheet data · Invisible watermarks · Many files at once (batch)
Dedicated pages for the usual suspects — what each one is, where it sneaks in from, the exact errors it causes, and how to find it in your editor:
Zero-width space (U+200B) · Non-breaking space (U+00A0) · Byte order mark (BOM) (U+FEFF) · Soft hyphen (U+00AD) · Smart quotes · Em dash (U+2014) · Narrow no-break space (U+202F) · Ideographic space (U+3000) · Zero-width joiner (U+200D) · Zero-width non-joiner (U+200C) · Word joiner (U+2060) · Right-to-left override (U+202E) · Left-to-right mark (U+200E) · Line separator (U+2028) · Variation selector-16 (U+FE0F) · Object replacement character (U+FFFC) · Hangul filler (U+3164) · Braille pattern blank (U+2800) · Ligatures · Minus sign (U+2212)
Страницы на русском — те же инструменты с переведёнными правилами и примерами под задачу:
Невидимые символы в тексте · Убрать невидимые символы · Почистить текст нейросети · Неразрывные пробелы в числах · Текст из Word · Код не запускается