Open-source project
FiniteSingularity/obs-composite-blur avatar
FiniteSingularity/obs-composite-blur

obs-composite-blur: blur masks that actually composite in OBS

A comprehensive blur plugin for OBS that provides several different blur algorithms, and proper compositing.

673 stars40 forksCGPL-2.0

At a glance

What is it?
Composite Blur is a GPL-2.0 OBS filter that combines four blur algorithms, five blur effects and a background source so blurred masks layer correctly. It is aimed at streamers who hide faces, chat windows and other sensitive regions, and it costs an extra filter pass on the GPU.
Who is it for?
Composite Blur is worth installing for anyone who blurs a camera feed in OBS and has run into halo edges or a mask that will not layer, since the background source option is the reason it exists. It is not the right pick for a scene with no masks, for a capture card that already applies a hardware blur, or for a low end GPU where a full screen Gaussian at high radius will drop frames.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 8 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The compositing problem behind the plugin

The reason to install a third party blur plugin is not blurring itself. It is what happens around the blurred region. The project description calls Composite Blur a comprehensive blur plugin that provides several different blur algorithms and proper compositing, and the introduction makes the same point about the Background Source option, which allows it to properly composite blurred masks so you can layer blurred sources.

That matters when a camera feed is masked. A blur filter alone pushes pixels around inside its own bounds, and the edge where the mask ends is where the artefacts live. The plugin's approach is to let the blurred region be composited against a chosen background instead of against whatever was underneath, which is what the release notes describe as a halo problem: users who had set the blending method to SRGB Off with the background option saw a light halo around the blurred source, and the documented fix was to switch the blending method back to Default.

This is a plugin for streamers, not for editors. The intended user is someone running a live scene with a face camera, a chat overlay or a second display, who needs to obscure part of it on every single broadcast without hand tuning a filter for each scene.

Four blur algorithms with different failure points

The algorithm choice is the part of the plugin that matters for real time performance. Four are documented. Gaussian uses a gaussian kernel and is described as aesthetically pleasing, but becomes computationally intensive at higher blur radius. Box blur uses an equally weighted sample of surrounding pixels, which is more efficient at the cost of quality, and a single pass can cause blocky artefacts; the mitigation is to raise the pass count, where two passes are said to be nearly the same quality as Gaussian, and the plugin allows up to five passes. Dual Kawase, also called dual filter, blurs by downsampling and upsampling and is characterised as high quality with little artifacting and computationally efficient at larger blur values. Pixelate is the fourth.

The implementation notes that the algorithms use linear sampling and GPU texture interpolation to stretch what the GPU can do, and that blur amounts are finely adjustable with fractional pixel support so that blur can animate smoothly when paired with something like the Move Transition plugin. That fractional pixel support is a real differentiator for animated scenes, since a blur that only lands on whole pixel boundaries visibly steps during a movement.

Note that the effect support is not identical across algorithms. Gaussian covers Area, Directional, Zoom and Motion. Box covers Area, Directional, Zoom and Tilt-Shift, so a Tilt-Shift scene cannot use Gaussian, and the reverse is also true.

Area, Directional, Zoom, Motion and Tilt-Shift effects

An algorithm decides how pixels are sampled. An effect decides the shape and direction of the blur, and Composite Blur lists five of them. Area produces a uniform blur across the masked region. Directional smears along an axis. Zoom scales the blur outward from a centre point. Motion is the one to reach for when the camera is moving and you want the blur to trail the movement. Tilt-Shift is the shallow plane of focus look, with a band of the frame sharp and the rest blurred.

The names are less interesting than the constraint they create. Because each algorithm exposes a subset of effects, choosing the algorithm first quietly removes options. The documented sets are Area, Directional, Zoom and Motion for Gaussian, and Area, Directional, Zoom and Tilt-Shift for Box. Dual Kawase and Pixelate are not given effect lists in the visible documentation, so what they support in the filter panel has to be read off the interface itself rather than assumed.

Tilt-Shift is the effect most likely to be the reason someone installs this plugin, and it happens to be Box only. If your scene needs a Tilt-Shift look and Gaussian is the quality you had in mind, those two requirements conflict inside a single filter instance.

Masking the source with crop, rectangle, circle and images

Composite Blur can also mask where and how much blurring occurs on the source, and the introduction lists five mask types: Crop, Rectangle, Circle, Source and Image. Crop takes an arbitrary region of the frame. Rectangle and Circle are parameterised shapes. Source uses another OBS source as the mask, which is how a filter is pointed at a webcam layer or an overlay rather than at the whole scene. Image uses an external image file as the mask.

The Image mask is the interesting one for a streaming workflow, because it lets the shape of the blur be defined by a graphic you can edit in another tool and reload without touching the filter settings. It also means the mask content is a file on disk, so the appearance of a broadcast depends on that file being present and correct on the machine running OBS. The documentation here does not describe what happens when the image is missing or fails to load at startup, so that is a case worth testing yourself if you plan to rely on it.

The Source mask has the same dependency in a different form. If the source it points at is hidden or renamed, the filter behaviour is undefined from the documentation's point of view, and OBS filters generally evaluate against the scene as composed, so ordering in the filter list still matters.

Installing the plugin on Windows, macOS and Linux

The primary route is the Releases page on the project repository. The installation note tells you to go to the releases page, click Assets under the latest release, select either the Windows, macOS or Linux installer, download the file and run it to install for your copy of OBS.

Linux has three additional routes. For Ubuntu with a terminal, the documented steps use wget, unzip, tar, mkdir and mv:

bash
wget https://github.com/FiniteSingularity/obs-composite-blur/releases/download/v1.0.2/obs-composite-blur-1.0.2-ubuntu-XX.04.tar.gz.zip
unzip obs-composite-blur-1.0.2-ubuntu-XX.04.tar.gz.zip
tar -zxf obs-composite-blur-(DATE)-(HASH)-ubuntu-XX.04.tar.gz
mkdir ~/.config/obs-studio/plugins
mv obs-composite-blur ~/.config/obs-studio/plugins

Note that the pinned URL in the README still points at v1.0.2 even though newer releases exist, and the archive name inside the zip carries a date and hash placeholder. Arch users can use an AUR helper:

sh
paru -S obs-composite-blur

And OBS installed through flatpak has its own package:

sh
flatpak install flathub com.obsproject.Studio.Plugin.CompositeBlur

After a restart, the filter appears in the add filter list under the name Composite Blur.

Release history, the GPL licence and the undocumented parts

The project is not archived and the last push was on 2026-10-15, the same day as the v1.6.0 release whose title reads Release v1.6.0 - OBS 33 Support. Before that, v1.5.2 landed on 2025-07-23 and v1.5.1 on 2025-03-01, so the visible history is a long gap followed by a recent jump. The README badges still advertise support for OBS 28, 29 and 30 while the newest release names OBS 33, so do not treat the badge as the current compatibility statement.

The licence is GPL-2.0 and the plugin is written in C with a CMake build, CMakePresets.json and a manifest.json in the repository root. GPL-2.0 is a reciprocal licence, and for a plugin that is loaded into OBS as a separate binary the practical question is how you distribute the result rather than how you use it. This review does not give legal advice; if you bundle the plugin into an installer or a themed distribution, read the licence text and the terms of the OBS distribution you build on.

Two gaps are worth naming. The README does not document a rollback path to an earlier version, and it does not list the minimum OBS build per release, which matters when a filter fails to load after an OBS upgrade.

Editorial conclusion

Composite Blur is worth installing for anyone who blurs a camera feed in OBS and has run into halo edges or a mask that will not layer, since the background source option is the reason it exists. It is not the right pick for a scene with no masks, for a capture card that already applies a hardware blur, or for a low end GPU where a full screen Gaussian at high radius will drop frames. Before switching, install the latest release asset for your platform, check the filter name reads Composite Blur even if your OBS interface is translated, and confirm the blending method is set to Default rather than SRGB Off if you used the background option before 1.1.0.

Frequently asked questions

How do I install obs-composite-blur in OBS?

The installation note points to the releases page, where you click Assets under the latest release and run the Windows, macOS or Linux installer. Linux users can also install the Ubuntu tarball into ~/.config/obs-studio/plugins, use an AUR helper, or install the Flathub package.

Which blur algorithms does obs-composite-blur provide?

Gaussian, Multi-Pass Box, Dual Kawase and Pixelate. Gaussian is described as the highest quality but the most expensive at high radius, Box trades some quality for speed with up to five passes, and Dual Kawase is efficient at large blur values with little artifacting.

What is the Background Source option in obs-composite-blur?

It sets a background against which the blurred region is composited, so blurred masks can be layered properly instead of blending against whatever was underneath. The release notes advise using the Default blending method, since SRGB Off with this option produced a light halo around the blurred source.

Which OBS versions does obs-composite-blur support?

The repository badges advertise OBS 28, 29 and 30, while the v1.6.0 release is titled Release v1.6.0 - OBS 33 Support. The README does not give a minimum OBS build for each release.

What licence is obs-composite-blur released under?

The project is licensed GPL-2.0 and is written in C. The README does not document a rollback procedure for returning to an earlier version of the plugin.

Official sources

  1. FiniteSingularity/obs-composite-blur on GitHub
  2. Issues
  3. License: GPL-2.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/finitesingularity-obs-composite-blur.svg)](https://hysenlabs.com/projects/finitesingularity-obs-composite-blur)

Was this useful?