Nodes/ComfyUI_Element_easy/Random Chars (Append)
ComfyUI Node

Random Chars (Append)

A very honest hack for prompt variation

By supElement·Created 9 months ago·Updated about 11 hours ago· 10
Random Chars (Append)
    • final_text
    • char_count
    character_pool★☆✡✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋✢✣✤✥꙳ᕯ⁂⁎⁑▲▼◀▶◣◢◥◤△▽◁▷⊿∇▴▾◂▸▵▿▹◃●❍○◎⊙◌◯◍◐◑◒◓◔◕◖◗⊕⊖⊗⊘⊚⊛⊜⊝■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▓▒░◆◇◈◊❖⟡⎔←↑→↓↔↕↖↗↘↙➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➫➬➭➮➯➱➲➳➴➵➶➷➸➹➺➻➼➽➾❤❥❣♡💘💓💔💖💗💙💚💛💜🖤❦❧☙⚘⚜✓✔✕✖✗✘✝✞✟✠✚✜✛☀☁☂☃☄☾☽☼♩♪♫♬♭♮♯♠♣♥♦♔♕♖♗♘♙♚♛♜♝♞♟✂✎✐✈✉☎☏⌛⏳⌚⚛⚙⚓⚖⚡⚠「」『』〖〗【】〔〕︵︶︷︸︹︺︻︼︽︾⌞⌟⌜⌝⌊⌋⌈⌉
    max_count10
    link_text
    locationend
    seed0
    text_A
    text_B
    text_C
    text_D

    Random Chars (Append) appends random "meaningless" special characters to your prompt, and here's the honest part: the author's own README says they're not sure it works. The idea is that models like qwen_image and Z-Image produce only small variation in composition across seeds, so injecting invisible-to-the-eye but token-visible junk characters might shake up the generation enough to break out of the same repeated layouts. The author calls the characters "invalid" and immediately adds "invalid is relative." That level of self-awareness is rare in node packs, and it should set your expectations.

    How it works

    You give it a character_pool - the giant string of special symbols and dingbats that ships as the default - plus a max_count (default 10) for how many characters to add, and a seed so the selection is reproducible. Then location decides where the junk goes:

    • end - append the characters at the very end of the text.
    • before - prepend them at the start.
    • insert - spread the characters evenly through the text, inserting after punctuation marks, distributed from the back forward. This is the most "invisible" mode, because the junk is scattered through the prompt rather than dumped at one end.

    The main text input is link_text, and there are four optional text inputs (text_A through text_D) you can wire in if you're combining multiple prompt parts. Outputs are final_text (the assembled string) and char_count (how many characters were added) - the count is handy if you're monitoring how much junk is going in.

    The honest verdict

    For prompts you care about, this is a coin flip, and the author says so. It's a cheap source of variety when a model is stuck in a composition rut, and because the inserted characters are mostly ignored by the model's semantics, it shouldn't break your prompt's intent. But "shouldn't" is doing a lot of work. The safest use is for batch exploration - generate a batch of variations with different seeds and pick the winners - rather than for anything where prompt fidelity matters. If you want real composition variety, the better long-term answer is a model that isn't composition-locked to begin with.

    Installing it

    It's part of supElement/ComfyUI_Element_easy:

    cd ComfyUI/custom_nodes
    git clone https://github.com/supElement/ComfyUI_Element_easy.git
    

    Restart ComfyUI, or install via ComfyUI Manager by searching ComfyUI_Element_easy.

    Gotchas

    Two practical ones. First, insert mode works by distributing characters after punctuation - so a prompt with no punctuation gets a much more visible result than one full of commas and periods. Second, some text encoders tokenize weird Unicode as multiple tokens or just drop it; if your sampler is producing odd results or your character_pool characters vanish entirely, that's the tokenizer, not the node. Keep max_count modest (5–10) - the goal is invisible variation, not making your prompt look like a ransom note.

    CategoryElement_easy/Text

    Inputs (9)

    NameTypeDefaultDescription
    character_poolSTRING★☆✡✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋✢✣✤✥꙳ᕯ⁂⁎⁑▲▼◀▶◣◢◥◤△▽◁▷⊿∇▴▾◂▸▵▿▹◃●❍○◎⊙◌◯◍◐◑◒◓◔◕◖◗⊕⊖⊗⊘⊚⊛⊜⊝■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▓▒░◆◇◈◊❖⟡⎔←↑→↓↔↕↖↗↘↙➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➫➬➭➮➯➱➲➳➴➵➶➷➸➹➺➻➼➽➾❤❥❣♡💘💓💔💖💗💙💚💛💜🖤❦❧☙⚘⚜✓✔✕✖✗✘✝✞✟✠✚✜✛☀☁☂☃☄☾☽☼♩♪♫♬♭♮♯♠♣♥♦♔♕♖♗♘♙♚♛♜♝♞♟✂✎✐✈✉☎☏⌛⏳⌚⚛⚙⚓⚖⚡⚠「」『』〖〗【】〔〕︵︶︷︸︹︺︻︼︽︾⌞⌟⌜⌝⌊⌋⌈⌉
    max_countINT100–10000
    link_textSTRING
    locationCOMBOend3 options: end, insert, before
    seedINT00–18446744073709550000
    text_AoptSTRING
    text_BoptSTRING
    text_CoptSTRING
    text_DoptSTRING

    Outputs (2)

    NameTypeDescription
    final_textSTRING
    char_countINT