Nodes/comfyui_meme_maker/Meme Maker - fonts autoread in inputs folder
ComfyUI Node

Meme Maker - fonts autoread in inputs folder

Impact text on your gens without leaving the graph

By Smuzzies·Created 2 years ago·Updated 2 years ago· 1
Meme Maker - fonts autoread in inputs folder
  • image_input
  • IMAGE
  • MASK
meme_textYour Meme Text Here
font
max_font_size128
font_color#FFFFFF
outline_color#000000
outline_width2
horizontal_aligncenter
vertical_alignbottom
padding_left20
padding_right20
padding_top20
padding_bottom20
meme_height128

MemeMaker is the "slap a caption on it" node: you feed it an image and a line of text, and it hands back the same image with bold, outlined, all-caps meme text baked in - ready to wire into a Save Image or Preview Image node. It's one tiny node from Smuzzies, the same author behind the chatbox overlay node, and it exists because the whole captioning step is normally WAS Node Suite territory (a huge toolkit you install for dozens of things just to put words on a picture). This does that one job, nothing else, no model downloads, no API keys. If your workflow ends with "now let me open this in an editor and add text," this is the shortcut that kills that detour.

How it works

Under the hood it's plain PIL: the node loads your chosen .ttf or .otf font, uppercases the text for you (classic meme etiquette), wraps it, and stamps it with a black outline, then alpha-composites the whole text layer over your image. The outline isn't a stroke - it's the text drawn eight times offset by one pixel in every direction, then the fill on top. Crude, but it's exactly how the Impact look works and it costs nothing.

The clever bit is the auto-fit. Text starts at max_font_size, gets wrapped to fit the available width, and if it's still too tall for the meme_height band, the font shrinks one pixel at a time until it fits. So those two inputs aren't "the font size" - they're a ceiling and a box the text must fit inside.

The inputs that matter

Most of these you can leave alone, but five are worth knowing:

  • meme_text - your caption. Multiline is supported, and it's forced to uppercase regardless of how you type it.
  • font - a dropdown populated automatically from every .ttf/.otf file in your ComfyUI input folder. That's the whole font system: drop files in, they appear.
  • max_font_size (default 128) and meme_height (default 128) - the size ceiling and the vertical space the text may fill. People get burned thinking meme_height is the output image height. It isn't. It's the caption band. Crank it and the text gets bigger.
  • font_color / outline_color - raw hex strings like #FFFFFF, not a color picker. PIL also accepts plain color names if you'd rather type white.

The rest - outline_width (2 is the classic look), the four padding_* margins, and horizontal_align/vertical_align (default center/bottom, i.e. a bottom caption; you do the top half of a meme by sending a second node with vertical_align: top) - are all straightforward once you see them.

Outputs

It returns IMAGE (the composited result, wire this into Save/Preview) and MASK - the alpha channel of just the text, if you want to use the caption as a cutout or composite it elsewhere.

Install and gotchas

Install via ComfyUI Manager (search "Meme Maker") or:

cd ComfyUI/custom_nodes
git clone https://github.com/Smuzzies/comfyui_meme_maker.git
# restart ComfyUI

Dependencies are just torch, torchvision and Pillow - all already in ComfyUI, so there's nothing heavy to pull. The one thing the README makes you do is add fonts: grab Impact (the classic meme font; the README links a download), unzip, and drop the .otf/.ttf files into ComfyUI/input.

Where people actually trip:

  • An empty font dropdown means there are no .ttf/.otf files in your input folder. And because the list is built when the node loads, fonts added after startup need a ComfyUI restart before they show up.
  • image_input is marked optional but isn't. The schema lists it as optional; the code throws ValueError: image_input is required if you leave it unconnected. Just always wire an image.
  • Line height is hardcoded from each line's bounding box. Multi-line captions in tall or tightly-spaced fonts can overlap - a known sore spot across this whole family of text-overlay nodes, and there's no line-spacing input here. Keep captions short or pick a clean font.

It won't make your memes funnier. It just makes getting them off your workflow and onto the image a two-second step.

CategoryImage Processing

Inputs (14)

NameTypeDefaultDescription
meme_textSTRINGYour Meme Text Here
fontCOMBO0 options:
max_font_sizeINT1281–9999
font_colorSTRING#FFFFFF
outline_colorSTRING#000000
outline_widthINT20–10
horizontal_alignCOMBOcenter3 options: left, center, right
vertical_alignCOMBObottom3 options: top, center, bottom
padding_leftINT200–9999
padding_rightINT200–9999
padding_topINT200–9999
padding_bottomINT200–9999
meme_heightINT1281–9999
image_inputoptIMAGE

Outputs (2)

NameTypeDescription
IMAGEIMAGE
MASKMASK