Nodes/GraftingRayman/GR Onomatopoeia
ComfyUI Node

GR Onomatopoeia

Comic-book sound effects and speech bubbles, stamped onto your image

By GraftingRayman·Created 2 years ago·Updated about a month ago· 76
GR Onomatopoeia
  • image
  • IMAGE
  • MASK
textHello
randomizefalse
font/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
font_size100
vertical_alignmentmiddle
horizontal_alignmentcenter
justificationleft
padding0
stroke_thickness5
stroke_colourred
fill_colourpurple
bubble5
bubble_distance100
bubble_colourmaroon
bubble_stroke_thickness10
bubble_filltrue
bubble_fill_colourwhite
line_typestraight
jagged_points45
jagged_min_distance50
jagged_max_distance100
shape_typenone
seed446598648361665
vertical_randomness10
letter_spacing0
randomize_colourstrue

Exactly what it sounds like: this node stamps comic-book style text onto an image - think "POW", "BOOM", "CRASH" in bold jagged lettering, optionally wrapped in a speech-bubble or burst shape. It's a pure creative-overlay tool, and there's nothing else in this pack that does the same job - if you want that comic-panel or meme-adjacent look without leaving ComfyUI, this is the node.

The author's own note when they first shared it is worth repeating as a heads-up rather than a knock: center alignment works well, left/right placement was still a bit buggy at release. Worth testing your specific layout before you commit to a batch run with alignment set to anything other than center.

How it works

text is what gets rendered - randomize can pick something for you instead if you want variety across a batch rather than typing every word by hand. From there it's almost entirely styling: pick a font from ten bundled DejaVu/Droid/Noto typefaces, set font_size, position it with vertical_alignment/horizontal_alignment/justification, add padding, and give the letters a stroke_thickness and stroke_colour around a fill_colour. The bubble/burst shape around the text is its own layer: bubble and bubble_distance control its size and spacing from the letters, bubble_colour/bubble_fill/bubble_fill_colour control its look, and line_type (straight, curved inwards, curved outwards, splat, drip) plus shape_type (none, star, cloud, lightning, bomb, skull, dots) decide whether you get a plain outline or a full comic burst shape. jagged_points, jagged_min_distance, and jagged_max_distance control how spiky and irregular that outline gets - the difference between a smooth speech bubble and a jagged "BANG!" burst comes entirely from these three. seed and randomize_colours let you get variation across a batch without hand-tuning every parameter each time.

The inputs and outputs that matter

  • text - the word or phrase to render. Short punchy words are what this node is built for.
  • shape_type and line_type - together these decide the overall look: none + straight gives you plain outlined text, while a bomb or star shape with splat or drip lines gets you a full comic-effect burst.
  • fill_colour, stroke_colour, bubble_colour - the three color slots (30 choices each) that do the most visual work.
  • image - required; this composites onto an existing image rather than generating a standalone graphic.

Two outputs: IMAGE (the composited result) and MASK (covering just the text/bubble region - useful if you want to isolate or re-composite the effect separately later).

How to install it

ComfyUI Manager, search GraftingRayman. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/GraftingRayman/ComfyUI_GraftingRayman

Restart. This pack needs OpenAI's CLIP installed separately or nothing imports - portable: .\python_embeded\python.exe -m pip install git+https://github.com/openai/CLIP.git; system Python: pip install git+https://github.com/openai/CLIP.git.

Common issues & troubleshooting

Pack won't load. Check console at startup for the CLIP import error, run the pip command above.

Text placed left or right looks off. This lines up with the author's own known-issue note - center alignment is the reliable one. If left/right placement looks wrong for you, try center first to confirm the rest of your settings are correct, then troubleshoot alignment specifically.

Bubble shape looks like noise instead of a clean burst. jagged_points set too high relative to your bubble size, or jagged_min_distance/jagged_max_distance too close together, produces a spikier, messier outline than intended. Bring the point count down or widen the distance range for a cleaner shape.

Text is unreadable against the background. Increase stroke_thickness and pick a stroke_colour that contrasts with both the fill_colour and the underlying image - the stroke is what keeps the lettering legible over busy backgrounds.

CategoryGraftingRayman/Overlays

Inputs (27)

NameTypeDefaultDescription
textSTRINGHello
randomizeBOOLEANfalse
fontCOMBO/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf10 options: /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf, +4
font_sizeINT1001–256
vertical_alignmentCOMBOmiddle3 options: top, middle, bottom
horizontal_alignmentCOMBOcenter3 options: left, center, right
justificationCOMBOleft3 options: left, center, right
paddingINT00–128
stroke_thicknessINT50–10
stroke_colourCOMBOred30 options: amethyst, black, blue, cyan, diamond, emerald, +24
fill_colourCOMBOpurple30 options: amethyst, black, blue, cyan, diamond, emerald, +24
bubbleINT50–50
bubble_distanceINT1000–500
bubble_colourCOMBOmaroon30 options: amethyst, black, blue, cyan, diamond, emerald, +24
bubble_stroke_thicknessINT100–20
bubble_fillBOOLEANtrue
bubble_fill_colourCOMBOwhite30 options: amethyst, black, blue, cyan, diamond, emerald, +24
line_typeCOMBOstraight5 options: straight, curved inwards, curved outwards, splat, drip
jagged_pointsINT453–100
jagged_min_distanceINT500–500
jagged_max_distanceINT1000–500
shape_typeCOMBOnone7 options: none, star, cloud, lightning, bomb, skull, +1
seedINT446598648361665100000000000000–999999999999999
vertical_randomnessINT100–100
letter_spacingINT00–100
randomize_coloursBOOLEANtrue
imageIMAGE

Outputs (2)

NameTypeDescription
IMAGEIMAGE
MASKMASK