MX_Mosaic
Pixelate a face or a whole frame without leaving the graph
- image
- IMAGE
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-1to256, default8. The size of the blocks in pixels.8gives a clearly visible mosaic;16+looks chunky and abstract;1is effectively no-op. If you're censoring a face, you want blocks big enough that features are unrecognizable - usuallypixel_sizematching 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.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| pixel_size | INT | 81–256 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |