String
The most boring node in ComfyUI, and the one old workflows keep asking for
- STRING
This node is a text box that outputs text. That's the whole thing. No API call, no model to download, no hidden config - you type a string, a STRING wire comes out the right side, and whatever you wired it into reads it as a value. For how little it does, it shows up in an outsized number of shared workflows, which is exactly why it's worth knowing about: load a workflow that references it and you will see a missing-node error if you don't have the pack installed.
Why it exists at all. ComfyLiterals shipped in mid-2023, back when vanilla ComfyUI had no clean way to drop a raw text value into your graph. You had the text widgets on the nodes themselves, sure, but there was no tidy "here's one value, send it everywhere" primitive the way there is today. A pack of literal nodes - Int, Float, and this String - filled that hole. If you're new and thinking "can't I just use the built-in Primitive node for this?", the honest answer is: yes, on modern ComfyUI you mostly can. This node's real job today is keeping old workflow files loadable and being an explicit, greppable source of a value that's wired into several consumers at once.
How it works. The mechanism is about as deep as a puddle. The class takes the String input as-is and returns it unmodified as the output. The one thing worth knowing is the naming drama behind the scenes: the author originally registered it as plain "String", which collided with a dozen other packs that also define a "String" node (name conflicts in the shared registry are a known custom-node headache). So the class carries the alias KepStringLiteral and just displays as "String" in the node picker - that's why you'll see the Kep name in workflow JSON and missing-node warnings.
The input that matters. There's exactly one: String, a multiline text box. Type whatever you want in there - a fixed prompt line, a LoRA trigger word, a directory path - and that's your output. One text source feeding a KSampler, a text encoder, and a filename prefix at the same time beats typing the same thing into three widgets.
Installing it. Same story as the rest of the pack, and it's the easiest kind of install in ComfyUI: there's no requirements.txt, no Python dependencies, no model downloads. It's pure stdlib talking to ComfyUI's folder paths. Either way works:
# via ComfyUI Manager: search "ComfyLiterals", install, restart ComfyUI
# or manually
cd ComfyUI/custom_nodes
git clone https://github.com/M1kep/ComfyLiterals
then restart ComfyUI. One startup quirk worth knowing: the pack symlinks a js/ folder into ComfyUI/web/extensions/ComfyLiterals for its Operation node's UI. If that symlink fails (it's happiest on Linux/macOS; Windows has been known to complain), the console prints a clear error telling you to copy the folder manually. The String node itself doesn't need the JS at all, so even then it works.
Troubleshooting. The failure mode you'll actually meet is "missing node: KepStringLiteral" when you load someone's saved workflow without the pack installed. Install ComfyLiterals via Manager and reload. A couple of users have reported the pack's nodes showing up missing even after reinstalling - if that happens, make sure the clone landed in custom_nodes/ and restart ComfyUI fully (not just a browser refresh). And if you're only chasing this one node for new work, don't overthink it: the built-in Primitive covers most cases, and this is the backup you install to make old graphs load clean.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| String | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |