ASCII Art Generator V3
Turn any image into color ASCII art that actually looks like the picture
- image
- mask
- IMAGE
This is the flagship node of the comfyui-color-ascii-art-node pack, and it's exactly what the name says: feed it an image, get back an image drawn out of colored characters instead of pixels. Not a text overlay slapped on top - the picture is actually redrawn as glyphs, cell by cell, at the same resolution as your input. It's the "I can read my cat's face in punctuation marks" novelty that somehow still works as a legit stylizer for posters, thumbnails, and album art.
Honestly? This is a niche, fun-node corner of the ecosystem - there's no serious community discourse about ASCII art in ComfyUI, and that's fine. You reach for this when you want something that looks handmade and weird, and you want it in batch. V3 processes whole batches with a per-image seed, so you can pipe an entire folder of outputs through it for a consistent set of text-poster avatars.
How it works
The pipeline is three steps, and understanding them saves you a lot of knob-turning:
- Pixelate. The input is downscaled into a grid of
pixel_sizeblocks. Because characters are taller than they are wide,aspect_ratio_correction(default 0.75) shrinks the effective cell height so the grid doesn't come out wrong-shaped. - Pick a character per cell. Each grid cell is mapped to one glyph from a charset file based on
char_selection_mode. The defaultluminance_hueblends brightness and hue; you can also pick purebrightness,hue, orsaturation. - Draw it back. Glyphs are rendered on a canvas at the input's original resolution, with the font size varied between
font_size_min(8) andfont_size_max(16) by luminance - that per-cell size variation is how it fakes shading.seedrandomizes which charset line gets used.
The inputs that actually matter
Most of the nineteen inputs are fine at defaults. The ones you'll touch:
- pixel_size (default 20) - the resolution of the character grid. Smaller = closer to the original image, but each glyph becomes tiny.
- aspect_ratio_correction - bump this up if characters start visibly overlapping or the art looks stretched.
- font_name - a dropdown of the nine fonts bundled in the pack's
font/folder (defaultChewy-Regular.ttf). - char_selection_mode and seed - the character-mapping strategy and its randomization.
- mask (optional) - feed a MASK in and the ASCII effect is blended into only the masked region, using
mask_blend_radius,mask_edge_adjustment, andmask_edge_factor. Handy for putting ASCII text-art in one corner of an otherwise normal image. - enable_color_match - re-transfers the original image's colors onto the pixelated art via the
color-matcherlibrary. Pickmkl,hm,reinhard, orhm-mkl-hm; the README is explicit thatidtdoesn't work.
Output is a single IMAGE at the same resolution as the input - wire it straight into a Save Image node.
Installing it
From ComfyUI Manager, search "ComfyUI-color-ascii-art-node" and hit install. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node.git
cd comfyui-color-ascii-art-node
pip install -r requirements.txt
Restart ComfyUI after. The dependency list is tiny - Pillow, colorama, and color-matcher - and there are no model downloads and no API keys. Nothing heavy here.
Where people get burned
The README's own warning is the one that'll bite you: if the font you pick doesn't contain the characters in the charset file, the output comes out blank. The bundled charset files include set4.txt, the default, which is Japanese phrases - pair that with a Latin-only display font like Chewy-Regular.ttf and you'll stare at an empty canvas wondering what broke. Match the font to the charset: use NotoSansJP-VariableFont_wght.ttf (also bundled) for the Japanese sets, or a set like set2.txt's block/symbol characters with the decorative fonts. If you get a blank result, this is the first thing to check.
One more: this pack uses ComfyUI's newer comfy_api V3 extension entrypoint, so it needs a reasonably recent ComfyUI. If the nodes simply don't appear after install, update ComfyUI first - this is the classic "pack written against the new extension API won't load on an old core" failure from the ecosystem's dependency-hell playbook.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| pixel_size | INT | 201–200 | — |
| downscale_mode | COMBO | area | 6 options: nearest, bilinear, bicubic, area, lanczos, contrast |
| aspect_ratio_correction | FLOAT | 0.750.1–10 | — |
| font_name | COMBO | 9 options: Chewy-Regular.ttf, Creepster-Regular.ttf, Customfont.ttf, KR Rachel's Chalkboard.ttf, Lobster Bisque.ttf, NotoSansJP-VariableFont_wght.ttf, +3 | |
| font_size_min | INT | 81–100 | — |
| font_size_max | INT | 161–200 | — |
| char_selection_mode | COMBO | luminance_hue | 4 options: brightness, hue, saturation, luminance_hue |
| seed | INT | 00–18446744073709550000 | — |
| charset_sourceopt | COMBO | File | 2 options: File, Dynamic |
| ascii_chars_filenameopt | STRING | set4.txt | — |
| dynamic_chars_to_testopt | STRING | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ | — |
| dynamic_sigmaopt | FLOAT | 1.50.1–10 | — |
| sharpen_modeopt | COMBO | None | 2 options: None, unsharp |
| sharpen_amountopt | FLOAT | 1.00–5 | — |
| sharpen_thresholdopt | FLOAT | 0.000–1 | — |
| brightnessopt | FLOAT | 1.000–5 | — |
| contrastopt | FLOAT | 1.000–5 | — |
| maskopt | MASK | — | |
| mask_blend_radiusopt | FLOAT | 5.00–100 | — |
| mask_edge_adjustmentopt | COMBO | None | 3 options: None, SmallerChars, LowerDensity |
| mask_edge_factoropt | FLOAT | 3.00–20 | — |
| enable_color_matchopt | BOOLEAN | false | — |
| color_match_methodopt | COMBO | mkl | 5 options: mkl, hm, reinhard, idt, hm-mkl-hm |
| log_levelopt | COMBO | INFO | 5 options: DEBUG, INFO, WARNING, ERROR, NONE |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |