ComfyUI Node

MX_Mosaic

Pixelate a face or a whole frame without leaving the graph

By Intersection98·Created 2 years ago·Updated 2 years ago· 13
MX_Mosaic
  • image
  • IMAGE
pixel_size8

MX_Mosaic is the pixelation node in the MX pack. It downsamples your image to a coarse grid and upscales it back, so everything turns into chunky colored blocks. That's the entire job - censoring faces in a frame, hiding a license plate, or just giving a render that retro 8-bit texture.

It's part of Intersection98/ComfyUI-MX-post-processing-nodes. It's one of the simplest nodes in the pack, and there's genuinely not much to it - one input that matters, one output. The display name is MX_Mosaic, but inside the code it's built on the pack's Pixelize implementation.

How it works

Pixelation is a two-step resize trick: shrink the image so drastically that detail is lost (each output pixel becomes the average of a whole block of source pixels), then scale it back up to the original size with smooth interpolation. The result is blocky, with each square showing a flat average color. There's no blur or dither stage here - it's pure downscale/upscale, which keeps it fast and predictable.

The one input that matters

  • image - your IMAGE tensor.
  • pixel_size - 1 to 256, default 8. The size of the blocks in pixels. 8 gives a clearly visible mosaic; 16+ looks chunky and abstract; 1 is effectively no-op. If you're censoring a face, you want blocks big enough that features are unrecognizable - usually pixel_size matching 2–3% of the image width or more.

Output is a single IMAGE, same resolution as the input (the blocky result is upscaled back to original dimensions, so downstream nodes never see a size change).

Install

Standard MX pack install. ComfyUI Manager (search MX or ComfyUI-MX-post-processing-nodes), or:

cd ComfyUI/custom_nodes
git clone https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes
cd ComfyUI_MX_post_processing-nodes
pip install -r requirements.txt

Restart ComfyUI; it appears under postprocessing/Effects. No models, no downloads.

Where people get burned

Honestly, not much to burn you here - it's a two-line effect. The main thing to know is that pixel_size is in pixels, not a percentage, so the same value looks very different on a 512px image versus a 2048px one. On a high-res render, 8 barely reads; on a small image it's a heavy mosaic. If you want a selective mosaic - just the face, not the whole frame - this node has no mask input, so you'll need to crop the region, pixelate it, and composite back with MX_AlphaBlend or equivalent. That's the one workflow where this pack's nodes actually come together nicely. Also worth a mention: "pixelate" and "mosaic" get used interchangeably here and in the code (MX_Mosaic wraps Pixelize), so if you saw a different node named MX_Pixelize in an older version of the pack, it's the same thing.

Categorypostprocessing/Effects

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
pixel_sizeINT81–256

Outputs (1)

NameTypeDescription
IMAGEIMAGE