π¬ Compress.lol β WebAssembly-Powered Video Compression
Compress.lol β "Crushing file sizes, not dreams" β‘
WebAssembly-powered video compression that runs entirely in your browser.
β¨ Features
- π― Target-size compression with intelligent quality adjustment
- π§ Motion detection for optimized encoding settings
- β‘ Lightning-fast processing using WebAssembly FFmpeg
- π 100% client-side β your videos never leave your device
- π± Responsive design β works on desktop and mobile
- π Multilingual interface with Paraglide JS
- π¨ Modern UI with TailwindCSS, Shadcn/ui components, and Catppuccin themes
π Quick Start
π οΈ Manual Installation
# Clone the repository
git clone https://github.com/anhostfr/compress.lol
cd compress.lol
# Install dependencies
npm install
# Start development server
npm run dev
π― How It Works
Smart Compression Algorithm
- Video Analysis: Automatically detects motion levels, resolution, and encoding characteristics
- Target-Based Encoding: Calculates optimal bitrates and settings for your target file size
- Motion-Aware Settings: Adjusts encoding parameters based on content complexity
- WebAssembly Processing: Uses FFmpeg compiled to WASM for native-speed compression
Compression Targets
- 8 MB β Ultra compression for sharing
- 25 MB β High compression for social media
- 50 MB β Medium compression for email
- 100 MB β Low compression for archival
π οΈ Development
npm run dev # Development server
npm run build # Production build
npm run preview # Preview production build
npm run check # TypeScript check
npm run format # Prettier formatting
FFmpeg Integration
The app uses FFmpeg.wasm for video processing:
- Core:
ffmpeg-core.jsβ Main FFmpeg engine - WASM:
ffmpeg-core.wasmβ WebAssembly binary - Worker:
ffmpeg-core.worker.jsβ Background processing
Adding Languages
- Create new message files in
src/lib/paraglide/messages/ - Update language configuration
- Add language selector option
π± Browser Support
- Chrome/Edge: 90+
- Firefox: 89+
- Safari: 15+
Requires WebAssembly and SharedArrayBuffer support.
File Size Limits
- Maximum file size: 2GB (browser limitation)
π€ Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
npm run check - Format code:
npm run format - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
π License
Apache 2.0 License β see LICENSE for details.
π Acknowledgements
- FFmpeg.wasm β FFmpeg compiled to WebAssembly
- SvelteKit β The fastest way to build svelte apps
- Paraglide JS β Type-safe i18n
- TailwindCSS β Utility-first CSS framework
- Shadcn/ui β Beautiful UI components
- Catppuccin β Lovely color palette and themes
"Making video compression accessible to everyone, one byte at a time"