ComfyUI_RaykoStudio
A node for ComfyUI that allows you to overlay text on an image in an area defined by a mask, with support for text rotation, custom fonts, line breaks and transparency.
Nodes (40)
Load a PNG and keep the transparency — ComfyUI's Load Image quietly drops it
Hide a prompt inside a PNG and get it back later — like a poor man's CivitAI workflow
Pause mid-run, lasso the exact region, and continue — masks without pre-planning
Cycle a seed (or any INT) across a batch — the poor man's batch scheduler
One LoRA loader to replace four of them (it even fetches your trigger words)
One loader to stack your UNET, CLIP, VAE and LoRAs — and remember the combo
Two models, two CLIPs, two VAEs, and a LoRA stack
Load Image, but with a proper lasso tool instead of a brush
Turn a CSV of community styles into combinable prompt ingredients
Flip between models, images, or whatever, with toggles
A bypass dashboard for your spaghetti monster — mute whole groups in one click
Compose images by dragging them on a canvas — with real feathering, not guesswork
Pick a color once, get HEX_INT, HEX_STR, and RGB out — with an eyedropper
Slide-compare two images at 10x zoom
Crop by drawing on the image, and never fight a VAE size-multiple error again
Lightroom sliders that live inside your ComfyUI graph
The 🦊 RS Label Image Node
An empty latent that actually matches your VAE — no more size-multiple errors
Steal your own prompt back from any PNG
Pick which batch images to keep, in a grid, before they hit the sampler
Image to latent without the 'size not divisible' error — VAE-aware and resizable
The 'just encode it' image-to-latent node — zero size settings to touch
Paste a modified crop back into the original — pixel-perfect, every time
🦊 RS Label
Grab the final frame of any video input — no VHS required
Batch-load a whole folder of images — and keep the alpha
Test 20 LoRAs in one queue press
Outpaint by dragging a box, not by doing math — the visual mask you've been wanting
Put text on images with drag handles, not guesswork
A prompt box that lets you edit mid-run
A reference image, injected straight into your conditioning
Stop hand-wiring reference latents into your edit-model workflows
Save Image, but with a caption that explains itself
Filenames that tell you which LoRA made the image
Put a tiled image back together so nobody sees the seams
Slice big images into tiles without hand-calculating anything
Upscale model + resize in one node, without nuking your VRAM
An 'upscaler' that won't invent detail (and does the VAE math for you)
VAE Decode + Save in one node, because the chain is boring
Before-and-after in one PNG, workflow included
🦊 ComfyUI_RaykoStudio
Set of custom nodes for ComfyUI providing additional image processing capabilities
<details> <summary>🖥️ Performance has been tested for</summary>
- ComfyUI 0.15 and above
- Python 3.10 and above
- Torch 2.8 and above
- Cuda 12.4 and above
- torch
- opencv-python
- numpy
- Pillow>=10.0.0
- freetype-py>=2.5.1
- pycairo>=1.29.0
- scipy>=1.10.0
Set of nodes can be installed in several ways:
- Clone repository to
ComfyUI/custom_nodes/folder:
git clone https://github.com/Raykosan/ComfyUI_RaykoStudio.git
- Download the ZIP, unzip and put ComfyUI_RaykoStudio folder to: ComfyUI/custom_nodes/
- You can install this node using the ComfyUI_Manager
- To update ComfyUI_RaykoStudio, use the update.bat file
- v0.17.3 - Adding to RS Prompts node output "PROMPT_STRING", which returns the text value of the final prompt
- v0.17.5 - A switch has been added that allows you to enable/disable external text input with a single mouse click
- v0.17.6 - Changing the name of the RS Spline Mask node to RS Load Image
- v0.17.8 - Minor fix in RS Load Image node. Added the ability to upload images to a node by dragging an image from Explorer to node
- v0.18.0 - Added a new node - RS Image to Latent
- v0.18.1 - Modification of the RS Models Loader node
- v0.19.0 - License change and addition of the RS Collage node and the RS rgb2rgba node
- v0.20.0 - Complete modification of the RS Collage node
- v0.20.1 - Fixed the behavior of the overlay, which in some cases overlapped the ComfyUI popups
- v0.20.2 - Modification of the RS Crop Image node
- v0.20.3 - Adding a mask mode to the RS Crop Image node
- v0.20.4 - Fixed image loading by dragging in the RS Load Image node
- v0.20.5 - Adding the ideogram4 parameter to the Models Loader clip node list
- v0.20.6 - Fixed the logic of the RS Prompts node
- v0.21.0 - Complete redesign of the RS Prompts node logic
- v0.21.2 - Modification of the RS Models Loader node: pixel_spaces has been added to the VAE list
- v0.22.0 - Added the 'Interface Settings Manager' extension
- v0.23.0 - Added the RS Any Switch node
- v0.23.1 - Adding an RS Image to Latent (simplified) node
- v0.23.2 - The 'UPDATE NAME' button has been added to the RS Any Switch node
- v0.23.3 - Fixed resetting the mask color to default after pressing the ACCEPT and CANCEL buttons in the RS Outpaint node
- v0.23.4 - A BATCH button has been added to the RS Intermediate Spline Mask node for batch image processing with a permanent mask
- v0.23.5 - Fixed the operation of the RS Prompts node with light themes of the ComfyUI interface
- v0.25.0 - Modification of the RS Color Picker node
- v0.25.1 - Fixed a bug with the generation process hanging under certain circumstances
- v0.25.2 - Clip added to RS Models Loader node: boogu and krea2
- v0.26.0 - Adding a new RS Text Overlay Pro node
- v0.26.1 - Correcting the color selection in the RS Colorpicker node
- v0.27.0 - Added the RS MultiLatent node
- v0.28.0 - Adding preset functions to the RS Models Loader node
- v0.28.2 - Adding a new node RS Ref 2 Latent
- v0.29.0 - Adding a new node RS Bypass Manager
- v0.29.1 - Added a csv file with the styles 'Krea2 Style RS'
- v0.30.0 - Upgrading the RS Styles Loader node
- v0.30.1 - Upgrading the RS Models Loader node
- v0.30.2 - Code optimization and visual changes in the RS Models Loader node
- v0.30.3 - Adding the LoRA drag and drop feature to the RS Models Loader node
- v0.31.0 - Adding a new node RS Lora Loader
- v0.31.1 - Adding the metadata display function for LoRA to the RS Models Loader node
- v0.31.2 - Added the ability to create and edit tags for LoRA
- v0.31.3 - Upgrading the RS Color Picker node
- v0.32.1 - Adding the RS Image Adjustments node
- v0.32.2 - Code optimization in the RS Image Adjustments node. The time to receive data from the ComfyUI server has been reduced by 10-15 times
- v0.32.3 - The Sharpen, Vibration and Clarity parameters have been added to the RS Image Adjustments node
- v0.32.4 - Corrections of formulas for calculating the parameters of the RS Image Adjustments node
- v0.33.0 - Changing the operating method of the RS Outpaint node
- v0.33.1 - clip_type 'mage' added to RS Models Loader node
- v0.33.2 - Deep modification of the RS Outpaint node
- v0.34.0 - Adding the RS Load Images From Dir node
- v0.34.1 - Added the 'Paste' button to the RS Load Images From Dir node
- v0.35.0 - Added an RS Image-Prompt node
- v0.35.1 - Modification of interfaces in some nodes
- v0.36.0 - Added the RS Decode Save node
- v0.36.1 - Fix error in the RS Models Loader node
- v0.36.2 - Security Hardening: Path Traversal Prevention in RS_VAE_Decode_Save
- v0.36.3 - Adding batch image processing mode to the RS Image Adjustments node
- v0.36.4 - Added drag and drop image loading to the RS Image-Text node
- v0.37.0 - Added an RS Upscaler node
- v0.38.0 - Added an RS LoRA Tester node
- v0.39.0 - Added an RS Save Image LoRA node
- v0.40.0 - Added RS Models Loader Pro node
- v0.41.0 - Added RS Ref Encode node
- v0.42.0 - Added nodes for working with upscalers: RS Upscale & Resize, RS Tile Adjustments, RS Tile Assemble
- v0.42.1 - Changes in the interfaces of some nodes
- v0.43.0 - Added RS Label node
- v0.44.0 - Added RS Label Image node
NODES
<details> <summary>🦊 RS Label</summary>🦊 RS Label
A highly customizable floating label node for ComfyUI.
Perfect for adding annotations, titles, watermarks, or text overlays directly on the canvas with full control over typography and styling.
<br>
🔥 Features
- Rich Typography - Full support for custom
.ttf/.otffonts loaded from a local directory - Advanced Styling - Precise control over font size, color, alignment, line spacing, letter spacing, and text stroke (outline)
- Flexible Backgrounds - Choose between fully transparent mode or solid background colors with adjustable padding and border radius
- Smart UI - Draggable settings window that auto-anchors to the node without dimming the canvas
- Non-Destructive Workflow - Edit properties in real-time while maintaining full visibility of your graph
- Pin Support - Right-click → Pin to allow clicks to pass through the label when not editing
🎛️ Controls
Double-Click: Opens the settings dialog anchored to the node
Drag Window Title: Repositions the settings dialog anywhere on screen
Close: settings window is closed with the OK button or the ESC key
⚠️ When navigating through the ComfyUI or browser tabs, as well as when refreshing the ComfyUI page, the settings window automatically closes, saving the text settings configured in it.
🔤 Installing Fonts
Place .ttf or .otf files in folder:
ComfyUI\custom_nodes\ComfyUI_RaykoStudio\fonts
Restart ComfyUI
Fonts are auto-detected on editor open
🛠️ Settings Dialog
| Parameter | Description | Default |
| :--- | :--- | :--- |
| Text | Content of the label. Supports multiline via Enter key. | Sample Text |
| Font Size | Height of the text in pixels. | 24 |
| Font Family | Dropdown populated from fonts/ directory. | First available |
| Font Color | Fill color of the text characters. | #FF0000 |
| Text Align | Horizontal alignment (Left, Center, Right). | Left |
| Line Spacing | Multiplier for vertical distance between baselines. | 1.0 |
| Letter Spacing | Pixel offset between individual characters. | 0 |
| Stroke Width | Thickness of the text outline (0–10). | 0 |
| Stroke Color | Color of the text outline. | #000000 |
| BG Transparent | Toggle for solid background vs transparency. | On |
| BG Color | Fill color when transparency is disabled. | N/A |
| Padding | Internal margin between text and border. Min effective value is 5px. | 10 (UI: 5) |
| Border Radius | Corner roundness of the label frame. | 5 |
| Border Width | Thickness of the outer frame. | 2 |
| Border Color | Color of the outer frame. | #FF0000 |
🦊 RS Label Image
A versatile floating image label node for ComfyUI.
Perfect for adding visual markers, logos, icons, or annotations directly onto your canvas with full control over styling and layout.
<br>
🔥 Features
- Flexible Backgrounds - Choose between fully transparent mode for a "floating" look or solid background colors to make your labels pop
- Smart Drag & Drop - Simply drag an image file from your computer directly onto the node to upload it instantly
- Auto-Synced Rounding - The image corners automatically match the curvature of the outer border for a perfectly aligned, professional look (with an option for manual override)
- Proportional Scaling - Images are resized while maintaining their original aspect ratio, ensuring no distortion regardless of the target size
- Non-Destructive Workflow - Edit properties in a draggable settings window without dimming the canvas or blocking access to other nodes
- Persistent Storage - Uploaded images are cached and reliably restored even after page reloads or switching between workflow tabs
🎛️ Controls
Double-Click: Opens the settings dialog anchored to the node
Drag Window Title: Repositions the settings dialog anywhere on screen
Close: settings window is closed with the OK button or the ESC key
⚠️ When navigating through the ComfyUI or browser tabs, as well as when refreshing the ComfyUI page, the settings window automatically closes, saving the text settings configured in it.
🛠️ Settings Dialog
| Parameter | Description | Default |
| :--- | :--- | :--- |
| Size | Maximum side length of the displayed image (16–200px). | 100 |
| Padding | Internal margin between the image and the border. | 0 (Internal: 5px) |
| Border Width | Thickness of the outer frame. | 2 |
| Border Radius | Corner roundness of the label frame. | 5 |
| Sync Image Radius | Automatically matches image corners to the border shape. | On |
| Image Radius | Manual corner roundness for the image (if sync is off). | 0 |
| Border Color | Color of the outer frame. | #FF0000 |
| BG Transparent | Toggle for solid background vs transparency. | On |
| BG Color | Fill color when transparency is disabled. | N/A |
💡 Tips
- Perfect Circles: Set the Border Radius to half of the Size (e.g., Size 100, Radius 50) to create perfect circular labels
- Visual Consistency: Keep Sync Image Radius enabled to ensure the image and border always look like a single cohesive element
- Workflow Organization: Use these labels as visual headers for different sections of your graph or as status indicators for complex sub-workflows
🦊 RS Collage Node
Interactive node for overlaying images with real-time positioning, scaling, rotation, and edge feathering directly on the canvas.
Normal Mode
<img width="446" height="708" alt="Screenshot_1" src="https://github.com/user-attachments/assets/cd7da099-511a-4f28-a71e-54612f0c7f30" />
Advanced Mode
<img width="2106" height="955" alt="Screenshot_2" src="https://github.com/user-attachments/assets/0104c418-9126-4c11-8f2d-67f0969edb48" />
🔥 Features
- Interactive Canvas — Drag, resize, and rotate overlays with visual handles
- Center-Anchored Scaling — Corner handles scale proportionally; edge handles scale along a single axis, both expanding/contracting from the geometric center
- Real-Time Feathering Preview — Supports Radial Blur In, Radial Blur Out, Ellipse Blur In and Ellipse Blur Out modes with adjustable radius
- Non-Blocking Session — Waits indefinitely for ✔️APPLAY or ❌CANCEL input without hard timeouts or queue interruption
- Precise Coordinate Mapping — Maintains a frozen viewport matrix during interaction to prevent drift; converts relative normalized coordinates to absolute pixel transforms for the backend
- Integrated Controls — Opacity slider, flip toggles, and feather parameters accessible via node widgets
- Workflow is in the Example folder — You can create an endless chain of these nodes - you connect the image output to the background input of the next node
🖼️ Working Modes
Normal Mode
Quick editing directly inside the ComfyUI node. Perfect for simple tasks and final touches.
Advanced Mode
Fullscreen editor with side panel for fine-tuning:
- Real-time display across the entire screen
- Independent zoom (mouse wheel) and canvas panning
- Camera automatically fits composition to 80% of window
- Overlay can extend beyond background boundaries without scale recalculation
- All parameters adjustable via convenient sliders
🔆 Feathering Types
| Type | Description | |------|-------------| |None|No feathering| |Radial Blur In|Radial blur from center to edges| |Radial Blur Out|Inverted radial blur| |Ellipse Blur In|Elliptical blur from center| |Ellipse Blur Out|Inverted elliptical blur|
- 💡 Each feathering type allows you to drag the effect center directly on the overlay.
🪛 Usage
For the overlay, it is better to use images with transparency (PNG, WebP, and TIFF files containing transparency) or images coming from the background removal node (RMBG). If you want to use a regular image or an RGB image with transparency for the overlay, but not RGBA, upload it via the 🦊 RS rgb2rgba node. Node will make or correct the Alpha channel correctly.
Connect the tensors background_image and overlay_image to the node and start the generation.
Adjust the overlay using the markers on the canvas:
- Corners - Proportional scaling from the center
- Edges - Scaling on one axis from the center
- Red cross - Freely movable blur center
- Top yellow marker - Rotate around the center
Adjust the type of shading, radius, and opacity using widgets. After selecting the type of shading, a red cross will appear on the overlay, which can be used to specify the center of the shading or blur.
Click ✔️APPLY to complete the transformations and continue plotting, or ❌CANCEL to interrupt the generation process.
You can create a chain of these nodes by connecting the Image output to the Background input of the next node.
🛠️ Parameters
| Input/Widget | Type | Range | Default | Description |
|--------------|------|-------|---------|-------------|
| overlay_image | IMAGE | - | - | Foreground layer to composite |
| background_image | IMAGE | - | - | Base canvas layer |
| overlay_mask | MASK | - | None | Optional alpha mask (inverted on apply) |
| opacity | FLOAT | 0.0 – 1.0 | 1.0 | Global transparency multiplier |
| feather_type | COMBO | None / Radial In / Radial Out / Ellipse In / Ellipse Out | None | Edge softening algorithm |
| blur_radius | INT | 0 – 100 | 50 | Feather intensity/blur radius |
| blur_hardness | INT | 0 – 100 | 0 | Hardness of the blur borders |
💡 Tips
- For quick starts use Normal Mode — all parameters are saved in the workflow
- For precise tuning switch to Advanced Mode — it doesn't save state in workflow but gives more control
- Corner handle scaling preserves aspect ratio
- Edge handle scaling allows changing aspect ratio
- If overlay has black corners after rotation, the node automatically removes them
🦊 RS Load Images From Dir
A custom node designed to load images from a local directory with advanced filtering, precise index control, and a fully custom user interface.
<img width="495" height="537" alt="Screenshot_1" src="https://github.com/user-attachments/assets/ca0c42c5-3dc6-42a4-a3e7-ef6b5498aadb" /> <img width="461" height="429" alt="Screenshot_1" src="https://github.com/user-attachments/assets/6457cde5-2940-4215-a13e-a9b6733d79bc" />🔥 Features
- Unified Custom UI - All widgets are custom-drawn with a consistent dark theme, rounded corners, and custom modal prompts (no ugly native browser dialogs).
- Smart Path Display - Automatically truncates long folder paths from the beginning, ensuring the actual folder name is always visible (e.g.,
...omfyUI\output\images). - Advanced Filtering - Built-in support for common formats (
*.png,*.jpg,*.webp, etc.) plus a "custom" mode for specific glob patterns (e.g.,*_mask.png). - Precise Index Control - Load specific subsets of images using 1-based Start and End indices.
- Quality Preservation - Maintains the original image resolution and preserves the alpha channel (RGBA) when present.
- Detailed Outputs - Returns the images, filenames, folder path, and total file count.
- "Paste" button - Inserting a folder path from the clipboard
💡 Tip: The "Paste" button works differently in all browsers.
In Chrome and Edge, the button works immediately (requires a one-time confirmation of access to the clipboard).
In Firefox, the Paste button will additionally pop up, when clicked, the path will be inserted.
These are browser security principles and cannot be circumvented.
In any case, you can always paste the path using the keyboard shortcut Ctrl+V.
Inputs
| Parameter | Type | Description |
| :--- | :--- | :--- |
| folder_path | String | Absolute path to the directory containing your images. Use the "📁 Select folder" button to input it. |
| filter_type | Dropdown | Choose a standard file extension filter or select custom to use the custom_filter input. |
| start_index | Integer | The 1-based starting index of the file range to load (inclusive). |
| end_index | Integer | The 1-based ending index of the file range to load (inclusive). |
| custom_filter | String | (Optional) Custom glob pattern used only when filter_type is set to custom. |
Outputs
| Output | Type | Description |
| :--- | :--- | :--- |
| image | IMAGE (List) | A list of image tensors loaded from the directory. |
| filename | STRING (List) | A list of corresponding filenames for each loaded image. |
| folder_path | STRING | The absolute path of the processed directory. |
| number_of_files | INT | The total number of files found matching the filter in the directory. |
🦊 RS Image-Prompt
A ComfyUI node that extracts the positive prompt from image metadata — instantly, without running the queue.
Load a generated image and RS Image-Prompt reads back the prompt that was used to create it. It understands metadata written by ComfyUI, Automatic1111, Forge, and the rest of the RaykoStudio suite.
🔥 Features
- Instant extraction — the prompt appears as soon as an image is loaded, no queue run needed
- Three ways to load an image:
- drag & drop onto the preview zone (the border highlights green while dragging)
- click the preview zone to open a file dialog
- 📂 UPLOAD IMAGE button
- Live DOM preview of the loaded image
- Read-only prompt view with a one-click 📝 COPY button
- Toast notifications (success / warning / error)
- Persistent state — selected image, prompt and node size survive page reloads and tab switches
🪛 Usage
- Add the node: Add Node → 🦊 RaykoStudio → 🦊 RS Image-Prompt
- Load an image — drag & drop it onto the preview zone, click the preview, or press 📂 UPLOAD IMAGE.
- The extracted prompt appears in the text area automatically.
- Connect the prompt output to the text input of the desired node (e.g. CLIP Text Encode or RS Prompts) and start generating
- If necessary, click 📝 COPY to copy the prompt to the clipboard.
The node outputs the prompt as a STRING. Wire it into anything that accepts a text prompt:
[ RS Image-Prompt ] → prompt (STRING) → [ CLIPTextEncode ] → [ KSampler ]
📥 Supported Sources
The prompt is extracted from a wide range of metadata formats, in priority order:
| # | Source | Format | Where the prompt lives |
|---|--------|--------|------------------------|
| 1 | ComfyUI | PNG | prompt chunk (API graph) |
| 2 | ComfyUI | PNG | workflow chunk (UI graph) |
| 3 | A1111 / Forge / SD.Next | PNG | parameters text chunk |
| 4 | RS Image-Text | PNG | Description chunk |
| 5 | Generic raw text | PNG | text / string / Comment / Title chunks |
| 6 | A1111 / Forge | JPG / WebP | EXIF UserComment |
Supported file types: PNG, JPG / JPEG, WebP
Recognized prompt nodes when parsing a ComfyUI graph: CLIPTextEncode, RS Prompts, RS Image-Prompt.
🖥️ UI Overview
| Element | Description | |---------|-------------| | Text area | Read-only, shows the extracted prompt (or a "not found" hint) | | 📂 UPLOAD IMAGE | Opens a file picker (PNG / JPG / WebP) | | 📝 COPY | Copies the prompt to the clipboard | | Preview zone | Shows the loaded image; drop a file here or click to upload | | Toasts | Centered popups: green = success, orange = warning, red = error |
🤝 Compatibility
- ComfyUI
- Works alongside the rest of the RaykoStudio suite:
RS Prompts,RS Image-Text - Reads images generated by ComfyUI, Automatic1111, Forge, and other tools that embed prompt metadata
🦊 RS Bypass Manager
A powerful node for managing the states of Bypass nodes and groups in complex ComfyUI circuits. If your workflow has turned into a "spaghetti monster" and you need to quickly disable entire modules (for example, switch between txt2img, inpaint and upscale), this node will save you dozens of clicks and nerves.
<img width="623" height="583" alt="Screenshot_5" src="https://github.com/user-attachments/assets/c4193648-0e3b-4499-bb14-aff6d59e0345" />🔥 Features
Smart Search - Instant search for the desired nodes and groups by name right inside the drop-down menu.
Group Support - Works with ComfyUI groups. Groups can be collapsed and expanded to select individual nodes within them.
Color indication:
- 🔴 Red — the group or node is completely blocked.
- 🟠 Orange — only part of the node is bypassed in the group (partial bypass).
- ⚪ Gray — the node/group is active.
List of active bypasses - All blocked elements are displayed directly on the node. You can delete a bypass by clicking on the node or group name.
Smart State saving - The bypass status is saved directly in the JSON workflow. No data is lost when restarting ComfyUI, switching tabs, or sharing PNG/JSON.
Dynamic size - The node automatically adjusts its height to the number of mounted elements.
Advanced UX:
- The menu does not close when you click on an item, you can quickly reset several nodes in a row.
- The menu closes automatically when the mouse cursor moves outside of it (with a slight delay for comfort).
- The
SELECT' field...is highlighted in orange while the menu is open. - The node excludes itself from the list of elements available for bypass.
🪛 Usage
Add the 🦊 RS Bypass node to the canvas (category `🦊 RaykoStudio').
Click on the SELECT... field. A menu opens with all the groups and nodes of your scheme.
If there are a large number of nodes, use the search bar to filter.
Click on groups or nodes to switch their state (Bypass/Active).
- Tip: Clicking on the name of the group bypasses it entirely. Clicking on the arrow (▶) will expand the group to select individual nodes.
When you're done, just move the mouse cursor outside the menu — it will close itself in half a second.
To remove the bypass, click on the name of the desired item in the list on the node itself.
If a node is added to a circuit that already has bypass nodes, it will automatically display them in the interface.
Also, when using bypass using comfi's own methods (the context menu is bypass, bypass in the NodeMap side menu, or bypass buttons above the node), all changes will instantly appear in the node.
🦊 RS Decode Save
A lightweight ComfyUI custom node that combines native VAE Decode and Save Image into a single, streamlined unit.
Decodes latent samples to image tensors and saves them to disk in one step, while preserving the decoded IMAGE output for downstream preview or processing.
🔥 Features
Unified Workflow - Eliminates the need for separate decode and save nodes.
Native Path Handling - Uses ComfyUI's standard folder_paths.get_save_image_path logic. Supports subfolders via prefix (e.g., project/render).
Format Support - PNG, JPG, WEBP with automatic file numbering (_00001, _00002...).
Metadata Embedding - Automatically embeds workflow metadata into PNGs or saves sidecar JSON files for other formats.
Minimal Interface - Only two custom widgets (Prefix, Format). No cluttered settings panels.
🪛 Usage
| Input / Widget | Description |
| :--- | :--- |
| samples (LATENT) | Latent space data from KSampler or similar. |
| vae (VAE) | VAE model used for decoding. |
| PREFIX (Widget) | Filename prefix and optional subfolder path. Default: ComfyUI. Use / for subfolders (e.g., batch1/test). |
| FORMAT (Widget) | Output format selector: PNG, JPG, or WEBP. |
| image (Output) | Decoded IMAGE tensor. Connect to PreviewImage or further processing nodes. |
🦊 RS rgb2rgba
A lightweight ComfyUI custom node that loads images while preserving the alpha channel (RGBA). Ideal for workflows that require transparency handling in PNG, WebP, and TIFF formats.
<img width="1042" height="345" alt="Screenshot_3" src="https://github.com/user-attachments/assets/6159bcd5-2c65-4df8-8106-21c9b75669bd" />🔥 Features
Alpha Channel Preservation - Loads and outputs images with full RGBA support.
Automatic Conversion - Forces RGBA mode if the source image uses a different color mode.
Format Support - Works seamlessly with PNG, WebP, and TIFF files containing transparency.
ComfyUI Compatible - Returns a properly formatted [1, H, W, 4] float32 tensor normalized to 0.0–1.0.
Change Detection - Automatically refreshes the node output when the source file is modified.
🪛 Usage
Add the 🦊 RS rgb2rgba node to your workflow.
Upload an image or select one from your ComfyUI/input directory.
Connect the rgba output to any node that accepts ComfyUI image tensors (e.g., VAE Encode, PreviewImage, mask processors, etc.).
📝 Notes
- Images without an existing alpha channel will be automatically converted to RGBA (alpha will be set to
1.0/ fully opaque). - The node expects images to be located in ComfyUI's standard
inputfolder. - Designed to match ComfyUI's native
IMAGEtensor format, ensuring drop-in compatibility with most custom nodes.
🦊 RS Any Switch
A dynamic switch node for ComfyUI that allows you to switch between multiple inputs of ANY data type with an intuitive toggle interface.
<img width="511" height="395" alt="Screenshot_1" src="https://github.com/user-attachments/assets/f5b4ee5c-d342-4346-b101-d364d2f714f4" />🔥 Features
Universal Type Support - Accepts any data type (IMAGE, LATENT, MODEL, AUDIO, VIDEO, TEXT, etc.)
Dynamic Inputs - Inputs are created automatically as you connect nodes (up to 20)
Smart Slot Management - Empty slots are automatically removed, keeping your workflow clean
Visual Toggle Interface - Each connected input has an ON/OFF toggle switch with the source node name (multilingual)
Exclusive Selection - Only one input can be active at a time
Persistent State - Active slot selection is saved with your workflow
Auto-Numbering - Inputs are automatically numbered (Input 1, Input 2, etc.)
Smart Display - Shows connected node names with automatic truncation (max 20 chars, multilingual)
Visual Status Bar - Green/red bordered indicator showing current active slot or OFF state
'UPDATE NAME' button - Updates the names of the connected nodes, if they have changed.
🪛 Usage
-
Add the Node: Right-click in the graph →
🦊 RaykoStudio→RS Any Switch -
Connect Inputs:
- Connect any node output to
input_1 - The first connection automatically becomes active (ON)
- Additional connections create new toggle switches (OFF by default)
- Connect any node output to
-
Switch Between Inputs:
- Click the toggle switch next to any connected input
- Turn ON the desired input (others automatically turn OFF)
- The active slot is shown in the top status bar (green border)
-
Disconnect Inputs:
- Simply disconnect the wire from any input
- The toggle switch is automatically removed
- Empty slots are cleaned up automatically
📝 Notes
Example 1: Switch Between Images
Load Image 1 ──→ input_1
Load Image 2 ──→ input_2
Load Image 3 ──→ input_3
↓
RS Any Switch
↓
Save Image
Toggle between different images without reconnecting wires.
Example 2: Model Switching
Checkpoint Loader A ──→ input_1
Checkpoint Loader B ──→ input_2
↓
RS Any Switch
↓
KSampler → VAEDecode → Save Image
Quickly compare results from different models.
Example 3: Workflow Variations
Upscale Method 1 ──→ input_1
Upscale Method 2 ──→ input_2
Upscale Method 3 ──→ input_3
↓
RS Any Switch
↓
Final Output
</details>
<details>
<summary>🦊 RS LoRA Tester</summary>
🦊 RS LoRA Tester
Node for batch-testing LoRA models. Load multiple LoRAs and automatically queue one generation session per LoRA — or test the same LoRA at different strengths.
<img width="671" height="575" alt="Screenshot_2" src="https://github.com/user-attachments/assets/5c10cfe4-de82-4f1d-b14b-1287f82f44a0" /> <img width="673" height="629" alt="Screenshot_3" src="https://github.com/user-attachments/assets/d57309d5-ac00-4443-bfbf-b3815981cb5e" />🔥 Features
- Batch Mode — Select N LoRAs, press Queue once → N separate sessions are created in the ComfyUI queue, each with exactly one LoRA applied
- Strength Testing — Add the same LoRA multiple times with different strength values to A/B test in a single batch
- Enabling/disabling LoRA - the disabled LoRA is ignored by the workflow
- CLIP Toggle — A dedicated, visually distinct button to enable/disable CLIP application per node. When the clip input is turned off, the node operates in the "model only" mode
- Custom Strength Editor — Adjust LoRA strength using + / - buttons or direct numeric input
- Precision Strength Control — Arrow buttons for ±0.05 adjustments, direct numeric input
- Visual Multi-LoRA Management — Visual Multi-LoRA Management - Add, remove, and reorder multiple LoRAs with drag-and-drop support
- Searchable Tree Selector — Browse your LoRA folder structure with real-time search
- Persistent State — LoRA list is saved per-node and restored across sessions
- Quick update - When adding a new LoRA to the 'loras' folder, you do not need to reload ComfyUI or the browser page. Just click the ✔️ Update LoRA list button
- Queue Tracking — Batch button shows running state and auto-resets when the queue completes
Adding and Managing LoRAs
Click ➕ Add LoRA to open the selector. Search or browse the tree, and click a LoRA to add it.
Use the ⋮⋮ handle on the left of each row to drag and drop LoRAs into your desired order.
🪛 Usage
- Click the ✅ CLIP ON / ❌ CLIP OFF button to toggle whether LoRAs are applied to the CLIP model. The clip input slot is visually disabled when CLIP is off.
Basic Batch
- Add 🦊 RS LoRA Batch node to your workflow
- Click ✔️ UPDATE LoRA LIST to load available LoRAs
- Click ➕ ADD LoRA and select LoRAs from the tree selector
- Press ⚙️ LoRA Batch → button turns green showing count
- Press ComfyUI's Queue Prompt → one session per LoRA is created
Strength Testing
- Add the same LoRA multiple times (duplicates allowed)
- Set different strength values using arrows (±0.05) or click the value to type manually
- Arm batch mode and queue — each strength gets its own session
🦊 RS Save Image LoRA
A drop-in replacement for SaveImage that automatically puts the names and strengths of all LoRAs used in the generation right into the output file name.
No more guessing which LoRA produced which image. Your files name themselves.
🔥 Features
- Automatic LoRA detection — reads the execution payload sent to the ComfyUI server and collects every LoRA participating in the current generation. No extra wiring required
- Multiple LoRAs supported — listed in chain order, separated by
; - Disabled slots are skipped — LoRAs switched off in the loader (e.g.
on: false) never appear in the name - Clean names — subfolder paths (
QWEN\my_lora.safetensors) and extensions (.safetensors,.ckpt, …) are stripped automatically - Metadata preserved — just like the stock
SaveImage, the full prompt and workflow are embedded into the PNG. Drag & drop the image back into ComfyUI to restore everything - Subfolders still work — a
/in the prefix still creates subfolders inoutput/(only the auto-generated LoRA suffix is sanitized) - Batch-aware — supports the
%batch_num%placeholder, same as the original node - Model-agnostic — works with any architecture (SD 1.5 / SDXL / Flux / Qwen Image / Z-Image / Wan / Lumina …), because it reads the workflow, not the model
🪛 Usage
- Add the node: Add Node → 🦊 RaykoStudio → 🦊 RS Save Image LoRA
(or double-click the canvas and search forRS Save). - Connect your
IMAGEinput exactly as you would for a regularSaveImage. - Click the PREFIX field on the node to open the popup editor, type your prefix, press Enter or OK.
- Generate. The LoRA names and strengths are appended automatically.
✨ It is convenient to use with the RS LoRA Tester node in batch mode
</details> <details> <summary>🦊 RS Upscaler</summary>🦊 RS Upscaler
A node for that combines upscale model loading and image upscaling into a single, compact node with a custom UI.
<img width="1547" height="731" alt="Screenshot_2" src="https://github.com/user-attachments/assets/ab1e806f-cf8c-49f9-a76f-1f08f82a62d2" />🔥 Features
- All-in-one - No need for a separate
Load Upscale Modelnode — the model is selected and loaded directly inside the node - Two-stage upscaling - First applies the neural upscale model (ESRGAN/RealESRGAN/etc.), then resizes to the exact target factor using the chosen interpolation method
- Tiled processing - Uses
tiled_scaleinternally to handle large images without VRAM overflow
Compatibility
Tested with ComfyUI core upscaler models including:
4x_Foolhardy_Remacri.pth4x-UltraSharp.pthRealESRGAN_x4plus.pth- And on other models
🦊 RS Upscale & Resize
Hybrid upscaler and resizer. Uses 'scale_by' by default. When width/height inputs are connected or set manually (>0), it switches to exact external dimensions.
<img width="468" height="470" alt="3" src="https://github.com/user-attachments/assets/0c062cf0-2267-4d5f-aece-5969577c77d1" />🔥 Features
- Dual Mode Operation - Seamlessly switches between Scale By (multiplicative) and Absolute Size (fixed dimensions) modes based on input connections.
- Tiled Upscale Ready - Dedicated optional inputs for width and height allow dynamic size overrides from nodes like TTP_Image_Tile_Batch, making it perfect for tiled diffusion workflows.
- Advanced Resizing Logic - Includes full support for aspect ratio handling (keep proportion, pad, fill/crop), conditional resizing, and automatic alignment to multiples of 8/16/32/64.
- High-Quality Interpolation - Supports Lanczos, Bicubic, Bilinear, Nearest-Exact, and Area methods.
- Efficient Processing - Performs interpolation only once per execution, preserving image quality better than sequential native nodes.
🪛 Usage
Standard Upscaling
Leave width and height at 0. Adjust scale_by to 2.0x, 1.5x, 5.4x, etc. The node acts as a smart ImageScaleBy with built-in multiple-of alignment
Tiled Diffusion / VAE Encoding
Connect dynamic size outputs (e.g., from Get Image Size or tile batch nodes) to the width and height inputs. The node automatically ignores scale_by and resizes to the exact required dimensions while maintaining VAE compatibility via multiple_of
Aspect Ratio Correction
Set method to keep proportion or pad to prevent distortion when forcing specific resolutions. Use fill / crop for center-cropped upscaling
📝 Notes
- Priority Logic: External width/height inputs always take precedence over scale_by
- Proportional Fallback: If only one dimension is provided (e.g., only width), the other is calculated automatically to maintain the original aspect ratio
🦊 RS Tile Adjustments
A powerful node that calculates optimal tile dimensions based on image factors and overlap rates, then splits the input image into a batch of tiles with precise coordinate metadata.
<img width="456" height="406" alt="2" src="https://github.com/user-attachments/assets/9143cb2b-0c54-4956-9a65-34c846fab036" />🔥 Features
- Dynamic Calculation - Automatically computes tile_width and tile_height based on user-defined width/height factors and overlap rates
- Smart Overlap - Ensures tiles have sufficient overlap for smooth blending during reconstruction
- Metadata Output - Provides essential data (POSITIONS, ORIGINAL_SIZE, GRID_SIZE) required for accurate image assembly
🪛 Usage
Connect your source image to the image input
Adjust width_factor_tile and height_factor_tile to define the grid density
Set overlap_rate to ensure enough context for blending (recommended: 0.1 - 0.2)
Use the IMAGES output for processing (upscaling/inpainting) and pass the metadata outputs to RS Tile Assemble node
🦊 RS Tile Assemble
The companion node to RS Tile Adjustments. It reconstructs a full-resolution image from a batch of processed tiles using calculated positions and advanced feathered blending to eliminate visible seams.
<img width="466" height="270" alt="1" src="https://github.com/user-attachments/assets/06c3fa4a-4d2f-4a1f-ae09-c799fbddc486" />🔥 Features
- Seamless Reconstruction - Uses gradient masking to blend tile overlaps smoothly
- Flexible Blending - The feather_size parameter allows you to control the softness of the transitions between tiles
- Metadata Driven - Relies on precise geometry data from the tiling node to ensure perfect alignment
- High Quality - Preserves details while removing hard edges common in basic tiling methods
🪛 Usage
Connect the processed tiles to the tiles input Wire the POSITIONS, ORIGINAL_SIZE, and GRID_SIZE outputs from RS Tile Adjustments to their corresponding inputs
Adjust feather_size if you notice hard lines (increase) or loss of detail at seams (decrease)
The FINAL_IMAGE output is ready for saving or further processing
💡 Tips
Feather Size: Start with 64. If your overlap rate was low, you may need to reduce this. If you see visible seams, increase it.
Workflow: This node is designed to work in a linear flow: Split -> Process -> Assemble. Avoid creating direct feedback loops within a single prompt execution.
🦊 RS Ref Encode
A node that combines VAE Encode and Set Reference Latent into a single efficient operation.
<img width="1291" height="364" alt="Screenshot_4" src="https://github.com/user-attachments/assets/ad405491-a83f-4ee0-8a47-634e3343edc8" /> <br> <img width="451" height="271" alt="Screenshot_3" src="https://github.com/user-attachments/assets/8e2fff78-0d46-490c-a94c-db5f69109cc2" />🔥 Features
- Unified Workflow - Replaces the 3-node chain (
VAE Encode→Set Reference Latent×2) with a single node - Memory Efficient - Encodes pixels only once and reuses the latent for both positive and negative conditioning
- Native Compatibility - Uses ComfyUI's internal
node_helpers.conditioning_set_valuesto ensure 100% compatibility with edit models and reference-based generation - Safe VAE Handling - Automatically handles different return formats from
vae.encode()across various ComfyUI builds - Clean API - No extra widgets or presets. Just inputs and outputs
🔌 Inputs & Outputs
| Input | Type | Description |
| :--- | :--- | :--- |
| positive | CONDITIONING | Positive prompt conditioning |
| negative | CONDITIONING | Negative prompt conditioning |
| pixels | IMAGE | Reference image to encode |
| vae | VAE | VAE model for encoding |
| Output | Type | Description |
| :--- | :--- | :--- |
| positive | CONDITIONING | Conditioning with applied reference latent |
| negative | CONDITIONING | Conditioning with applied reference latent |
🦊 RS Outpaint
Interactive outpainting mask node with visual crop controls, preset management, and batch workflow support
<img width="1419" height="709" alt="Screenshot_2" src="https://github.com/user-attachments/assets/625b6043-688f-4bb2-a8eb-7a486f5f02f8" /> <br> <img width="1613" height="749" alt="Screenshot_1" src="https://github.com/user-attachments/assets/45625ce8-84b8-4c5d-a05f-203128a35533" />🔥 Features
RS Outpaint is a custom ComfyUI node that turns mask/crop definition into an interactive, visual process. Instead of manually calculating coordinates or relying on static crops, you can drag, resize, and pan the crop region directly on the preview canvas.
The node pauses the queue until you confirm the settings, then outputs a ready-to-use control image, alpha mask, and precise dimensions. It also includes a batch preset system that remembers your crop settings and applies them automatically to subsequent images in a sequence.
❗ All changes in the node (setting the mask, creating and applying presets, replacing colors, etc. settings) are available only when it is on pause in generation - "foolproof"
- Visual Mask Editor — Drag, resize, and position the crop area directly on the image preview
- Pause & Approve — Workflow pauses after first execution, waiting for your confirmation
- Batch Processing — Two batch modes for automated workflows. Auto-resets when the queue finishes
- Preset System – Save, load, rename, and delete presets crop configurations.
- Grid Snapping — All dimensions snap to 16px grid for clean, model-friendly outputs
- Aspect Ratio Lock — Switching 🔒🔓 between maintaining crop proportions and freely choosing the mask size
- Quick Presets — One-click aspect ratios: 16:9, 9:16, 21:9, 4:3, 1:1, and more
- Smart Snapping — Align crop to center, edges, or fit source dimensions
- Real-time UI – Zoom (scroll), pan (middle-drag), instant dimension readouts, and padding indicators
- Color Mask and Background — Selecting the color for the mask and background when using the mask_image output
- Padding Indicators — Visual labels show generated padding areas (▲▼◀▶)
- Keyboard Shortcuts — Arrow keys to nudge crop box (Shift for 4× step)
- Heartbeat — mechanism to prevent freezes
🪛 Usage
❗ The ⚙️ BATCH, ✔️ ACCEPT, and ❌ CANCEL buttons appear only after the generation is started.
- When receiving an image, the node pauses during the generation process. During the pause, you set the parameters to get the result you need and press the ✔️ ACCEPT button. The finished image with the mask goes to the following nodes according to your workflow. The parameters of this image are cached on the server, so when you restart generation with the same image, the node will give exactly the same result as when it was first generated. This is useful if you process this image in subsequent nodes with different parameters.
- If you need to edit the parameters for this image, you can press the 🔄️ Reset button. The cache on the server will be erased, and the next time the node is generated, it will consider the resulting image as new and pause for editing.
- ❗ When a new image is received, the node always pauses for editing.
Mode 1: Standard Single Image
Use Case: Process one image at a time with manual confirmation
- Input: Single image (e.g., from
Load Imagenode) - Behavior:
- Node pauses and displays the image
- Adjust the crop frame and mask settings
- Click ✔️ ACCEPT to confirm or ❌ CANCEL to skip
- Each new image requires manual confirmation
Example Workflow:
Load Image → RS Outpaint → [Your Model] → Save Image
Mode 2: Single Image Batch
Use Case: Generate multiple variations of the same image with identical crop settings
- Input: Single image
- Behavior:
- First image: Manual confirmation required
- Subsequent runs with the same image: Automatically applies saved crop settings
- Batch resets after queue completion
How to Use:
- Enable ⚙️ BATCH SINGLE IMAGE button
- Confirm the first image with ✔️ ACCEPT
- Run the queue multiple times with the same image
- Batch automatically resets when queue finishes
Example Workflow:
Load Image → RS Outpaint → [Multiple Model Variations] → Save Image (×N)
Mode 3: Multi-Image Batch
Use Case: Process multiple different images with the same crop settings
- Input: Multiple images (e.g., from
Load Images From Directorynode) - Behavior:
- First image: Manual confirmation required
- All subsequent images in the queue: Automatically apply saved crop settings
- Batch resets after queue completion
How to Use:
- Enable ✨ BATCH MULTI IMAGE button
- Confirm the first image with ✔️ ACCEPT
- All remaining images in the queue process automatically
- Batch automatically resets when queue finishes
Example Workflow:
Load Images From Directory → RS Outpaint → [Your Model] → Save Image (×N)
Mode 4: Semi-Batch (Multi-Image with Manual Control)
Use Case: Process multiple images with individual adjustments for each
- Input: Multiple images (e.g., from
Load Images From Directorynode) - Behavior:
- Each image pauses for manual confirmation
- Adjust crop settings per image as needed
- Images flow automatically from the loader, but require individual approval
Example Workflow:
Load Images From Directory → RS Outpaint → [Your Model] → Save Image
Interface Controls
Canvas Controls
- Drag: Move the crop frame
- Resize Handles: Adjust frame dimensions (corners and edges)
- Mouse Wheel: Zoom in/out
- Middle Mouse Drag: Pan the canvas
- 100% Button: Reset zoom to default
Toolbar
- W/H Inputs: Manually enter crop dimensions (snaps to 16px grid)
- 🔓/🔒 Aspect Lock: Lock/unlock aspect ratio
- ️ Reset: Reset crop to full image size and clear all caches
Snap Buttons
Quick positioning:
- center: Center the crop
- top/bottom/left/right: Align to edges
- fit W: Fit to image width
- fit H: Fit to image height
Color Controls
- mask: Color for masked areas (default: red)
- bg: Background color for outpaint areas (default: dark gray)
Batch Controls
- ⚙️ BATCH SINGLE IMAGE: Enable batch mode for same image (mutually exclusive with multi-batch)
- ✨ BATCH MULTI IMAGE: Enable batch mode for different images (mutually exclusive with single-batch)
⭐ Preset Management
- 💾 Save preset: Save current crop configuration
- 📂 Select preset: Load saved configuration
- Presets store: crop dimensions, position, colors, and aspect ratio lock
Technical Details
Grid System
- All dimensions snap to 16px grid for compatibility with most models
- Minimum dimension: 32px
- Default padding: 30% of image height
Cache Behavior
- Frame cache stores the last processed image hash
- Approved crops are cached per image hash
- Batch presets are stored per node instance
- All caches clear on: Reset button, queue completion, or node removal
💡 Tips & Best Practices
- For consistent results: Use batch modes to ensure identical crop settings across multiple generations
- For fine-tuning: Use semi-batch mode (Mode 4) to adjust each image individually
- Preset workflow: Save your favorite crop configurations as presets for quick reuse
- Zoom for precision: Use mouse wheel to zoom in when making precise adjustments
- Snap buttons: Use snap controls for quick alignment instead of manual positioning
↔️ Inputs and Outputs:
Input :
image - Source image for outpainting
Output :
control_image - Image with masked area (gray padding where generation will occur)
control_mask - Binary mask: 0 = keep original (black), 1 = generate new content (white)
mask_image - Makes an image from a mask
width - Final output width (after optional resize)
height - Final output height (after optional resize)
🦊 RS Ref 2 Latent
A lightweight node that encodes a reference image into latent space and injects it into positive/negative conditioning for reference-based generation workflows.
<img width="490" height="286" alt="Screenshot_1" src="https://github.com/user-attachments/assets/d8d41f90-765e-4618-84b0-f54af656f1f5" />🔥 Features
- Image Processing - Takes reference image and encodes it through VAE
- Conditioning Injection - Automatically adds reference latents to both positive and negative conditioning
- Automatic Size Handling - Intelligently scales image dimensions to match VAE requirements
- Clean & Simple - No unnecessary complexity - just reference image → latent → conditioning
- Compatible - Works with all VAE-based models
↔️ Inputs and Outputs
| Input | Type | Description |
|-------|------|-------------|
| vae | VAE | VAE model used to encode the image into latent space |
| image | IMAGE | Reference image to encode |
| positive | CONDITIONING | Positive conditioning from CLIP text encoder |
| negative | CONDITIONING | Negative conditioning from CLIP text encoder |
| Output | Type | Description |
|--------|------|-------------|
| positive | CONDITIONING | Modified positive conditioning with reference latents |
| negative | CONDITIONING | Modified negative conditioning with reference latents |
| latent | LATENT | Encoded reference image as latent |
🪛 Usage
- Input Processing: The node receives your reference image and VAE
- Size Calculation: Automatically calculates optimal dimensions (multiples of 64 for most VAEs)
- Encoding: Upscales the image using Lanczos interpolation and encodes it through VAE
- Conditioning Injection: Adds the encoded latent to both positive and negative conditioning under the key
reference_latents - Output: Returns modified conditioning and the latent representation
🦊 RS Image Compare
A node that provides an interactive image comparison interface with zoom and pan controls
<img width="723" height="933" alt="Screenshot_6" src="https://github.com/user-attachments/assets/06e78014-f95b-4064-8d1f-9a93992f72f6" />🔥 Features
- Side-by-side comparison - Compare two images using an interactive slider
- Zoom control - Zoom in from 1.0x to 10.0x with precise control
- Pan controls - Pan horizontally and vertically to explore zoomed images (-100% to +100%)
- Interactive slider - Drag the divider to reveal more of either image
- Reset functionality - Individual reset buttons for each parameter + global "Reset All" button
- Auto-reset - Parameters automatically reset to defaults when new images are loaded
🪛 Usage
Slider - Drag the vertical divider left or right to compare images
- Left position: Shows only
image_2 - Right position: Shows only
image_1 - Middle position: Shows both images equally
Zoom - Adjust zoom level from 1.0 to 10.0
- Drag the slider or click anywhere on the slider track to jump to that position
- Click the 🔃 button to reset to 1.0
Pan H - Horizontal panning from -100% to +100%
- Works in conjunction with zoom to navigate the image
- Click the 🔃 button to reset to 0
Pan V - Vertical panning from -100% to +100%
- Works in conjunction with zoom to navigate the image
- Click the 🔃 button to reset to 0
🔄 Reset All Parameters - Reset all controls (Zoom, Pan H, Pan V) to their default values
⚙️ Technical Details
All pan and zoom operations are performed relative to the image center
Pan values are expressed as percentages of the zoomed image dimensions
Images are automatically scaled to fit the display area while maintaining aspect ratio
🔎 Use Cases
Before/after image comparisons
Quality assessment between different models or configurations
Detailed inspection of image differences at various zoom levels
🦊 RS Load Image
A node for load image and creating a spline mask
<img width="800" height="715" alt="RS Load Image1" src="https://github.com/user-attachments/assets/c5150b6a-88b6-4e2a-86fa-7cd70346cab8" />🔥 Features
The node has the functionality of the native Load Image node, but instead of the native mask editor, a built-in spline editor is used. More accurate selection based on the principle of the Lasso tool from Photoshop.
🪛 Usage
The node is ready for use immediately after it is added. Images are added using the "🎨 IMAGE" (images from the input folder) and "🖼️ UPLOAD IMAGE" (images from any folder on your PC) buttons. You can scale the node to a convenient size to more accurately place the points of the spline. Incorrectly positioned points can be deleted by left-clicking with the CTRL key held down. To remove all points from the preview area, click the "🔴 CLEAR POINTS" button.
↔️ Inputs and Outputs:
The IMAGE output returns the original image unchanged. The MASK output returns a black and white mask where the white area corresponds to the drawn polygon.
</details> <details> <summary>🦊 RS Intermediate Spline Mask</summary>🦊 RS Intermediate Spline Mask
An interactive node for creating intermediate spline masks
<img width="579" height="804" alt="Screenshot_4" src="https://github.com/user-attachments/assets/1072de6b-f5bb-46c8-bbcb-321c499a7810" />🔥 Features
Node allows you to pause the workflow at the image processing stage, manually select the desired area and continue generation without completely restarting the process. More accurate selection based on the principle of the Lasso tool from Photoshop.
The ⚙️ BATCH button enables continuous processing mode, allowing the node to reuse the same mask across multiple queue iterations without requiring manual re-drawing.
🪛 Usage
When this node is reached, pipeline execution is automatically suspended. A preview of the input image is displayed in the node's interface. The user can left-click to add polygon points. Incorrectly positioned points can be deleted by left-clicking with the CTRL key held down.
The "✔️ ACCEPT" button confirms the created mask, after which the node completes processing and transmits the data further according to the scheme. The "🔴 CLEAR POINTS" button clears all the drawn points for redrawing. It is important that after using this button, you do not need to press the Prompt Queue again, just draw a new mask and press "✔️ ACCEPT". The "❌ CANCEL" button completely interrupts the process and resets the node status.
Single Run (Default)
- Queue prompt → node pauses, shows image
- Draw mask on overlay
- Click ✔️ ACCEPT
- Processing continues normally
Batch Run
- Set the value for batch processing in the Batch Count menu (located next to the RUN button)
- Queue prompt → node pauses, shows image
- Draw mask on overlay
- Click ️ BATCH (button turns orange)
- Click ✔️ ACCEPT — mask is saved, queue continues
- On next iteration: no pause, saved mask is applied automatically
- Repeat until
Batch Countis exhausted or queue is stopped
Stopping Batch Mode
Batch mode is automatically deactivated in the following cases:
- ❌ CANCEL button is clicked — stops the queue and clears the saved mask
- Queue completes — after the last iteration finishes, batch mode resets automatically (~2 seconds delay)
- Node is removed from the graph — saved mask is cleared
↔️ Inputs and Outputs:
The IMAGE input accepts an image from any previous node. The IMAGE output returns the original image unchanged. The MASK output returns a black and white mask where the white area corresponds to the drawn polygon.
</details> <details> <summary>🦊 RS Image Selector</summary>🦊 RS Image Selector
Node for Interactive Batch Image Selection
🔥 Features
- Interactive Grid View - Display all batch images in a responsive grid layout
- Multi-Select Support - Click to select/deselect individual images
- Smart Auto-Resize - Node automatically adjusts size based on image count
- Heartbeat System - Robust connection monitoring between frontend and backend
- Auto-Cleanup - Proper resource cleanup on node removal or workflow close
🪛 Usage
Buttons
➕ SELECT ALL - Select all images in batch
⭕ DESELECT ALL - Clear all selections
✔️ ACCEPT - Confirm selection and continue
❌ CANCEL - Cancel and interrupt generation
Continue Workflow
Click "✔️ ACCEPT" to pass selected images to next nodes. Only selected images will be processed downstream
⚠️ Reminder
The generation process will pause indefinitely until you click "✔️ ACCEPT", "❌ CANCEL" or close the workflow or the ComfyUI page.
</details> <details> <summary>🦊 RS MultiLatent</summary>🦊 RS MultiLatent
Universal latent generation node - automatically adapts to any VAE architecture.
<img width="445" height="622" alt="Screenshot_3" src="https://github.com/user-attachments/assets/70994d2c-8a64-4f43-84b9-a2eea57df3fb" />🔥 Features
- Automatic VAE Detection - reads
latent_channelsandscale_factordirectly from VAE - Universal Compatibility - works with SD1.5, SDXL, Flux, Flux.2, Krea2, QwenImage, and many other models
- Flexible Sizing - three modes: Preset, Custom, and Megapixels
- 100+ Presets - extensive library of ready-to-use resolutions
- Smart Device Handling - automatically matches VAE device and dtype
🪛 Usage
- Connect VAE: Plug any VAE into the
vaeinput - Choose size mode:
- Preset: Select from 100+ predefined resolutions
- Custom: Manually enter width and height
- Megapixels: Specify target resolution in MP with aspect ratio
- Connect to sampler: Use the
latentoutput with KSampler or other nodes
⚙️ Settings
size_mode: Size definition mode
Preset- Use predefined resolutionsCustom- Manual width/height inputMegapixels- Target resolution in megapixels
preset (only for Preset mode): Choose from 100+ resolutions including:
- Square formats (512×512 to 2016×2016)
- Portrait formats (4:5, 3:4, 2:3, 9:16, 21:9, etc.)
- Landscape formats (5:4, 4:3, 3:2, 16:9, 20:9, etc.)
width/height (only for Custom mode): Custom dimensions (8-4096px)
megapixels (only for Megapixels mode): Target resolution (0.1-10.0 MP)
aspect_ratio (only for Megapixels mode): 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, 9:21, 4:5, 5:4
batch_size: Number of latent images to generate (1-64)
</details> <details> <summary>🦊 RS Image to Latent & 🦊 RS Image to Latent (simplified)</summary>🦊 RS Image to Latent & 🦊 RS Image to Latent (simplified)
A powerful and user-friendly ComfyUI node that converts images to latents with intelligent size optimization.
<img width="973" height="646" alt="Screenshot_1" src="https://github.com/user-attachments/assets/7b038c0f-a3a2-4034-8906-c0e01b6e4480" />🦊 RS Image to Latent
🔥 Features
- Multiple sizing modes - Auto, Preset, Custom, or Megapixels
- VAE-aware - Automatically detects divisibility requirements
- Batch processing - Create multiple identical latents at once
- Smart upscaling - Choose from multiple upscale methods
- Clean interface - No technical clutter, just what you need
🪛 Usage
Resolution control - Ensure consistent sizes across your workflow
VRAM optimization - Use megapixels mode to stay within limits
Auto mode - Preserves original proportions
Batch generation - Create multiple variations from one image
🎯 Modes Explained
Auto
Preserves original image size and only rounds to meet VAE divisibility requirements. No unexpected upscaling.
Preset
Choose from 50+ common resolutions including:
- Square: 512×512 to 1920×1920
- Portrait: 3:2, 3:4, 9:16 and more
- Landscape: 4:3, 16:9, 21:9 and more
Custom
Manually enter width and height (must be multiples of 8).
Megapixels
Set target megapixels with specific aspect ratio. Perfect for controlling VRAM usage.
🔧 Rounding Modes
- auto - Picks the nearest valid size (recommended)
- shrink - Only reduces size, never increases
- expand - Only increases size, never reduces
↔️ Input and output:
Input:
image - Input image to convert to latent
vae - VAE model for encoding (auto-detects divisibility)
Output:
latent - The encoded latent tensor
width_px - Final width in pixels
height_px - Final height in pixels
width_latent - Latent width (width/8)
height_latent - Latent height (height/8)
🦊 RS Image to Latent (simplified)
A simplified node that converts images to latent with intelligent size optimization.
🔥 Features
- Minimum settings - Only batch size
- Default settings:
Automatically determines the multiplicity from VAE
Rounds the image size to a multiple of the value
If the size has changed, it will be resized via lanczos
If it is already multiple, it encodes directly without a recycle
Supports batch_size to create a batch of identical latents
Returns 3 outputs: latent, width_px, height_px
🦊 RS Crop Image and 🦊 RS Insert Crop
An interactive node that allows you to visually crop an image directly within the node interface. Unlike standard Crop nodes, here you see the image and draw the crop rectangle with your mouse — making the process precise and intuitive.
The main feature is the Multiple mode, which guarantees that the cropped image size will be a multiple of a specified number (4, 8, 16, 32, or 64). This is critical when working with VAEs and generative models (SDXL, FLUX, SD 1.5б etc.) that expect certain size multiples.
With further insertion of the cut fragment after its modification back into the original image.
Automatically detect and crop regions of interest using masks. When a mask is connected, the node analyzes it and sets the crop area to the bounding box of all non-zero pixels.
Usage only image
<img width="1380" height="690" alt="Screenshot_2" src="https://github.com/user-attachments/assets/d502da57-ea21-4660-89eb-5839bf966735" />Usage with mask
<img width="1526" height="773" alt="Screenshot_2" src="https://github.com/user-attachments/assets/edeaf451-f620-40d4-8a62-5b1e36354b30" />Usage Insert Crop
🔥 Features
- Interactive cropping — the image is displayed directly in the node, the rectangle is drawn with the mouse
- Moving - Dragging the selected area
- Process pause - Workflow waits for confirmation before continuing
- Visualization - Real-time area size display
- Three actions — Accept, Reset, Cancel
- Smart alignment — Automatic size snapping to a chosen multiple
- Reverse paste support — The
CROP_DATAoutput contains precise coordinates for a second node that can paste the crop back into the original image - State persistence — Rectangle parameters are saved in the workflow
- Boundary protection — The rectangle never leaves the image bounds
- Automatic Bounding Box Detection — Calculates crop coordinates from the extreme points of the mask (leftmost, rightmost, top, bottom)
- Smart Thresholding — Uses a 0.5 threshold to determine active mask pixels
- Seamless Integration — Works with existing multiple_mode for grid-aligned cropping
- Visual Feedback — Crop rectangle appears automatically on the overlay when mask is connected
🦊 RS Insert Crop is a node that allows you to seamlessly insert a previously cut fragment back into the original image after it has been modified by the workflow nodes.
- Crop Data - Inserting a fragment into the original image using the previously obtained precise cutout parameters.
🪛 Usage only image
🦊 RS Crop Image
Connect the image to the IMAGE input.
Run queue (queue request) — the node will pause operation and display the clipping area as a rectangle.
Adjust the rectangle borders:
- Drag the rectangle — move it entirely
- Drag the corner markers — resize the rectangle
If necessary turn on "Multiple" and select a multiplier.
Click ✔️ ACCEPT button — the node will continue the queue operation and output the cropped image.
🪛 Usage with mask
Connect your image to the image input
Connect a mask to the mask input
The crop area will automatically adjust to fit the mask boundaries
If multiple_mode is ON, the crop box will be aligned to the specified multiple (8, 16, 32, 64, etc.)
Click ✔️ ACCEPT to apply the crop or adjust manually
Button:
✔️ ACCEPT - Confirm the allocation and continue workflow
🔄 RESET - Reset the selection and select again
❌ CANCEL - Cancel and interrupt generation
🦊 RS Insert Crop
Connect the original image to the Original Image input.
Connect the embedded and modified fragment to the Cropped Image input.
Connect the node with the text Crop Data.
🎯 Use Cases
1. Preparing a crop for VAE/generation
Enable Multiple = ON, choose 8 (for SD 1.5 / SDXL) or 16/64 (for FLUX). The result is guaranteed to be accepted by the VAE without warnings about non-multiple sizes.
2. Precise region editing
Crop the desired area → send it to an inpaint node → after generation, paste the result back using CROP_DATA. The reverse paste will be pixel-perfect.
3. Comparing results on the same region
Draw a rectangle, save the parameters → run different models/seeds through the same crop → CROP_DATA stays consistent between runs.
4. Isolating a face/object
Scale up the node, draw a precise rectangle around a face, send it to a face-swap or restoration pipeline.
⚠️ Reminder
The generation process will be suspended indefinitely until you click "✔️ ACCEPT", "❌ CANCEL" or close the workflow or the ComfyUI page.
</details> <details> <summary>🦊 RS Styles Loader</summary>🦊 RS Styles Loader
A node designed for managing, combining, and saving styles from CSV files. The node generates ready-made Positive and Negative promptes based on selected styles, providing an advanced and intuitive interface.
<img width="572" height="720" alt="Screenshot_1" src="https://github.com/user-attachments/assets/2ca33792-d826-482a-b7c0-636ea63005ac" />🔥 Features
- Download CSV files - Upload your files with styles directly through the interface
- Tree structure - Styles are organized by folders (categories)
- Visual selection - User-friendly interface with drop-down lists
- Bypass styles - Turn styles on/off without deleting them from the list
- Combining - Multiple styles are combined into one prompt
- Automatic recycle - The height of the node automatically adjusts to the number of styles (up to 10 visible lines), after which convenient mouse wheel scrolling is enabled
- Save to workflow - All settings are saved along with the project
⭐ Favorites System
- Quick access to frequently used styles via the FAVORITES button.
- Add to favorites directly from the style selection menu (star icon).
- Global Conservation - Favorites are stored on the server (
favorites.json) and is available for all nodes in any workflow.
💾 Preset System
- Save / Load: - Save and download complete sets of styles (along with the selected CSV file) in one click.
- Management: - Remove unnecessary presets directly from the download menu.
🪛 Usage
Buttons
SELECT CSV FILE - Select the desired CSV file from the list of files that you have already uploaded earlier.
📂 UPLOAD NEW CSV FILE - Download a new CSV file from anywhere on your PC. It will automatically appear in the styles folder and in the future you will be able to select it with the "SELECT CSV FILE" button.
➕ ADD STYLE - Choosing the styles you need
🔴 Clear All - Instantly clears the list of active styles
🔄️ Reset Size - Resets the node size to the default size (by the number of styles) if you manually stretched it
💾 Save - Saves all active styles to a preset (along with the name of the selected CSV file)
📂 Load - Loads the saved preset (along with the CSV preset file)
🟢 - Bypass on/off. You can choose an infinite number of styles and change them to create the combination you need.
❌ - Removing a style from the panel
🎨 Styles
You can use your own styles or find them in the ComfyUI community
For example:
https://github.com/vaulthunt3r/ComfyUI-Style-Prompts-Collection
https://github.com/Art-xmaster/comfyui-AGSoft/tree/main/styles
⚠️ Notes
The styles, favorites and presets folders is created automatically at the first startup.
When deleting a node from workflow, the uploaded CSV files are not deleted.
To update the list of files after adding CSV manually, restart ComfyUI.
🦊 RS Last Frame
A lightweight ComfyUI node that extracts the last frame from any video input.
🔥 Features
- Universal Input Support — Accepts native VideoFromFile objects (ComfyUI's built-in video loader), standard IMAGE tensors (VHS, Image Batch), and dictionary formats
- Zero Dependencies — Works out-of-the-box without requiring Video Helper Suite or other external libraries
- Automatic Format Detection — Intelligently handles different tensor dimensions [F, H, W, C], [B, F, H, W, C], or channel-first formats
- Memory Efficient — Extracts frames without unnecessary copying or conversion
🪛 Usage
If video has only 1 frame, that frame is returned unchanged
Automatically handles batched inputs by taking the first batch element
Channel permutation applied automatically if decoder outputs [F, C, H, W]
Compatible with ComfyUI v1.0+ and all major video loading extensions
↔️ Input and output:
Input: video_frames (* — Universal)
Accepts:
- IMAGE tensor from VHS loaders, Image Batch, or standard image nodes
- VideoFromFile object from ComfyUI's native Load Video node
- Dictionary with frames, images, or video keys
Output: IMAGE (torch.Tensor)
Single frame tensor with shape [1, H, W, C] — ready for VAE encoding, preview, or any image processing node.
🦊 RS LoRA Loader
A powerful, highly customizable node for managing multiple LoRAs. It features a sleek custom interface, a robust preset system, drag-and-drop reordering, and seamless integration with the Civitai API for fetching metadata and trained words.
<img width="1078" height="696" alt="Screenshot_2" src="https://github.com/user-attachments/assets/41171801-a066-4f82-8416-dd16d1ad869e" />🎨 Advanced Custom UI
- Visual Multi-LoRA Management - Add, remove, and reorder multiple LoRAs with drag-and-drop support.
- Custom CLIP Toggle - A dedicated, visually distinct button to enable/disable CLIP application per node. When the clip input is turned off, the node operates in the "model only" mode.
- Enabling/disabling LoRA - the disabled LoRA is ignored by the workflow
- Precision Strength Control - Adjust LoRA strength using
+/-buttons or direct numeric input. - Auto-Resizing & Scrollable List - The node automatically adjusts its height, with smooth scrolling for long lists.
- Quick update - When adding a new LoRA to the 'loras' folder, you do not need to reload ComfyUI or the browser page. Just click the ✔️ Update LoRA list button.
- Tag Editing - Many loras rely on resources other than Civitai. You can register the tags for such loras manually.
Adding and Managing LoRAs
- Click ➕ Add LoRA to open the selector. Search or browse the tree, and click a LoRA to add it.
- Use the ⋮⋮ handle on the left of each row to drag and drop LoRAs into your desired order.
💾 Preset System
- Save & Load - Save your current LoRA configurations (including strengths and enabled states) as named presets.
- Quick Access - Instantly apply complex LoRA stacks with a single click.
Smart LoRA Selector
- Tree View & Search - Easily find LoRAs using a structured folder tree or a fast, real-time search bar.
- Visual Indicators - Already added LoRAs are marked with a checkmark to prevent duplicates.
🌐 Civitai Metadata Integration (Info Popup)
- Instant Info - Click the
ℹ️icon on any LoRA row to open a detailed popup. - Fetch from Civitai - Automatically fetches the model's true name, description, and tags directly from Civitai.
- Getting metadata - If no data is found, click the 🌐 Fetch from Civitai button.
- Note: This may take a few seconds on the first run.
- Local Caching - Fetched metadata is saved locally in the
rayko_lora_datafolder. Subsequent views are instant and require no internet connection.
📋 One-Click Tag Copying
- Click to Copy - Click on any individual green tag chip in the Info popup to instantly copy it to your clipboard and auto-close the window.
- 📋 Copy All - A dedicated button to copy all trained words/tags at once.
The principle of adding a tag:
One line is one tag.
If it is written in one line, even separated by commas:
(1tag, 2tag, 3tag) is one tag.
If it is written in several lines, there are several tags:
1tag
2tag
3tag
is three tags.
🔔 Visual Feedback
- Custom toast notifications for successful actions, errors, and clipboard events.
🦊 RS Models Loader
A powerful universal model loading node that combines UNET, CLIP (with additional dual-clip support), VAE and LoRa downloads in a single interface and the function of saving model and LoRA configurations to preset presets.
<img width="598" height="644" alt="Screenshot_1" src="https://github.com/user-attachments/assets/b1c9da4a-a505-4694-be28-0024e8241821" />🔥 Features
- Unified Loading - Load UNET, CLIP, VAE, and multiple LoRAs in one node
- Dual CLIP Support - Toggle between single CLIP mode (CLIPLoader) and dual CLIP mode (DualCLIPLoader) for models like Flux, SD3, Hunyuan DiT, and PixArt
- Visual Multi-LoRA Management - Add, remove, and reorder multiple LoRAs with drag-and-drop support.
- LoRA Management - Add, enable/disable, and adjust strengths for multiple LoRAs with an intuitive visual interface
- Enabling/disabling LoRA - the disabled LoRA is ignored by the workflow
- Persistent Storage - LoRA configurations are saved per node and persist across sessions
- Folder Structure - Browse LoRAs with folder tree navigation
- Search Functionality - Quickly find LoRAs by name
- Presets of model sets - Save model sets to presets for quick switching between models
- Presets of LoRA sets - Save LoRA sets to presets for quick switching between models
- Quick update - When adding a new LoRA to the 'loras' folder, you do not need to reload ComfyUI or the browser page. Just click the ✔️ Update LoRA list button
- Tag Editing - Many loras rely on resources other than Civitai. You can register the tags for such loras manually
- Pop-up messages - Confirmation of successful or unsuccessful processes in the node
🌐 Civitai Metadata Integration (Info Popup)
- Instant Info - Click the
ℹ️icon on any LoRA row to open a detailed popup. - Fetch from Civitai - Automatically fetches the model's true name, description, and tags directly from Civitai.
- Getting metadata - If no data is found, click the 🌐 Fetch from Civitai button.
- Note: This may take a few seconds on the first run.
- Local Caching - Fetched metadata is saved locally in the
rayko_lora_datafolder. Subsequent views are instant and require no internet connection.
📋 One-Click Tag Copying
- Click to Copy - Click on any individual green tag chip in the Info popup to instantly copy it to your clipboard and auto-close the window.
- 📋 Copy All - A dedicated button to copy all trained words/tags at once.
The principle of adding a tag:
One line is one tag.
If it is written in one line, even separated by commas:
(1tag, 2tag, 3tag) is one tag.
If it is written in several lines, there are several tags:
1tag
2tag
3tag
is three tags.
🔔 Visual Feedback
- Custom toast notifications for successful actions, errors, and clipboard events.
📃 Notes
- When dual CLIP mode is disabled, clip_name2 is visible but disabled (grayed out)
- The node automatically falls back to single CLIP mode if clip_name2 is empty
- LoRA strengths can be set independently for model and CLIP
- All settings are saved with your workflow and persist across ComfyUI sessions
🦊 RS Models Loader Pro
The ultimate all-in-one loader for ComfyUI.
RS Models Loader Pro is an advanced, extended version of the standard RS Models Loader. It combines UNET, CLIP, VAE, and a powerful LoRA management system into a single, highly customizable node.
Designed for complex workflows, the Pro version introduces dual model and dual VAE support, making it the perfect hub for multimodal pipelines, refiner setups, and advanced video/audio generation.
🔥 Features
- Unified Loading - Load UNET, CLIP, VAE, and multiple LoRAs in one node
- Dual UNET Support - Load up to two diffusion models simultaneously
- Dual CLIP Support - Load up to two clip simultaneously for models like Flux, SD3, Hunyuan DiT, and PixArt
- Use Case 1: Base + Refiner workflows (e.g., SDXL Base + SDXL Refiner) without needing extra loader nodes
- Use Case 2: Complex multimodal architectures (e.g., Wan2.1 that require separate High noise and Low noise models)
- Dual VAE Support - Load up to two independent VAEs
- Use Case 1: Mix a high-quality standard VAE for the final render with a fast preview VAE (like TAESD) for quick iterations
- Use Case 2: Handle separate Video and Audio VAEs for advanced multimodal generation
- Visual Multi-LoRA Management - Add, remove, and reorder multiple LoRAs with drag-and-drop support
- LoRA Management - Add, enable/disable, and adjust strengths for multiple LoRAs with an intuitive visual interface
- Enabling/disabling LoRA - the disabled LoRA is ignored by the workflow
- Persistent Storage - LoRA configurations are saved per node and persist across sessions
- Folder Structure - Browse LoRAs with folder tree navigation
- Search Functionality - Quickly find LoRAs by name
- Presets of model sets - Save model sets to presets for quick switching between models
- Presets of LoRA sets - Save LoRA sets to presets for quick switching between models
- Quick update - When adding a new LoRA to the 'loras' folder, you do not need to reload ComfyUI or the browser page. Just click the ✔️ Update LoRA list button
- Tag Editing - Many loras rely on resources other than Civitai. You can register the tags for such loras manually
- Pop-up messages - Confirmation of successful or unsuccessful processes in the node
🧹 Clean Slate Defaults
All model, CLIP, and VAE slots now default to "None". This gives you a clean, uncluttered interface to build your exact pipeline from scratch
🌐 Civitai Metadata Integration (Info Popup)
- Instant Info - Click the
ℹ️icon on any LoRA row to open a detailed popup. - Fetch from Civitai - Automatically fetches the model's true name, description, and tags directly from Civitai.
- Getting metadata - If no data is found, click the 🌐 Fetch from Civitai button.
- Note: This may take a few seconds on the first run.
- Local Caching - Fetched metadata is saved locally in the
rayko_lora_datafolder. Subsequent views are instant and require no internet connection.
📋 One-Click Tag Copying
- Click to Copy - Click on any individual green tag chip in the Info popup to instantly copy it to your clipboard and auto-close the window.
- 📋 Copy All - A dedicated button to copy all trained words/tags at once.
The principle of adding a tag:
One line is one tag.
If it is written in one line, even separated by commas:
(1tag, 2tag, 3tag) is one tag.
If it is written in several lines, there are several tags:
1tag
2tag
3tag
is three tags.
🔔 Visual Feedback
- Custom toast notifications for successful actions, errors, and clipboard events
📃 Notes
- LoRA strengths can be set independently for model and CLIP
- All settings are saved with your workflow and persist across ComfyUI sessions
🦊 RS Prompts
Node that provides enhanced prompt management with visual controls, pause-for-edit mode, and external input toggling
<img width="1088" height="562" alt="Screenshot_1" src="https://github.com/user-attachments/assets/78c189d6-35ca-4989-8f6e-485ad8e01bf7" />🔥 Features
- Dual prompt sources - Use internal textarea or external text input
- External input toggle - Enable/disable external text input with one click
- Pause-for-edit mode - Interrupt generation, edit prompts, and continue
- Visual status indicator - Shows current prompt source and mode
- Prompt presets - Save, load, and delete prompt templates
- Clean interface - Minimal design that blends with ComfyUI
↔️ Input and output:
Inputs
| Name | Type | Description | |------|------|-------------| | clip | CLIP | CLIP model for encoding | | text_input | STRING (optional) | External prompt source |
Outputs
| Name | Type | Description | |------|------|-------------| | POSITIVE | CONDITIONING | Encoded positive prompt | | NEGATIVE | CONDITIONING | Encoded negative prompt (empty) | | PROMPT_STRING | STRING | Final prompt text |
🪛 Usage
Prompt Sources
- Local prompt: Uses text from the internal textarea
- External input: Uses text from connected
text_inputnode
The 🔘 Disable text input toggle lets you temporarily ignore external input without disconnecting cables.
Pause Mode
- Enable
⏸️ Pause for edit - When external data arrives, the node pauses and shows an overlay
- Edit the prompt as needed
- Click
APPROVE(use edited) orREJECT(use original) - Generation continues with your choice
The pause toggle stays enabled after approval, automatically pausing on next external data.
Usage Examples
Local Prompt Only
- Leave
text_inputdisconnected - Or connect but enable
🔘 Disable text input - Write prompts directly in textarea
External Prompt Source
- Connect a text node to
text_input - Disable
🔘 Disable text input - Enable
⏸️ Pause for editfor manual review
Prompt Presets
- Write your prompt
- Click
💾 Save promptand enter a name - Later click
📂 Select promptto load - Delete presets via ❌ button in the list
🖥️ Node Interface
| Control | Description | |---------|-------------| | 🔘 Disable text input | Toggle external input on/off (🔴 when disabled) | | ⏸️ Pause for edit | Enable edit mode (activates when external data arrives) | | Status indicator | Shows: 📝 Local prompt / 🔌 External input / ⏸️ WAITING FOR EDIT | | Text area | Main prompt editor | | ❌ Clear prompt | Clear the text area | | 💾 Save prompt | Save current prompt as preset | | 📂 Select prompt | Load saved prompt preset | | ✔️ APPROVE & CONTINUE | Accept edited prompt and continue | | ❌ REJECT | Keep original prompt and continue |
📂 Prompts Storage
Prompts are stored as JSON files in the prompts folder within the node's directory:
ComfyUI/custom_nodes/ComfyUI_RaykoStudio/prompts/
The folder is created automatically the first time you save the prompt.
🐛 Known Issues & Solutions
Text not saving - Check write permissions for prompts folder
Pause mode not working - Ensure toggle is ON before starting generation
🦊 RS Text Overlay Pro
Interactive ComfyUI node for overlaying text on images with real-time positioning, scaling, rotation, and rich text effects
<img width="583" height="876" alt="Screenshot_2" src="https://github.com/user-attachments/assets/0908484b-7e9d-40ed-a122-89990d63e1da" /> <img width="1778" height="1065" alt="Screenshot_1" src="https://github.com/user-attachments/assets/487b77a4-d543-48cd-bd0e-ebf2d1597641" />🔥 Features
- Interactive canvas editor — drag, scale, and rotate text overlay directly on the image
- Rich text effects — Outline, Glow, and Shadow with full parameter control
- Hybrid rendering — instant client-side preview + high-quality server-side final render
- Font system — custom font library with search and live preview
- Smart UI — collapsible sidebar sections with per-effect toggles
- Dual modes — compact widget mode inside the node + full-screen Advanced Mode editor
- Color tools — HEX input with validation + native color picker
- Multiline support — textarea with line spacing and letter spacing controls
- Text alignment — left / center / right with visual icons
- State isolation — each effect can be enabled/disabled independently; disabling resets parameters to defaults
By default, the node is displayed as a standard node with a thumbnail and a minimal set of widgets.
All changes are immediately displayed.
Clicking on the "Advanced Mode" button opens a full-screen editor where you can visually manipulate the text.
Advanced Mode:
- The canvas occupies the main part of the screen, with the settings panel on the left/right.
- The text can be dragged, resized by corners and sides, and rotated using a special pen.
- All changes are immediately displayed.
The control panel has sections: TEXT, OUTLINE SETTINGS, GLOW SETTINGS, SHADOW SETTINGS. Each section is collapsible. Controls: text field, sliders, color pickers, alignment and font selection buttons.
Interactive elements: they are highlighted when hovering, and there are pop-up windows for precise input for numeric values.
###❗Requirements
It requires the installation of the pycairo library (just install the dependencies requirements.txt )
The library is needed for high-quality text rendering and effects.
🔤 Installing Fonts
Place .ttf, .otf, or .ttc files in folder:
ComfyUI\custom_nodes\ComfyUI_RaykoStudio\fonts
Restart ComfyUI
Fonts are auto-detected on editor open. Arial.ttf is used as fallback.
🚀 Usage
- Add 🦊 RS Text Overlay Pro node to your workflow
- Connect an image to the
imageinput - Run the queue
- Configure text, effects, and position
- Click ✔️ APPLY to render the final image
Quick start
- Type your text in the TEXT section
- Pick a font and adjust size via the canvas handles
- Enable effects via toggles in OUTLINE / GLOW / SHADOW sections
- Drag the green bounding box to position the text, turn the image by the orange rotation knob
- Click ✔️ APPLY when done
⚙️ Parameters
TEXT
| Parameter | Type | Default | Description |
|---|---|---|---|
| Text | textarea | "" | Multiline text content |
| Font | select | first in library | Font family |
| Text Color | color | #FFFFFF | Fill color |
| Text Opacity | slider | 1.0 | 0.0 – 1.0 |
| Line Spacing | slider | 1.0 | 0.5 – 3.0 |
| Letter Spacing | slider | 0.0 | -20 – 100 |
| Alignment | buttons | center | Left / Center / Right |
OUTLINE SETTINGS
Enabled automatically when Thickness > 0.
| Parameter | Type | Default | Description |
|---|---|---|---|
| Thickness | slider | 0 | 0 – 50 px |
| Color | color | #808080 | Outline color |
| Opacity | slider | 1.0 | 0.0 – 1.0 |
GLOW SETTINGS
Toggle ENABLE GLOW to activate.
| Parameter | Type | Default | Description |
|---|---|---|---|
| Glow Color | color | #FFFFFF | Glow color |
| Size | slider | 100 | 0 – 200 px |
| Spread | slider | 150 | 0 – 300 px |
| Opacity | slider | 1.0 | 0.0 – 1.0 |
SHADOW SETTINGS
Toggle ENABLE SHADOW to activate.
| Parameter | Type | Default | Description |
|---|---|---|---|
| Shadow Color | color | #333333 | Shadow color |
| Offset X | slider | 10 | -30 – 30 px |
| Offset Y | slider | 10 | -30 – 30 px |
| Blur | slider | 15 | 0 – 100 px |
| Opacity | slider | 0.8 | 0.0 – 1.0 |
️ Controls
Normal Mode (inside node)
- 🔍 ADVANCED MODE button — opens full-screen editor
- ✔️ APPLY — renders and closes editor
- ❌ CANCEL — discards changes
Advanced Mode (full-screen editor)
| Action | Control |
|---|---|
| Move text | Drag inside bounding box |
| Scale | Drag corner/edge handles |
| Rotate | Drag orange handle above box |
| Zoom canvas | Mouse wheel |
| Close editor | Esc key |
| Toggle section | Click section header |
| Enable effect | Click toggle in header |
🦊 RS Color Picker
Professional color picker node with advanced features including eyedropper, color history and presets
<img width="412" height="667" alt="Screenshot_1" src="https://github.com/user-attachments/assets/13c817b7-28c8-414c-9f3c-39494c9e468a" />🔥 Features
- Visual Color Picker - Intuitive color selection with live preview
- Eyedropper Tool - Pick colors from anywhere on screen (Chrome/Edge) or from ComfyUI canvas (all browsers)
- Copy to Clipboard - Click Copy button next to the HEX values window
- Basic Colors - 8 preset colors for quick access
- Recent Colors - History of last 24 used colors (saved in localStorage)
- Multiple Outputs - HEX_INT, HEX_STR, and RGB formats
- Presets - Saving color history to preset, loading saved presets
- Clean All - The '❌ Clear All' button clears the panel of all colors
- Delete button - Appears by right-clicking on any color in the panel and deletes the selected color when clicked
🪛 Usage
- Select a color using one of these methods:
- Click the color swatch to open native color picker
- Click the palette icon (🎨) to activate eyedropper tool
- Click any preset color from the "Basic Colors" row
- Click any color from the "Recent Colors" history
- Type HEX value directly into the input field
- Connect outputs to other nodes:
HEX_INT- Integer value (e.g., 16711680 for #FF0000)
HEX_STR- HEX string (e.g., "#FF0000")
RGB- Normalized RGB values (e.g., "1.000, 0.000, 0.000")
🦊 RS Image Adjustments
A powerful interactive image adjustment node with real-time preview and professional-grade controls.
Inspired by industry standards like Adobe Lightroom and Photoshop, it offers real-time previews, advanced color grading, and an efficient batch processing mode.
🔥 Features
- Real-time Preview - See adjustments instantly with GPU-accelerated rendering
- Professional Tools - 8 adjustment categories with 40+ parameters
- Interactive UI - Custom sidebar interface with collapsible sections
- Smart Caching - Efficient preview system with LRU cache
- Batch Processing - Full support for image sequences
- LUT Support - Import and apply .cube color lookup tables
- Batch Mode - Automate your workflow! Apply the same adjustments to an entire queue of images with a single click. The node automatically detects the end of the queue and resets itself
- Non-Destructive - Preview changes before applying to your workflow
🎛️ Available Adjustments
Basic Adjustments
- Brightness: -100 to +100
- Contrast: -100 to +100
- Sharpen: 0 to +100
- Hue: -180° to +180°
- Saturation: -100% to +100%
Color Lookup (LUT)
- Load
.cubefiles - Adjustable intensity (0-100%)
- Support for 3D LUTs
Advanced Tools
- Vibrance: -100 to +100
- Clarity: -100 to +100
Levels
- Input Black: 0-255
- Gamma: 0.1-3.0
- Input White: 0-255
Exposure
- Exposure: -100 to +100
- Offset: -100 to +100
Color Balance
- Shadows, Midtones, Highlights
- Cyan/Red, Magenta/Green, Yellow/Blue channels
Black & White
- Channel mixer for monochrome conversion
- Red, Yellow, Green, Cyan, Blue, Magenta controls
Channel Mixer
- Independent RGB channel mixing
- Output Red/Green/Blue controls
Selective Color
- Target specific color ranges
- Reds, Yellows, Greens, Cyans, Blues, Magentas, Whites, Neutrals, Blacks
- CMYK adjustments per range
🪛 Usage
- Add Node: Add
RS Image Adjustmentsto your workflow - Connect Image: Connect your input image
- Run the queue: The node will pause on the first image
- Base Parameters: Use the node interface to change the basic parameters
- Open Editor: Click
✨ ADVANCEDbutton to open the sidebar with advanced correction options - Adjust: Use sliders or click values for manual input
- Preview: Changes appear in real-time
- Apply: Click
✔️ APPLYto finalize and pass to next node - Cancel: Click
❌ CANCELto discard process
Using Batch Mode
- Add Node: Add
RS Image Adjustmentsto your workflow - Connect a batch image loader: e.g., "Load Images from Directory"
- Run the queue: The node will pause on the first image
- Batch: Adjust your settings and click the BATCH button (it will turn blue)
- Apply: Click
✔️ APPLYto finalize and pass to next node - The node will now automatically apply these exact settings to all remaining images in the queue without pausing. The button will automatically reset once the queue is finished
- Cancel: Click
❌ CANCELto discard process
Quick Controls
- Node Interface: 4 basic sliders (Brightness, Contrast, Hue, Saturation)
- Sidebar: Full control panel with all parameters
- Reset All: 🔄 button to reset all parameters to defaults
- Expand/Collapse: ▶/▼ buttons to show/hide all sections
- Individual Reset: 🔄 button next to each slider
🎨 Interface Features
- Collapsible Sections: Organized parameter groups
- Color-Coded Labels: Green indicates modified parameters
- Value Input: Click any value to type exact numbers
- Live Section Headers: Modified sections highlighted in green
- Responsive Design: Adapts to different screen sizes
🦊 RS Save Image
Node for adding explanatory text to an image
🔥 Features
The node is used to save the image while preserving the workflow inside the image. You can add explanatory text to an image with a choice of background size, theme, font and its size. It is possible to add your own fonts (to the fonts folder). Use ttf and otf fonts.
If the label is not needed, leave the text field blank and the image is saved as usual.
Themes:
light - white background, black text.
dark - black background, white text.
🦊 RS Save Image Pair
The node is used to save the original and final images in a single image, while maintaining the workflow within the image
🔥 Features
The node is used to save the source and final images in a single image while maintaining the workflow within the image. You can add explanatory text to any image with a choice of background size, theme, font and size font. A reverse upscale from 1 to 0 is provided to reduce the saved image (if it is used as a sketch with a workflow inside).
It is possible to add your own fonts (to the fonts folder). Use ttf and otf fonts.
If the label is not needed, leave the text field blank and the image is saved as usual.
The node is convenient for visual understanding of the workflow contained in the image.
🪛 Usage
It is better to choose horizontal saving for portraits, and vertical saving for landscapes.
Themes:
light - white background, black text.
dark - black background, white text.
🦊 RS Image-Text
Node embeds any hidden text into the image that can be used later
<img width="507" height="761" alt="Screenshot_1" src="https://github.com/user-attachments/assets/4000d147-6531-4ea0-a9cd-eb14d863c61c" />🔥 Features
The node writes any hidden text to any png and jpeg file (jpeg is converted to png). And outputs text from images recorded in this way. You can use it instead of a Load Image (without a mask) and transfer the recorded text to the promt node. It is useful if there is an image and a prompt to it, but the image does not contain a workflow (often found on the site civitai.com).
🪛 Usage
Two modes:
Write - writes text to the uploaded image and saves it to the output folder with the prefix you specified.
Read - reads the text you wrote earlier in the uploaded image, sends the text and images further according to the scheme.
🦊 RS Loop Switch
A combined node for generating a sequence of values with automatic switching
🔥 Features
The node generates a list of INT values, automatically switching between 10 preset values based on the current cycle step. It is ideal for generating a series of images with different seeds without the need to manually change the parameters. But you can use it for any other tasks where dynamic INT changes are required.
🔌 Connection (examples)
- RS Loop Switch (output) → KSampler (seed)
- RS Loop Switch (output) → KSampler (steps)
- RS Loop Switch (output) → any INT input
🦊 ComfyUI Settings Manager
A user-friendly extension that allows you to easily backup, restore, and manage your interface settings. Never lose your custom UI layout, preferences, or configurations again!
<img width="580" height="783" alt="Screenshot_3" src="https://github.com/user-attachments/assets/2db2e5c7-055b-40c0-805d-167dde6d47e2" />🔥 Features
- Smart Backups - Save your current interface settings with custom names. If no name is provided, it automatically uses a timestamp.
- Easy Restore - Select any previous backup from a clean UI list and restore it in one click.
- Built-in Server Restart - Restoring settings requires a server restart. The extension provides a dedicated, pulsing RESTART SERVER button to make this obvious and safe.
- Auto-Refresh Polling - After restarting, the extension automatically pings the server and refreshes your browser page the moment ComfyUI is back online.
- Manage Backups - Delete old or unnecessary backups directly from the interface without leaving ComfyUI.
- Safe Naming - Automatically sanitizes custom backup names (removes invalid characters) and prevents overwriting by adding suffixes (
_1,_2) if a name collision occurs. - You can use common settings for multiple versions or assemblies of ComfyUI.
- You can create several interface configurations and change them with a couple of clicks, rather than crawling through all the settings tabs.
- It's also useful for those who mess up the interface settings a lot - you can always roll back to the previous version.
🪛 Usage
Accessing the Manager
Look for the Desktop/Monitor icon (🖥️) in the left sidebar of ComfyUI. Click it to open the Settings Manager panel.
Saving Settings (Backup)
- In the Save Interface Settings section, you will see a text field.
- (Optional) Enter a custom name for your backup (e.g.,
my_favorite_layout).- Note: If you leave it empty, the current date and time will be used.
- Click the 💾 Save Settings button.
- A green status message will appear at the bottom confirming the save. If the list of backups is open, the new backup will instantly appear at the top.
Restoring Settings
- In the Restore Interface Settings section, click 📂 Load Backups.
- A list of your saved backups will appear.
- Click ✓ Restore next to the backup you want to load.
- The button will change to ✓ Restored, and a new, pulsing orange button 🔄 RESTART SERVER will appear.
- Click 🔄 RESTART SERVER.
- The extension will automatically wait for the server to come back online and refresh your browser page automatically.
Deleting Backups
- Load your backups list.
- Click the red ✕ button next to any backup you want to remove.
- The backup is instantly deleted from the UI and the file system.
📁 File Structure
All backups are stored outside the ComfyUI directory to keep your installation clean. By default, they are saved in your user Documents folder:
📂 Documents/
── 📂 ComfyUI_Settings_Backups/
├── 📂 2026-06-09_12-40-44/
│ ── 📄 comfy.settings.json
├── 📂 my_favorite_layout/
│ └── 📄 comfy.settings.json
── ...
⚙️ Technical Notes
- Server Restart - The extension uses
os.execvto restart the Python server. If you are using a third-party launcher (like Stability Matrix or Pinokio), the server might close but not automatically reopen. In this case, simply restart your launcher manually. - Polling - After a restart, the extension pings the server every 5 seconds (up to 10 times) to detect when it's fully loaded before triggering the page reload.
🤝 Bug Reporting
If you encounter an issue or find a bug:
Check Issues section on GitHub, maybe problem is already known.
If new problem, create new Issue describing:
- ComfyUI and Python versions
- Problem description and reproduction steps
- Screenshots or error logs (if available)
📜 License
Apache License 2.0. Use at your own risk without any warranties. See the LICENSE file for details
❤️ Acknowledgments
Thanks to ComfyUI community for inspiration and support.
Special thanks to FotoSHAMAN for his fantastic ideas!
If you like this node, don't forget to star on GitHub!