Nodes/ComfyUI-Mircify/IRC Art Converter
ComfyUI Node

IRC Art Converter

The node that turns your ComfyUI output into art you can paste into IRC

By birdneststream·Created about a year ago·Updated about a year ago· 1
IRC Art Converter
  • image
  • processed_image
  • irc_text
  • ansi_text
block_width8
block_height15
half_block_modefalse
use_16_colorsfalse
distance_methodperceptual_weighted

This is the node that makes ComfyUI do something nothing else in the ecosystem does: turn your generated image into old-school IRC art. Feed it any image and it returns a block of mIRC color codes you can paste straight into a channel - plus an ANSI version for 256-color terminals. It's the whole reason the pack exists; the other two nodes are basically its sidekicks.

Yes, it's niche. IRC in 2026 is a choice. But if you hang out in any channel that still does formatted art, or you have a soft spot for the look of 90s chat, this is the fastest way to get there from a ComfyUI graph. The author (birdneststream) built it to feed their aibird IRC bot, and their announcement post leaned into the nostalgia hard - "it beats discord" is literally the pitch. Low-engagement posts, but the couple of people who found it loved it.

The mechanism is more interesting than the niche implies, and it's a clean two-stage pipeline. First a color transfer pass runs KMeans clustering to remap the whole image onto the 99-color IRC palette (or the legacy 16-color one). Then a block processor splits the remapped image into cells - 8x15 pixels by default, the classic IRC character cell - and picks the dominant color in each block. That grid of palette colors gets serialized into text: mIRC color codes for IRC, 256-color escape sequences with half-blocks for ANSI.

Only a few inputs matter for a beginner:

  • block_width / block_height - the pixel size of each art cell. Defaults of 8 and 15 are the traditional IRC cell; a 640x448 image becomes roughly 80x30 characters, which the author says is a sweet spot.
  • half_block_mode - doubles vertical resolution using characters. Finer art, but it eats bytes per line (more on that below).
  • use_16_colors - legacy mode for ancient clients. Leave it off; 16 colors genuinely don't look good.
  • distance_method - the one that changes quality. perceptual_weighted (the default) weights RGB by luminance and is the author's own pick; weighted_manhattan is the runner-up. manhattan is fastest, euclidean is the geometric purist's option. You can honestly leave it alone.

Outputs are processed_image (a visual preview), irc_text, and ansi_text. Wire irc_text into the IRC Text Saver and ansi_text wherever you want terminal output.

Installation

ComfyUI Manager (search "ComfyUI-Mircify"), or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/birdneststream/ComfyUI-Mircify
cd ComfyUI-Mircify
pip install -r requirements.txt

Then restart ComfyUI. Requirements are torch, numpy, scikit-learn, and Pillow - scikit-learn is the only one you might not already have, and you definitely have torch. No model downloads; the example workflow uses a Qwen image GGUF with the Lightning 4-step LoRA and RES4LYF samplers, but the author is upfront that any model decent at pixel-style art works.

Gotchas

  • Empty text output? The converter only generates irc_text and ansi_text for outputs that are actually connected to something. Run it bare and both come back "". Wire them up and they appear.
  • Batch size must be 1. Feed it a batched image and it raises a ValueError instead of silently doing something weird.
  • The 512-byte line limit. IRC caps a line at 512 bytes minus your ident and host, and every rendered color character carries formatting bytes. Too many half-blocks and the line breaks mid-art. The author's fixes: render with a solid background, or drop half-block mode.
  • Colors will be slightly off. 99 colors is a small palette; that's not a bug. perceptual_weighted is the best you can do within it.
Categoryimage/conversion

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
block_widthINT81–32
block_heightINT151–32
half_block_modeBOOLEANfalse
use_16_colorsBOOLEANfalse
distance_methodCOMBOperceptual_weighted4 options: weighted_manhattan, manhattan, euclidean, perceptual_weighted

Outputs (3)

NameTypeDescription
processed_imageIMAGE
irc_textSTRING
ansi_textSTRING