A blur you can take off is not a blur, so this one is painted into every frame
The failure this tool is built around is the same one the document redactor exists to avoid. A box drawn on top of a picture hides what is under it on screen while the original pixels sit underneath, untouched, and anyone with the file can take the box away. In video the equivalent is an overlay track or an editor project that renders a blur at playback time. So nothing here is layered. The blurred region is composited into the frame and the result is encoded as a new H.264 stream, which means the pixels that were inside the box are not in the export at all. The price is that every frame has to be decoded, painted and encoded again. There is no equivalent of the trimmer copying a stream between keyframes, because the frames that need the blur are exactly the ones that change, so an export takes at least as long as the video plays.
Each box is stored as a fraction of the frame rather than in pixels, using the same geometry module as the redactor. You draw on a preview that is whatever size your screen allowed, and the encode runs at the full resolution of the file, and a fraction survives that change of scale where a pixel coordinate does not. Converting back to pixels has one wrinkle that images do not. The output is yuv420p, whose two colour planes are stored at half the resolution of the brightness plane, so a crop that starts on an odd pixel starts half a colour sample away from the brightness it is meant to cover, and the edge of the box picks up a coloured fringe. Every coordinate is therefore aligned to an even number, rounded outward so the box never ends up smaller than what you drew, and the video is padded to even dimensions first so those coordinates mean the same thing on an odd sized source.
The blur strength is not a radius. A fixed radius of ten pixels makes a face forty pixels across unrecognisable and barely softens one four hundred pixels across, so a single slider would mean something different for every box. The radius is instead a fraction of the box’s shorter side, which is what makes Unrecognisable mean the same thing wherever you draw. It is capped at a quarter of that side rather than half, because the limit that matters is the colour plane at half resolution, and a radius wider than that plane is an error rather than a stronger blur. Unrecognisable also runs the box blur three times in a row, which converges on a gaussian and is what removes the structure rather than smearing it. Softened runs it once. On a fine checkerboard the softened result still shows the grid, which is why the page tells you not to use it to hide a person.
The boxes compile to a single ffmpeg filter graph. The padded source is split into one copy per box plus a base to draw on, each copy is cropped to its box and blurred, and the blurred patches are overlaid onto the base one after another. Cropping from untouched copies rather than from the running result matters when two boxes overlap, since otherwise the second would blur the first a second time. A box that covers only part of the clip is gated with an enable expression on the timestamp. A box that covers the whole clip gets no expression at all, because enable is evaluated on every frame and an always true condition is work for nothing. Before the graph is built the input is asked whether it has an audio track, since a graph that maps audio from a silent screen recording fails the whole encode, and any audio is encoded to AAC rather than copied, because a WebM carries Opus and an MP4 cannot take it as it is.
Two limits are stated on the page rather than left for you to find. A box does not follow a moving face. Tracking needs a face detection model running on every frame, which is a different tool, so a box stays where it was drawn for the span it was given, and a subject who moves needs a larger box or several boxes with different timings. And the live preview is not the encoder. It blurs with a CSS backdrop filter so it moves with the video instantly, and it is tuned to be the weaker of the two, so what you see before exporting can only understate how much is hidden, never overstate it. Watching the result before you share it is still the only real check.