Grok zero-width space remover
What the Grok 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 Grok on X 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 Grok text in three steps
There's nothing to preview beforehand, since the whole problem is invisible until you run it.
- Step 1
- Copy the answer from Grok on X or the standalone app, 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 Grok specifically
Why X's rendering slips a hidden character around numbers
X's display logic commonly stops a figure and its unit from breaking across two lines by inserting a non-breaking space between them, a measurement, a price, a percentage. It's a platform-level behaviour, not something Grok's own output does deliberately, but Grok's replies pass through the same rendering as an ordinary post, so they pick it up the same way.
The same platform's automatic linkification of handles, tickers and hashtags can leave a stray invisible character right at the edge of a link boundary too, separate from the visible anchor markup, in a copy taken straight from the timeline.
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, the same family the non-breaking space around a number belongs to. 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.
A figure pulled from a Grok answer with a non-breaking space instead of an ordinary one can fail a numeric parse or a spreadsheet formula expecting plain whitespace, since the two look the same but aren't.
Straight answer
Does finding one of these prove Grok watermarked the text?
No. These are overwhelmingly incidental, produced by how X renders numbers, units and links across the whole platform, not planted on purpose to track the text later. Finding one tells you the text went through X's rendering layer; 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 Grok zero-width space remover, and when
Analysts pulling a figure out of a Grok answer into a spreadsheet use this first, since a non-breaking space next to a number can silently break a formula. Publishing and SEO teams use it when a heading pulled from Grok stops matching its slug for no apparent reason.
Anyone doing programmatic comparison, dedup scripts, data validation, database imports, treats this as a standard first pass on Grok-sourced text before it enters the pipeline.