DeepSeek zero-width space remover
What the DeepSeek zero-width space remover does
A zero-width space takes up a position in a string of text and shows nothing on screen. This app scans text copied out of DeepSeek for U+200B and the small set of related invisible characters that usually ride along with it, and removes every one, leaving every visible word untouched.
It's local. The scan and the removal both happen in your browser, so nothing you paste is uploaded, and there's no limit on length or on how often you come back.
That matters specifically for text you can't visually verify. If a hidden character passed through a server before coming back cleaned, you'd have no way to confirm from the result that nothing else happened to it along the way.
Workflow
How to remove zero-width spaces from DeepSeek text in three steps
There's nothing to preview beforehand, since the whole problem is invisible until you run it.
- Step 1
- Copy the reply from DeepSeek and paste it in.
- Step 2
- Press Remove. It runs instantly, on your own device.
- Step 3
- Copy the result. Every visible word is exactly as it was.
Why DeepSeek specifically
Why a bilingual tokeniser leaves characters at the seams
DeepSeek's tokeniser handles Chinese and English inside one shared vocabulary, and a model moving between two scripts that different can leave a small artefact right at the boundary: a hair space or non-breaking space where an English word meets a run of Chinese text, or a piece of full-width punctuation carried into an otherwise English sentence. None of it changes the meaning, and most of it is invisible while reading.
The reasoning models in the DeepSeek line add a second kind of seam: a visible chain-of-thought section can appear ahead of the final answer, and copying across that boundary, or copying a reply that includes both, can pick up an extra invisible character sitting right where the reasoning ends and the answer begins.
Scope
This app clears more than just the space named in the title
The zero-width space is the character most people mean by the name, but it's one of a family. This app also removes the zero-width joiner and non-joiner, the word joiner, a stray byte-order mark, the soft hyphen, and the non-breaking, narrow and hair spaces that look like an ordinary gap but aren't.
A joiner found inside a genuine emoji sequence is left alone, since stripping it would visually break the emoji apart, and space-like characters get swapped for a plain space rather than deleted, so word boundaries and line wrapping stay correct afterward.
Why it matters
What these hidden characters actually break
Inside a heading or a slug, one of these characters splits the string for anything comparing it exactly: search, a regex match, a string equality check. Two values that render identically fail to match, because one carries a byte the other doesn't.
In bilingual content specifically, a hidden character at a script boundary can silently break a translation memory match or a term-base lookup that should have succeeded, since the two strings only look identical.
Straight answer
Does finding one of these prove DeepSeek watermarked the text?
No. These are overwhelmingly incidental, produced by bilingual tokenisation and rendering, not planted on purpose to track the text later. Finding one tells you the text touched a tokeniser working across two scripts; it says nothing about who wrote it.
Real research into AI text watermarking works differently: it biases which words a model is statistically more likely to pick across a whole passage, a pattern in the writing, not a single hidden character. No character-scanning tool, this one included, can see or touch that.
Who it's for
Who uses a DeepSeek zero-width space remover, and when
Translators and bilingual content teams working with DeepSeek output run it through here before the text enters a translation memory or a term base, since a hidden character at a script boundary can silently break a match. Developers pulling a DeepSeek answer into a config file or a commit use it for the same reason, since a stray hidden character causes a failure with no visible cause.
Anyone saving a final answer separately from a DeepSeek reasoning trace uses it to clean whichever section they copied, since either can carry the same kind of boundary artefact.