Apex Blur
Nine ways to soften an image, all on your GPU
- image
- mask
- depth
- blurred_image
- blur_info
Apex Blur is the node you reach for when "soften this" needs to mean something specific. Core ComfyUI gives you a plain blur and that's it. This one ships nine algorithms behind a single dropdown - gaussian, box, motion, radial, surface, lens, spin, zoom - plus a strength slider and an optional mask. If you've ever wanted a zoom-burst effect or a fake shallow depth-of-field without dragging in a compositor, this is the cheap local way to do it.
The mechanisms are worth knowing because they change which settings matter. Gaussian is the workhorse: a separable 2D kernel convolution, with sigma derived from your radius. Box is the same idea but a flat kernel - faster, slightly harsher, useful as a cheap softener. Motion takes the angle input and smears pixels along that direction; spin rotates around a center point; zoom pulls pixels in toward a center, giving that speed-ramp punch. Surface is the interesting one - a bilateral-style edge-preserving blur that flattens flat areas while keeping edges crisp, controlled by edge_threshold. Lens tries to mimic bokeh falloff rather than uniform blur.
Everything runs as torch tensor ops on the GPU, and the strength slider crossfades between the blurred and the original, so you can dial in exactly how far you go instead of being stuck at full blur.
The inputs that matter
- image - what you're blurring.
- blur_type - the nine-way dropdown above.
- radius (0.5–100, default 10) - the size of the effect. This is the one you'll tune constantly.
- strength (0–1, default 1) - blend back toward the original. 0.5 is a great "soften without destroying" starting point.
For motion/spin/zoom you'll also want angle and the center_x/center_y pair (both 0–1, default 0.5 = middle). mask lets you blur only part of the frame - blur the background, keep the subject sharp. Outputs are blurred_image and a blur_info string that records what you ran.
What not to use it for
The honest take: this is a stylistic blur, not a fixer. If your image is genuinely out of focus, no amount of this will recover detail - that's the "soft or out-of-focus source" problem, and the standard answer is to downscale to a sharper-relative base and rebuild, not blur more. The README's own benchmarks (15–80 ms at 1024×1024 on an RTX 3080) tell the real story: it's a finishing tool for depth-of-field and motion effects, not a restoration tool.
Installing it
Apex Blur ships in the Apex Artist pack, so install the pack once and you get all six nodes. ComfyUI Manager → search "Apex Artist" → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ApexArtist/comfyui-apex-artist.git
Restart ComfyUI and the node lives under Add Node → Apex Artist → Image → Filters. No model downloads, no extra pip dependencies - the pack's requirements file explicitly lists only what ComfyUI already provides. It's a small MIT pack from an indie author with near-zero community presence, which is fine: the code is short and readable, and there's no sketchy telemetry or surprise model fetch to worry about.
Gotchas
The radius ceiling is 100, and big radii on the iterative types (spin/zoom) are the slow ones - that 80 ms figure in the docs is those, not gaussian. If you're blurring a video batch, remember each frame runs the full convolution, so keep radius sane for previews. And the mask input expects a ComfyUI MASK tensor; if your mask looks like it's doing nothing, check it's actually a mask and not an image - the two wire in from different sockets.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| blur_type | COMBO | gaussian | 10 options: gaussian, strong_gaussian, box, motion, radial, surface, +4 |
| radius | FLOAT | 10.00.5–100 | — |
| strength | FLOAT | 1.000–1 | — |
| angleopt | FLOAT | 0-180–180 | — |
| center_xopt | FLOAT | 0.500–1 | — |
| center_yopt | FLOAT | 0.500–1 | — |
| edge_thresholdopt | FLOAT | 0.100.01–1 | — |
| maskopt | MASK | — | |
| depthopt | MASK | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| blurred_image | IMAGE | — |
| blur_info | STRING | — |