Censored GIF Maker
Add pixelation, blur, or solid censor bars to any GIF. Upload, select regions, apply effects, and export - all processed locally in your browser.
About
Applying censorship overlays to animated GIFs requires frame-by-frame manipulation of indexed-color image data. Each GIF frame is LZW-compressed with a palette of up to 256 colors. Modifying pixel regions means decompressing every frame, applying the spatial filter (pixelation block size b, blur radius r, or solid fill), re-quantizing colors back to an indexed palette, and re-encoding. A naive approach produces color banding, temporal flickering, or ballooned file sizes. This tool performs genuine binary GIF parsing and LZW recompression in-browser. No server upload. No watermark. Your data never leaves the tab.
Incorrect censoring is a real risk. A pixelation block size below 8px on a 480px-wide frame is trivially reversible via interpolation attacks. This tool defaults to a minimum effective block size relative to frame dimensions. It handles GIF disposal methods (0 - 3) correctly, preserving transparency and background restoration between frames. Note: processing time scales with N × W × H where N is frame count, so GIFs exceeding 200 frames may take several seconds.
Formulas
Pixelation divides the selected region into a grid of blocks, each b × b pixels. Every pixel within a block is replaced by the block’s mean color:
where C(i, j) is the RGBA value at pixel (i, j) within the block. For irreversibility, b must satisfy b ≥ 0.025 × min(W, H).
Blur approximation uses three-pass box blur, equivalent to a Gaussian with σ ≈ √r2 ⋅ 3. Each pass is separable (horizontal then vertical), giving O(n) per pixel instead of O(r2).
LZW compression encodes pixel index streams using a dictionary that grows from initial size 2minCodeSize + 2 entries up to 4096 (max code width 12 bits). The clear code resets the table; the EOI code terminates the stream.
where b = pixelation block size, r = blur radius, W = frame width, H = frame height, C = color value (per channel), N = total frame count.
Reference Data
| Censor Method | Parameter | Reversibility Risk | File Size Impact | Best Use Case |
|---|---|---|---|---|
| Pixelation (Mosaic) | Block size b ≥ 8px | Low if b ≥ 12px | Slight decrease (fewer unique colors) | Faces, license plates |
| Gaussian Blur | Radius r ≥ 6px | Medium (deconvolution possible at low r) | Slight increase (more gradients) | Text, documents |
| Solid Bar | Fill color (hex) | None (data destroyed) | Decrease (uniform region) | Legal redaction, NSFW |
| Emoji Overlay | Emoji character + scale | None (data destroyed) | Minimal change | Humorous censoring |
| Scramble | Displacement range d | Very low | Increase (random noise) | Artistic glitch effect |
| Black Bar | Fixed #000000 | None | Decrease | Classic TV-style censor |
| White Bar | Fixed #FFFFFF | None | Decrease | Document redaction |
| Inverse Pixelation | Block size b | Low | Decrease | Revealing context, hiding detail |
| Color Channel Shift | Shift offset s | High (trivially reversible) | Minimal change | Artistic only, not secure |
| Noise Fill | Noise density ρ | Very low | Large increase | Maximum obscuration |
| Diamond Mosaic | Cell size c | Low | Slight decrease | Decorative censoring |
| Cross-hatch | Line spacing l | Medium (gaps reveal data) | Minimal change | Sketch-style redaction |