torch>=1.13.1 torchvision>=0.14.1 Pillow>=9.0.0 numpy>=1.21.0 ftfy regex tqdm clip @ git+https://github.com/openai/CLIP.git



























Some basic custom nodes for the ComfyUI user interface for Stable Diffusion. Features:
When using the ComfyUI interface for AI art generation, I sometimes find that the standard nodes and the many custom nodes out there don’t work the way I want them to, or how I think they should.
Rightly or wrongly, I was teaching myself a bit of Python back in 2023 to get some nodes up and running to do what I’d like, and I am starting to do that again. Yes, I am using ChatGPT, Copilot, Claude and others, and yes, I am a glutton for punishment. There are no promises that these nodes will work for you or that I will maintain them. Feel free to do with them as you wish, according to the license model.
UPDATE: JUL 25, 2025
New for Version 1.5:
UPDATE: JUL 18, 2025
Version 1.3 introduces the Endless 🌊✨ Fontifier, a little button on your taskbar that allows you to dynamically change fonts and sizes.
UPDATE: JUL 8, 2025
Updated Batch prompt nodes to handle Flux Kontext. You can set multiple prompts in the node and they will be processed simultaneously by the GPU. Corrected JSON export capability so a saved JSON properly loads the workflow when dragged and dropped onto the UI.
UPDATE: JUN 28, 2025
Updated Batch Flux node to handle separate Clip and T5 text encoders along with separate Flux weight files. Updated the SDXL node to handle separate Clip-L and CLip-G encoders
UPDATE: JUN 23, 2025
Added Endless Pandemonium node, repurposed Endless Chaos node, cleaned up some typos, did some bug squishing.
UPDATE: JUN 21, 2025
Blew everything up and removed all the old nodes. Nodes with new coding have been uploaded and will be updated semi-frequently until mid-July 2025
It’s preferable to install from the ComfyUI Node Manager, but for direct installation, do this:
git clone https://github.com/tusharbhutt/Endless-Nodes
If installed correctly, you should see a menu choice in the main ComfyUI menu that look like this:
Endless 🌊✨
with several submenus for you to select from.
I am not a programmer, nor do I care to be. I have a fulltime job that eats up 50-60 hours a week and I made these nodes for myself. I’ve tested the nodes on my system and uploaded them as they seem to work. They may or may not work for you or on your system.
If you have issues, ask me nicely for help. Your tone matters; I’m too old and tired to pay attention to people who think I blew up their machines, and if how I react to you if you are difficult bothers you, some self-reflection is in order on your part. You are not “forthright” or “honest” or “direct”, you’re merely an ass if you think badgering people is justifiable to get what you want. The world has too many assholes, don’t make me think you’re another one.
A helper script places a button on your task bar called “Endless 🌊✨ Tools”:
IF YOU DO NOT SEE IT, PRESS CTRL-ALT-E TO BRING UP A FLOATING TOOLBAR THAT CAN BE MOVED AROUND This is the central toolbar that contains all the scripts I have made for this collection. Get rid of it by pressing the ESC key.
I find that sometimes I need to create a few nodes for a workflow and creating them one at a time is painful for me. So, I made the Endless 🌊✨ Node Spawner. The spawner has a searchable, categorized interface that supports batch operations and maintains usage history for improved efficiency. Click the Endless 🌊✨ Tools button to bring up the floating toolbar and you should see a choice for “🌊✨ Node Spawner”. Clicking it shows the dialog box below:
The node spawner has the following features:
Here’s a quick overview of how to use the spawner:
Once you have made your selections and applied them, all the nodes you created will appear. How fast is it? My system can create 950 nodes in less than two seconds.
When you have large workflows, it can be hard to keep tack of everything on the screen. The ComfyUI web interface does have a button to resize the nodes to your screen, but I thought a minimap would be of use to some people. The minimap displays a scaled overview of all nodes with visual indicators for the current viewport and support for direct navigation. Click the Endless 🌊✨ Tools button to bring up the floating toolbar and you should see a choice for “🌊✨ Minimap”. Clicking it shows the dialog box below:
The minimap has the following features:
Drag the box around by clicking and holding the title. To cancel, you can simply click outside the dialog box or press the escape key. With this dialog box, you can do the following:
The drag bar has the following icons:
The icons correspond to:
🎨 Toggle legend
▫ Zoom out
🏠 Reset zoom and pan
⬜ Zoom in
❌ Close minimap
When you zoom in to the minimap, you can see the labels of the nodes as well, like shown below. The minimap should also change shape to respect the browser window shape, and works with ComfyUI themes.
I always found it odd that in the early days of ComfyUI, you could not change the font size for various node elements. Sure you could manually go into the CSS styling in a user file, but that is not user friendly. Later versions have allowed you to change the widget text size, but that’s it. Yes, you can zoom in, but… now you’ve lost your larger view of the workflow. If you have a 4K monitor and old eyes, too bad so sad for you. Click the Endless 🌊✨ Tools button to bring up the floating toolbar and you should see a choice for “🌊✨ Fontifier”. Clicking it shows the dialog box below:
Drag the box around by clicking and holding the title. To cancel, you can simply click outside the dialog box or press the escape key. With this dialog box, you can do the following:
Once you make your changes, you can preview them and then choose to apply or cancel. Changed your mind? Load the box again and press the reset key. You can also save your settings for persistent use.
See the video!
As far as I know, ComfyUI does not have native capability to allow for different prompts to be run within the *same* batch. With ComfyUI native, you can set the batch size to, say, create 12 images of the same prompt or you can change the queue to have 30 runs of different prompts, one prompt at a time. I always found both methods to be “wasteful” if you have powerful card with a lot of VRAM. I don’t, by the way 🙂
Also, there are some nodes that will create multiple prompts in batches, but the ones I looked at showed they were just doing what is essentially queue management and prompts were still being done one at a time. This set of nodes will allow you to create as many prompts as your VRAM can hold and does them *simultaneously*. Nodes are available for SDx, SDXL, and Flux.
You can try this out too: pair a wildcard node in the front end with the batch sampler, set your queue to “Run (instant)” and enjoy endless random batched prompts
Nodes available:
Inputs:
Output:
The images below should have workflows built in but if not, check out the workflows folder too. The image of the beaver is set up for the SD1.*x*/SD2.*x* node (called the “Simple Batch Prompts” node), the goose superhero is for SDXL, the moose overlord is for Flux, and Vermeer’s Girl With the Pearl Earring is for Kontext. If you want to try your hand with randomness, the pink sock monkey is an example of using the Flux batcher with Dynamic Prompts. That (sadly,abandoned) custom node is available here if you need it
Image with embedded workflow for Flux Kontext
Image with embedded Flux workflow
Image with embedded SDXL workflow
Image with embedded SD1.*x*/SD2.*x* workflow
Image with embedded Dynamic Prompts and Flux workflow
This is why I tried my hand at Python in the first place! There are many good image saver nodes out there, so why one more? Well:
So: this node will allow you to save your image file wherever you want, with full support for standard Python date and time conventions and you can save the JSON file somewhere else. The feature list includes:
prompt_list inputsaved_paths output to display the complete path for each file after each runDoes it work…? You betcha!
JSONs to the left of me, images to the right of me, and here I am stuck in the middle with you! It works!
*A note on timestamp formats*
This module uses the standard Python date and time stamp formats, it _does not_ use the date and time format popular in the WAS Suite. See below for equivalency examples:
[time(%Y-%m-%d__%I-%M%p)]“%Y_%m_%d__%I-%M%p“You can use these two nodes to see how novel or complex your images are.
The Novelty Score node matches your image against one or more reference images and computes how different your image is. The higher the score, the more novel your image is. The node calculates CLIP embeddings for the input image and compares them to a list of reference embeddings using cosine similarity. You can compare it to one other image, but it’s more fun to compare to a range of them.
Similarly, the Complexity Score node indicates how complex an image is, with more complex images scoring higher. This is based on edge detection and other variances found in the image. The node converts the image to grayscale, applies FIND_EDGES from PIL, and calculates what percent of pixels are above a threshold.
There are two sets of nodes, for text selection and to randomize parameters.
Text Randomizers
These nodes will randomly select text from the input. There are two nodes, one that picks one line from the list, and one that selects *x* number of lines from the list. Useful for randomly picking prompts.
Parameter Randomizers
There are three nodes: Endless Mayhem, Endless Chaos, and Endless Pandemonium. Each of the first two allow you to randomly select parameters such as steps, CFG value (CFG Guidance for Flux is available as well), height, width, and the seed, with minimum and maximum values.
All nodes have a Boolean flag to set the dimensions to be divisible by 64; if left off, the dimensions will be divisible by 16. The Mayhem and Chaos nodes have sanity checks so if one value in a pair you put in is lower than its counterpart, they are automatically flipped. For example if you put in “10” for the minimum steps and put in “3” for the maximum instead of the “30” you probably wanted, the node will make “3” the minimum and “10” the maximum.
The Mayhem node will optionally randomly flip the height and width values on you, so the image moves from portrait to landscape. Why? Why not? Actually it’s based on something I jimmy rigged into a Google Colab notebook back at the dawn of widely available code for AI art … late 2021!
The Chaos node allows you to select an orientation: square, portrait, landscape, or random. Selecting square will give you random dimensions between the minimum and maximums you set but keeps the aspect ratio at 1:1. Otherwise, the node will attempt to give you a random aspect ratio from the list below and will use either portrait, landscape, or randomly select an orientation. If it fails to find a suitable aspect ratio, it reverts to square.
Potential aspect ratios, with the inverse ratios also available:
See below for a set of images that are identical in parameters except for a randomly applied aspect ratio:
The Pandemonium node is a black box. It’s very similar to the Chaos node, but you have no input into the minimum and maximum values. Is it silly? Sure. Does it make your image creation more random? Absolutely.
Allows the user to select between four, six, and eight text inputs and uses a selector at top to make the selection. Useful for multiple inputs for prompt creation.
Note: you need a minimum of one input, the rest are optional.
As above, but for integers. There is also an Integer Input Switch Widget (not shown)
I do have some nodes that are half-way done, but not ready for prime time. They’ll be uploaded when I get to them.
See GPL Licensing V3 for usage. You may modify this code as long as you keep the credits for this repository and for those noted in the credit section below. YOU ARE EXPRESSLY FORBIDDEN FROM USING THESE NODES TO CREATE ANY IMAGES OR ARTWORK THAT VIOLATES THE STABLE DIFFUSION ACCEPTABLE USE POLICY OR THE USAGE POLICY FROM BLACK FOREST LABS.
For example, don’t be a mouth-breather who creates fake nudes or sexual content of anyone, even if you have their consent. JUST. DON’T. BE. AN. ASSHOLE.
The author expressly disclaims any liability for any images you create using these nodes.
These nodes may or may not be maintained. They work on my system but may not on yours. Feel free to send in a bug report if you find one!