Number to Text
'2' becomes 'two' (or 'zwei', if you leave the dropdown alone)
- STRING
The name tells you everything. Number to Text takes a number and hands you that number written as a word: "2" becomes two, "15" becomes fifteen. That's the entire job, and it's refreshing in a ComfyUI ecosystem where half the packs you install want to drag in a ControlNet and a couple of gigabytes of checkpoints. This one calls no API, needs no key, downloads zero models, and has a single Python dependency. The README even opens with a joke warning that using it means "you are old enough to know the risks of the internet" - that's the author being funny, because the only risk here is a couple of minutes wondering why you grabbed it.
When you'd actually reach for it
It's a text-plumbing utility, so its moment is when a number needs to end up as a word inside a string. The use case I'd actually endorse is natural-language dataset captioning. The captioning guidance for the LLM-encoder generation (Flux, Z-Image, Qwen-Image) is to write captions as plain natural language rather than tag soup, and a numbered series reads more naturally as "photo three of a ceramic mug" than "photo 3". If you're scripting captions for shot_003.jpg style datasets, this node slots right into the text-assembly step before the caption gets written.
The other common ask is prompt variation: turning a loop counter into a word inside a dynamic prompt so you can grid out "a room lit by lamp one / lamp two / lamp three" without hand-typing each variant. That's about it. It's niche, it's personal - the node lives under the author's own DeanLogic category in a pack that has exactly one node - and nobody on reddit is arguing about it. Don't expect a community favorite; expect a tiny utility that does one thing.
How it works
It's a thin wrapper around the well-known Python library num2words. The node takes your input string, tries to parse it as an integer, falls back to a float, then hands it to num2words with lang='en' or lang='de'. If it can't parse the input at all, it just returns it unchanged, which is a friendly failure mode - paste "abc" in and you get "abc" back instead of a crash. One quirk to know: the input is a string, not an integer, so a plain batch-counter INT won't plug straight into it; you'll need a primitive or a text-formatting node in between.
The inputs that matter
There are only two, and you'll set both:
number- a string like"2"or"15"(default"2"). Works for ints and floats.language- the dropdown withdeanden. Here's the trap: the default isde. Leave it alone as an English speaker and you'll getzweiandfünfzehn, which is probably not what you wanted. The author's clearly German-speaking; flip it toen.
The single output is a plain STRING, so it wires into any text concatenation node, a CLIPTextEncode prompt, or whatever's assembling your caption or prompt further down the graph.
Installing it
Easiest path is ComfyUI Manager - search "NumberToText" (the pack title is ComfyUI-NumberToText), install, restart. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/MartinDeanMoriarty/ComfyUI-NumberToText
cd ComfyUI-NumberToText
pip install -r requirements.txt
That last line is not optional decoration: the requirement is num2words, and it is not bundled with ComfyUI. Manager runs it for you automatically; if you clone manually, you have to run it yourself.
Common issues
ModuleNotFoundError: No module named 'num2words'- you cloned manually and skipped the pip install. Runpip install -r requirements.txtfrom the pack folder and restart ComfyUI. This is the one failure mode you'll actually hit.- German output you didn't ask for - see above; the default is
de. - "I can't connect my integer to the number input" - expected; the input is a string. Convert first.
- The README vouches for "numbers up to 9999 without problems." num2words can honestly go much higher, but the author only guarantees four digits - stay inside that and you're on solid ground.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| number | STRING | 2 | — |
| language | COMBO | de | 2 options: de, en |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |