Compress images in bulk, resize media and encode video with native GPU acceleration. Files stay on the machine.
CompressThing is a Windows desktop utility for compressing images and video locally.
It provides simple controls for quick jobs, detailed encoding options for advanced users and hardware-accelerated video pipelines when compatible FFmpeg codecs are available. The application avoids cloud uploads entirely, which keeps large files private and removes transfer time from the workflow.
The public website is a landing and download page. Compression is performed by the desktop application, with a WebAssembly implementation retained in the source as a fallback for supported browser contexts.
- Local by default: files are processed on the device
- Useful controls: resize, quality, codec and output format remain visible
- Hardware aware: the desktop app detects supported GPU encoders
- Batch friendly: multiple files can share one configuration
- No artificial limits: no account, file quota or upload queue
- Convert to WebP, JPG, PNG, AVIF, DDS or PSD
- Set an exact quality value
- Target a percentage of the original file size
- Resize to a maximum width or height
- Compare before and after previews
- Prevent output files from exceeding the original size
- Process standard images through the Canvas API
- Process DDS and PSD through FFmpeg
The target-size mode uses an iterative quality search to approach the requested output size rather than relying on a single fixed quality estimate.
- Drag and drop multiple images
- Import an entire selection in one operation
- Apply shared settings across the queue
- Track per-file states and failures
- Download results individually
- Export all completed files as a
.rararchive on supported Windows systems
Note
Bulk .rar export requires the WinRAR command-line executable. Individual output remains available without WinRAR.
CompressThing selects between two video pipelines.
The Tauri application invokes the system FFmpeg installation through Rust commands.
- Detect NVIDIA NVENC, AMD AMF and Intel Quick Sync encoders
- Probe both HEVC and AV1 support
- Track accurate progress through FFprobe duration data
- Stream progress into the interface through Tauri events
- Save output next to the source file
- Store up to 40 reusable GPU presets
- Avoid WebAssembly overhead for large files
Supported hardware codecs include:
hevc_nvenc hevc_amf hevc_qsv
av1_nvenc av1_amf av1_qsv
Availability depends on the installed GPU, driver and FFmpeg build.
The source also includes an @ffmpeg/ffmpeg pipeline for environments where native GPU encoding is unavailable.
- H.264, H.265, VP9 and AV1 software codecs
- MP4, WebM, MOV and MKV output
- Resolution limits from source resolution down to 480p
- CRF quality control
- Encoding speed presets
- Live progress and estimated completion time
- Cancellation and stall detection
- Single-thread and multi-thread FFmpeg cores
- Record image, bulk and video jobs
- Track the original and final size
- Calculate total bytes saved
- Store up to 2,000 local history entries
- Keep history on the device through local storage
- Native Windows installers
- Custom application chrome
- Startup update checks
- User confirmation before installing updates
- Completion notifications and audio cues
- Dark interface designed for long-running media jobs
CompressThing does not upload files for compression.
Images and videos are read and processed locally. The desktop app does not require an account, hosted workspace or remote encoding service.
This makes the application suitable for:
- Private photographs
- Client media
- Large recordings
- Development assets
- Files that would be impractical to upload
- Open the latest release.
- Download the Windows installer.
- Run the installer.
- Launch CompressThing.
- Install FFmpeg if the application cannot detect it automatically.
On Windows, CompressThing checks the system PATH, common environment variables and typical WinGet installation locations.
- Windows 10 or Windows 11
- No account or cloud service
- FFmpeg available on the machine
- FFprobe available for accurate duration and progress data
- A compatible GPU and encoder-enabled FFmpeg build for hardware acceleration
- WinRAR CLI at a standard installation path
Expected executable locations include:
C:\Program Files\WinRAR\Rar.exe
C:\Program Files (x86)\WinRAR\Rar.exe
Desktop video output is written beside the original file:
example.mp4
example.compressed.mp4
Image results are held in the application until downloaded or exported by the user.
Completed bulk images can be downloaded individually. When WinRAR is available, the desktop app can package the queue into one .rar archive.
| Layer | Technology |
|---|---|
| Desktop runtime | Tauri 2 |
| Native backend | Rust |
| Frontend | React 19 and TypeScript |
| Routing | TanStack Router and TanStack Start |
| Styling | Tailwind CSS 4 and shadcn/ui |
| Build tooling | Vite 7 and Bun |
| Native video | FFmpeg and FFprobe |
| Browser fallback | @ffmpeg/ffmpeg WebAssembly |
| Animation | Framer Motion |
| Testing | Vitest |
| Updates | Tauri updater and GitHub Releases |
- Bun
- Rust stable toolchain
- Tauri system prerequisites
- FFmpeg and FFprobe for native video testing
git clone https://github.com/IEver3st/compressthing.git
cd compressthing
bun installThe install process also copies the FFmpeg WebAssembly assets into public/.
bun run devbun run tauri:devbun run buildbun run tauri:buildbun run test
bun run lint
bun run formatcompressthing/
├── src/
│ ├── routes/ # Runtime routing
│ ├── components/
│ │ ├── compress-thing.tsx # Main application
│ │ ├── landing-page.tsx # Public landing page
│ │ ├── video-compressor-gpu.tsx # WebAssembly pipeline
│ │ └── video-compressor-gpu-desktop.tsx
│ └── lib/
│ ├── video-compress.ts # FFmpeg WASM wrapper
│ ├── video-gpu-presets.ts # Preset persistence
│ ├── auto-updater.ts # Update checks
│ └── tauri-runtime.ts # Native bridge
├── src-tauri/
│ ├── src/main.rs # Native codec probing and encoding
│ └── tauri.conf.json
├── public/
│ ├── ffmpeg/ # Single-thread WASM assets
│ └── ffmpeg-mt/ # Multi-thread WASM assets
├── server/api/ # Nitro routes
├── scripts/ # Build and asset utilities
└── sounds/ # Completion audio
- GPU codec support depends on the system FFmpeg build and current drivers
- Hardware AV1 encoding is not available on every GPU
- Bulk
.rarexport depends on WinRAR - Multi-thread WebAssembly FFmpeg requires cross-origin isolation
- Very large encodes still depend on available disk space and hardware performance
- Official desktop builds are currently focused on Windows
The desktop app checks GitHub Releases when it starts. Updates are never installed silently. The user is shown the available version and chooses whether to proceed.
Release builds are produced through GitHub Actions and signed for the Tauri updater.
Bug reports and pull requests are welcome.
Particularly useful reports include:
- Source media format and codec
- Selected output settings
- GPU model
- FFmpeg version
- Relevant console output
- A reproducible sample file that can legally be shared
This repository does not currently include a licence file.
Until a licence is added, the source is publicly visible but no general permission to redistribute or modify it should be assumed. Add a LICENSE file before presenting the project as open source.
CompressThing is not affiliated with FFmpeg, WinRAR, NVIDIA, AMD or Intel.
Compression should reduce file size, not confidence in where the file went.