Nodes/ComfyUI XWAVE Nodes/XWAVE JPEG Artifacts
ComfyUI Node

XWAVE JPEG Artifacts

Real JPEG sludge — it actually re-compresses the image

By XWAVEart·Created about a year ago·Updated about a year ago· 2
XWAVE JPEG Artifacts
  • image
  • IMAGE
intensity0.50

Most "JPEG artifact" filters fake it by drawing blocky noise on top of the image. XWAVE JPEG Artifacts cheats properly: it actually compresses the image to a real JPEG in memory and loads it back - over and over, at progressively brutal quality. What comes out is genuine 8×8 block artifacts, mosquito noise, and color bleeding, the exact degradation a photo gets from being screenshotted and re-uploaded ten times. If you want the "this was obviously a real photo pulled off a low-res forum" look, nothing fake comes close.

How it works

The single intensity slider (0–1) maps to two things under the hood:

  • quality - from 90 (mild) down to 1 (catastrophic).
  • iterations - 1 to 30 round-trips of save as JPEG → reload.

At intensity 0.5 that's roughly 15 recompressions at quality ~45. At intensity 1.0 you're re-encoding 30 times at quality 1, which is where images turn into soup with visible blocking. Each pass re-quantizes, so artifacts compound rather than stay constant - that compounding is what makes it look like a genuinely degraded JPEG rather than a one-pass filter.

Inputs: just image and intensity. Output: a single IMAGE, into Preview/Save.

Where to use it

  • Lo-fi realism: intensity 0.2–0.4 on a clean render gives that "compressed for upload" feel without destroying it.
  • Found-footage / web-ripped aesthetics: 0.6–0.8, then slap on some film grain (XWAVE Noise Effect works well) for the full "recovered from an old hard drive" mood.
  • A weird flex on high-res posters: the blocking actually reads as texture at a distance.

Installing it

Part of ComfyUI XWAVE Nodes. ComfyUI Manager → search "XWAVE" → install ComfyUI XWAVE Nodes → restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/XWAVEart/comfyui-xwave-xlitch-nodes
cd comfyui-xwave-xlitch-nodes
pip install -r requirements.txt

Dependencies are Pillow, numpy, scipy - no model downloads, no keys. The whole pack installs together; if you have any other XWAVE node, this one's already on disk.

Gotchas

  • It's genuinely slow at high intensity. 30 sequential JPEG encodes on a large image takes a while; on a video batch it's brutal. Keep it on single images, or keep intensity under ~0.5 for sequences.
  • Alpha channels get flattened. RGBA input is composited onto a white background before compression, so transparency is gone on the output. Fine for RGB, surprising if you fed it a logo.
  • Intensity 0 isn't zero. The formula floors at 1 iteration and quality 90, so even at 0 you get a subtle one-pass JPEG crunch. For a truly untouched image, don't use this node.
  • There's no "just one light pass" control beyond the slider. Quality and iteration count are both derived from the same dial, so you can't do high-iteration/gentle-quality combos. It's one knob, take it or leave it.

The pack is new with no community signal behind it, so this is a "test on your own image" node - but the mechanism is real, which is more than most artifact filters can say.

CategoryXWAVE/Color

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
intensityFLOAT0.500–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE