Skip to content

Repository files navigation

CompressThing

Local image and video compression without the upload queue

Compress images in bulk, resize media and encode video with native GPU acceleration. Files stay on the machine.

Latest Release Downloads Platform Tauri React

Download · Website · Report an issue

Overview

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.

Core principles

  • 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

Features

Image compression

  • 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.

Bulk image compression

  • 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 .rar archive on supported Windows systems

Note

Bulk .rar export requires the WinRAR command-line executable. Individual output remains available without WinRAR.

Video compression

CompressThing selects between two video pipelines.

Native desktop pipeline

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.

WebAssembly fallback

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

Compression history

  • 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

Desktop experience

  • 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

Privacy

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

Installation

  1. Open the latest release.
  2. Download the Windows installer.
  3. Run the installer.
  4. Launch CompressThing.
  5. Install FFmpeg if the application cannot detect it automatically.

On Windows, CompressThing checks the system PATH, common environment variables and typical WinGet installation locations.

Requirements

Normal image use

  • Windows 10 or Windows 11
  • No account or cloud service

Native video compression

  • FFmpeg available on the machine
  • FFprobe available for accurate duration and progress data
  • A compatible GPU and encoder-enabled FFmpeg build for hardware acceleration

Optional bulk archive export

  • WinRAR CLI at a standard installation path

Expected executable locations include:

C:\Program Files\WinRAR\Rar.exe
C:\Program Files (x86)\WinRAR\Rar.exe

Output behaviour

Video

Desktop video output is written beside the original file:

example.mp4
example.compressed.mp4

Images

Image results are held in the application until downloaded or exported by the user.

Bulk export

Completed bulk images can be downloaded individually. When WinRAR is available, the desktop app can package the queue into one .rar archive.

Technology

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

Development

Prerequisites

  • Bun
  • Rust stable toolchain
  • Tauri system prerequisites
  • FFmpeg and FFprobe for native video testing

Clone and install

git clone https://github.com/IEver3st/compressthing.git
cd compressthing
bun install

The install process also copies the FFmpeg WebAssembly assets into public/.

Run the frontend

bun run dev

Run the desktop application

bun run tauri:dev

Build the web frontend

bun run build

Build Windows installers

bun run tauri:build

Quality checks

bun run test
bun run lint
bun run format

Project structure

compressthing/
├── 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

Known constraints

  • GPU codec support depends on the system FFmpeg build and current drivers
  • Hardware AV1 encoding is not available on every GPU
  • Bulk .rar export 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

Releases and updates

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.

Contributing

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

Licence

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.

Disclaimer

CompressThing is not affiliated with FFmpeg, WinRAR, NVIDIA, AMD or Intel.


Compression should reduce file size, not confidence in where the file went.

About

Fast, free compression in your browser — images and videos. Free Forever. Tweak quality, resize, and download. Your files stay on your device.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages