Remove Word Joiners
Strip invisible Unicode joiner characters out of your text
- unjoined_text
There's an invisible character called the word joiner (U+2060), and some text generators love sprinkling it between every word. You can't see it, but it can break tokenizers, mess with string matching, and turn a clean prompt into a subtle mess. UC_UnWordJoiner removes them all from a string in one pass. It's the cleanup half of the pack's UC_WordJoiner, and it exists because "invisible" problems are the worst kind.
What it is
A one-input, one-output text cleaner. Feed it text, get back unjoined_text with every U+2060 word-joiner character stripped out. That's the entire mechanism - a str.replace over the joiner - and it's exactly as reliable as that sounds.
When you'd actually use this
The word joiner is a zero-width character used by typesetting systems to stop line breaks in the middle of a word. The problem is it leaks into text you don't control: some LLM/VLM outputs emit it between words, certain web-copied text carries it, and if a UC_WordJoiner-produced string ever ends up where you didn't want joined words, this is the reverse switch.
Where it genuinely matters: prompt pipelines. A tokenizer sees U+2060 as a token boundary you didn't intend, which can silently change how an LLM encoder parses your prompt. Before you chase a weird prompt-adherence bug for an hour, run your text through this node and see if the invisible characters were the cause.
The input and output
- text - the string to clean (multiline).
- Output: unjoined_text - the cleaned string.
Nothing else to configure. No models, no GPU, no settings.
Installing it
Part of ComfyUI-UtilsCollection:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
Restart ComfyUI (or use Manager, search "ComfyUI-UtilsCollection"). No dependencies beyond the pack's minimal ones, and it needs a current ComfyUI because the pack targets the modern Core node API.
Common issues
The scope is narrow on purpose: this only strips the word joiner (U+2060), not every zero-width character out there. If your text is full of zero-width spaces (U+200B) or other invisible formatting, those pass through untouched - grab a dedicated cleanup node for those. And because the fix is invisible by nature, verify with a preview or a character-count node that the output is actually what you expect; that's the only way to see the before/after of a character you can't see.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| unjoined_text | STRING | — |