SnapOtter logo

SnapOtter

Self-hosted file-processing suite for images, video, audio, PDFs, and documents

Alternative to: cloudconvert, smallpdf, convertio


About Versions (47)

v1.17.0

2026-05-16

Highlights

Five new tools, a full image editor, SSO login, 20 languages. Probably should have been three separate releases, but here we are.

New features

  • Image editor — Layers, brushes, shapes, adjustments, filters, curves, keyboard shortcuts. Runs in your browser, processes on your hardware.
  • OIDC / SSO authentication — Login with Google, GitHub, Okta, or any OpenID Connect provider. Set a few env vars and your team uses their existing accounts.
  • Meme generator — 100 built-in templates with text rendering via opentype.js. Or upload your own image.
  • Beautify — Drop a screenshot in, get a polished image out. Device frames (macOS, Windows, browser), shadows, gradients, social media presets.
  • Color blindness simulation — Preview how images look with protanopia, deuteranopia, tritanopia, and other color vision deficiencies.
  • PNG transparency fixer — Detects fake-transparent PNGs and fixes them with BiRefNet HR-matting. Optional watermark removal via LaMa inpainting.
  • AI canvas expand — Extend image boundaries with AI fill. Three quality tiers (fast, balanced, quality) depending on how much GPU time you want to trade.
  • 20 languages — Arabic, Chinese (Simplified/Traditional), Czech, Dutch, French, German, Hindi, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Thai, Turkish, Ukrainian, Vietnamese. RTL works for Arabic.
  • URL import — Paste URLs into the dropzone or bulk-import from a list. Server-side fetch with SSRF protection.
  • Multi-file eraser — Draw erase masks across multiple images, process them all with one click. Strokes persist per-image.
  • Pipeline import/export — Save tool chains as JSON, share them with others.
  • 17 new camera RAW formats via exiftool, plus QOI, JP2, EPS, DDS, CUR, DPX, FITS, PPM/PGM/PBM, SVGZ, and APNG input. New output codecs for BMP, ICO, JP2, QOI. AVIF, TIFF, GIF, JXL, and PSD export recovered from a previously lost branch.

Improvements

  • Image enhancement — Replaced the old pipeline with CLAHE + normalise + gamma. New Deep Enhance toggle uses the AI model for more aggressive results.
  • Restore photo — Scratch detection rewritten with 8-angle Otsu filtering. LaMa inpainting now runs at native resolution. The confusing mode selector is gone, replaced with a colorize strength slider.
  • Exotic formats everywhere — OCR, image-to-PDF, favicon generator, composition, stitch, and vectorize all decode HEIC, RAW, PSD now. Previously they just errored out.
  • Compress — Target-size tolerance tightened from 5% to 1%. Target size is the default mode. Added stepper buttons and KB/MB unit selector.
  • Sentry cleanup — 644 non-actionable events filtered. Real errors (non-ASCII filename crashes, EPIPE on dispatcher, EACCES on storage) now handled properly.
  • GPU detection — Better diagnostics for containers where CUDA is present but nvidia-smi is not.
  • DNG/RAW metadata — Image info reads EXIF from RAW files without full decode.
  • Auth-disabled mode — Anonymous user is seeded in the DB with admin role. API keys, pipelines, and user files no longer break on FK constraints.
  • 2,705+ new tests across unit, integration, and E2E.

Bug fixes

  • Upscale on CPU — No longer times out on NAS boxes and low-power hardware.
  • QR code logo — Adding a logo no longer makes the preview vanish permanently.
  • Crop overflow — Tall portrait images stay inside the viewport.
  • TIFF alpha — Files needing alpha correctly force PNG output instead of producing corruption.
  • HDR/EXR decode — Converts to 8-bit before CLAHE, fixing decode failures.
  • Face landmarks — Input buffers converted to PNG before the Python sidecar, fixing crashes.
  • Find duplicates — Mixed-format batches no longer crash. Network errors handled.
  • Beautify preview — Updates in real time, no longer collapses when frame or watermark is active.
  • Progress bars — Stitch and vectorize show progress during processing.
  • SVGZ — SVG-to-raster handles gzip-compressed SVGs.
  • Non-ASCII filenames — X-File-Results header is percent-encoded, fixing downloads for non-Latin names.

Upgrade

docker pull snapotter/snapotter:1.17.0

Or with Docker Compose:

docker compose pull && docker compose up -d

Full Changelog: https://github.com/snapotter-hq/SnapOtter/compare/v1.16.0…v1.17.0