Joiner Padding
Invisible characters between every letter
- padded_text
Joiner Padding is the smallest, most honest node in silveroxides' text-edit family: it takes your text and inserts the Unicode word joiner character (U+2060) between every adjacent character, plus one at each end. That's it. The output looks identical to the input - U+2060 is zero-width - but no two letters are ever adjacent in the byte stream anymore.
How it works
One regex pass over the text. For every pair of neighboring non-joiner characters, the source inserts a joiner between them, then wraps the whole string with one at the start and end. So "cat" becomes U+2060 + c + U+2060 + a + U+2060 + t + U+2060. A word filter searching for the literal string "cat" will never find it, because there isn't a "cat" in the output anymore - there's c [invisible] a [invisible] t.
The node takes one multiline text input and outputs padded_text. Nothing else to configure.
Why it exists
Same family as the pack's Frakturpad: defeat naive prompt-side text filters while keeping the text perfectly readable to humans and to models that render text. Where Frakturpad changes the letters (bold fraktur), Joiner Padding changes only the spacing - which makes it the gentler option. It's also useful as a general "make this string survive string-matching" tool, e.g. when a downstream tool re-splits or re-joins text and you want to stop it from gluing your tokens back together.
The honest caveats
Two things to keep in mind. First, the same word-joiner character that hides the words is exactly what some unicode-normalizing layers strip - copy-paste through certain editors, or an API that runs NFC normalization, can silently remove the padding and leave you with plain text again. Second, this is a filter bypass, and the filters it defeats are the cheap string-matching kind. Anything that decodes unicode before matching will still see your text.
If you want to undo the padding, note that the pack's UnFrakturPad also strips joiners (the fraktur conversion is a no-op on plain letters), so you don't need a separate "unjoiner."
Install
ComfyUI Manager → search ComfyUI_SamplingUtils, or:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI_SamplingUtils
then restart ComfyUI. The pack's README declares it DEPRECATED in favor of ComfyUI-UtilsCollection, and the actual requirements.txt (kornia, scipy, pilgram, opencv-python, unifiedefficientloader) is heavier than the README's list - but for a pure-string node like this, nothing heavy ever runs.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| padded_text | STRING | — |