ComfyUI-Mircify
A ComfyUI custom node for converting images into IRC art by processing them in pixel blocks and generating both image and text outputs with optimal color selection from a 99-color IRC palette.
This node is used with aibird to convert text prompts to IRC art that is scrolled in the IRC client.
Limitations
- As we have a limited color palette of 99 colors, at times some colors may not match perfect. Overall it matches good enough. I've found the
perceptual_weightedfollowed byweighted_manhattanto be best. - 16 colors don't work too well, but I've added this for legacy compatibility with some IRC clients that do not support 99 colors.
- IRC has a
512 - (ident + host)byte limit per line. If there's too many half blocks rendered, it may go over this limit and break the display of the ASCII art. Rendering the image with a solid background color can help with this, or using fullblock mode. - I haven't tried with many widths and heights. The current
640px x 448pxis a good fit for making ASCII art that is 80 character blocks wide and 30 character blocks hight. A smaller aspect ratio would fit a lot of half blocks better.
Workflow
An example workflow is provided in workflows/mircify_example_workflow.json.
At the moment this example is using qwen image (gguf), lightning 4 step lora with RES4LYF samplers. However any model that is decent at making pixel ansi style art can suffice.
IRC Output
Pasting the results of the created .txt file into IRC, we should be able to see the IRC art rendered in the client.
Features
- Universal Image Support: Works with any image dimensions, but remember the IRC 512 byte limit per line.
- Color Transfer Integration: Uses KMeans clustering with multiple distance methods for accurate color mapping
- Block Processing: Configurable block sizes (default 8x15 pixels)
- Half Block Mode: Option for 8x7.5 pixel blocks for finer resolution
- Dominant Color Extraction: Uses k-means clustering to find the most prominent color in each block
- Multiple Distance Methods: Choose between weighted manhattan, manhattan, euclidean, and perceptual weighted distance calculations
- 99-Color IRC Palette: Maps colors to extended IRC color palette
- 16-Color Compatibility Mode: Option to use traditional 16-color IRC palette
- Dual Output: Returns both processed image and mIRC-formatted text
- Optimized Text Output: Compressed color codes and space-efficient formatting
- Text File Export: Save IRC codes directly to text files with timestamp support
Installation
-
Clone or download this repository to your ComfyUI
custom_nodesdirectory:cd ComfyUI/custom_nodes git clone https://github.com/birdneststream/ComfyUI-Mircify -
Install dependencies:
cd ComfyUI-Mircify pip install -r requirements.txt -
Restart ComfyUI
Nodes
IRC Art Converter
Category: image/conversion
Converts images into IRC art with both visual and text output.
Inputs:
- image: Input image (any dimensions supported)
- block_width: Width of each block in pixels (default: 8)
- block_height: Height of each block in pixels (default: 15)
- half_block_mode: Enable half-height blocks (8x7.5 instead of 8x15)
- use_16_colors: Use only first 16 IRC colors for compatibility (default: False)
- distance_method: Color distance calculation method (weighted_manhattan/manhattan/euclidean/perceptual_weighted)
Outputs:
- processed_image: Visual representation of the IRC art conversion
- irc_text: mIRC-formatted text with color codes ready for IRC clients
IRC Text Saver
Category: text/output
Saves IRC-formatted text to files for easy copying.
Inputs:
- irc_text: IRC text from the converter (STRING input)
- filename: Output filename with {TIMESTAMP} placeholder support (default: "irc_art.txt")
Outputs:
- file_path: Absolute path to the saved file
Usage
-
Basic Workflow:
- Load an image
- Connect it to "IRC Art Converter"
- Connect the
irc_textoutput to "IRC Text Saver" - Run the workflow
-
Distance Methods:
- weighted_manhattan: Manhattan distance with perceptual weights (Green=1.0, Red=0.7, Blue=0.5) for better natural color matching
- manhattan: Standard Manhattan distance (L1 norm) - fastest calculation
- euclidean: Standard Euclidean distance (L2 norm) - geometric accuracy
- perceptual_weighted: Euclidean distance with CIE luminance weights for perceived brightness matching
-
Block Modes:
- Full blocks (8x15): Standard IRC character block size
- Half blocks (8x7.5): Provides finer vertical resolution
-
Color Modes:
- 99-color mode: Full extended IRC palette for maximum color accuracy
- 16-color mode: Traditional IRC colors for better compatibility
-
Text Output:
- Uses optimized mIRC color text output
- Ready to paste directly into IRC clients
- Support for {TIMESTAMP} placeholder in filenames
Color Processing
The node uses a two-stage approach:
- Color Transfer Phase: Applies KMeans clustering with configurable distance methods to map the entire image to the IRC color palette
- Block Processing Phase: Divides the color-corrected image into blocks using dominant color extraction and generates the final IRC art output
IRC Color Palette
The node uses an extended 99-color IRC palette built in. It also can support just 16 colors.
For more information about how IRC uses colors refer to these resources:
- https://modern.ircdocs.horse/formatting.html#color
- https://anti.teamidiot.de/static/nei/*/extended_mirc_color_proposal.html
Requirements
- ComfyUI
- Python 3.8+
- torch
- numpy
- scikit-learn
Credits
- Color transfer logic adapted from ComfyUI-Color_Transfer by 45uee
- Uses KMeans clustering with modified multiple distance methods for optimal color mapping
License
MIT License

