Line separators
LINE SEPARATOR (U+2028)
Unicode's own "new line here" character, distinct from the ASCII line feed. It ends a line without ending a paragraph.
- Codepoint
U+2028- Also written as
u2028\u2028
- Category
- Line separators
- Removed by default
- No
- Governing option
- Line endings
-n - Can be load-bearing
- No
Copy and paste U+2028
To copy and paste LINE SEPARATOR (U+2028), press the button: the character itself goes to your clipboard, and Ctrl+V (Cmd+V on a Mac) pastes it anywhere you can type.
Where it comes from
Shift+Enter in most word processors and page-layout tools, and from anything that exports from them. macOS text editors and InDesign are prolific sources.
Why it matters
It is a line break that most line-oriented software does not recognise. Files split into the wrong number of lines, CSV rows merge, and, famously, a raw U+2028 inside a JavaScript string literal used to be a syntax error, which broke JSON embedded in HTML.
Before and after
A line break your text editor may not count as one.
The character is shown as a labelled chip so you can see where it sits. In your text it draws nothing at all.
When it is legitimate
Inside a paragraph that genuinely needs a soft line break, in software that understands it. In plain text a line feed is safer and means the same thing to a reader.
How to remove it
Turn on Line endings (`-n`) and it is folded to a plain LF, along with CRLF, CR, NEL and U+2029.
Working in a file rather than a paste? The document report for .docx, .odt and .html finds it inside the file, together with hidden runs and tracked changes, without you having to open it. If the question is what the rest of the writing does rather than what this one character does, count the dashes and stock transitions and see where each habit sits, with no score and no claim about who wrote the text.
Is it an AI watermark?
Not a watermark
No. It comes from word processors and layout tools. Finding one tells you the text passed through a rich text editor.
No connection to machine-generated text. It comes from software, from a keyboard, or from a person.
Questions
Why did it break my JavaScript?
Before ES2019, U+2028 and U+2029 were not allowed unescaped in string literals, so JSON embedded directly in a script tag could fail to parse. Modern engines allow them; older ones and many tools still do not.
Why is it not folded by default?
Because changing line endings changes the file. That should be a decision you make, not one a cleaner makes for you.
Check your own text
Paste anything into the cleaner to see every hidden character it contains, with position, codepoint and what happens to each one. Nothing is uploaded.
Check your own textClean it in Chrome as you pasteClean it on your Mac with one keystrokeAll characters