• Svelte 76.3%
  • CSS 14.5%
  • TypeScript 6.4%
  • HTML 1.1%
  • Dockerfile 1%
  • Other 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ivan 2d9807aecf
All checks were successful
Pages / pages (push) Successful in 58s
ci(pages): use the bare forgejo/ form for upload-artifact
Same action, shorter spelling. A bare owner/repo in `uses:` resolves against
the instance's [actions] DEFAULT_ACTIONS_URL, which is unset on
git.hu-tao.dev and therefore takes Forgejo's own default of
https://code.forgejo.org -- the exact URL the previous commit spelled out in
full.

Worth recording what that means, because the obvious reading of the last
commit is wrong: a bare `actions/upload-artifact` was never going to
github.com either. It resolves to code.forgejo.org/actions/upload-artifact,
which is a plain MIRROR of GitHub's action -- cloned and checked, its isGhes()
is still the real hostname test, not the fork's `return false`. The two live
side by side on the same host under different owners, so switching owner is
the entire fix, and no configuration could have made `actions/...` mean the
fork: Forgejo has DEFAULT_ACTIONS_URL and no per-action alias.

The full URL bought only independence from that setting. These workflows sit
in .forgejo/ and run on one instance, so that is not worth the width.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-19 18:37:26 +03:00
.forgejo/workflows ci(pages): use the bare forgejo/ form for upload-artifact 2026-09-19 18:37:26 +03:00
messages feat(i18n): add Korean (ko) translation 2026-07-12 11:32:01 +02:00
project.inlang feat(i18n): add Korean (ko) translation 2026-07-12 11:32:01 +02:00
src ci(pages): target the node-22 runner and the pages path prefix 2026-09-11 20:42:37 +03:00
static Add WebAssembly core and worker for FFmpeg integration 2025-09-10 18:44:12 +02:00
.dockerignore feat: implement UI components for card, input, label, progress, select, and separator 2025-09-10 18:37:35 +02:00
.gitignore feat: implement UI components for card, input, label, progress, select, and separator 2025-09-10 18:37:35 +02:00
.npmrc feat: implement UI components for card, input, label, progress, select, and separator 2025-09-10 18:37:35 +02:00
.prettierignore feat: implement UI components for card, input, label, progress, select, and separator 2025-09-10 18:37:35 +02:00
.prettierrc feat: implement UI components for card, input, label, progress, select, and separator 2025-09-10 18:37:35 +02:00
bun.lock feat: implement UI components for card, input, label, progress, select, and separator 2025-09-10 18:37:35 +02:00
components.json feat: implement UI components for card, input, label, progress, select, and separator 2025-09-10 18:37:35 +02:00
Dockerfile build(Dockerfile): optimize commands, unify multi-line RUN usage, and ensure ownership consistency 2025-09-10 20:04:48 +02:00
LICENSE Initial commit 2025-09-10 16:04:48 +02:00
package-lock.json ci(pages): add Forgejo Pages deployment 2026-09-11 20:38:21 +03:00
package.json ci(pages): add Forgejo Pages deployment 2026-09-11 20:38:21 +03:00
README.md feat: try to trigger vercel build 2026-07-12 12:58:33 +02:00
svelte.config.js ci(pages): add Forgejo Pages deployment 2026-09-11 20:38:21 +03:00
tsconfig.json feat: implement UI components for card, input, label, progress, select, and separator 2025-09-10 18:37:35 +02:00
vercel.json chore(vercel): remove unused vercel configuration 2025-11-02 14:22:32 +01:00
vite.config.ts Refactor code style and improve consistency across components 2025-09-10 18:40:37 +02:00

🎬 Compress.lol – WebAssembly-Powered Video Compression

License: Apache-2.0 GitHub issues SvelteKit TypeScript FFmpeg

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

  1. Video Analysis: Automatically detects motion levels, resolution, and encoding characteristics
  2. Target-Based Encoding: Calculates optimal bitrates and settings for your target file size
  3. Motion-Aware Settings: Adjusts encoding parameters based on content complexity
  4. 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

  1. Create new message files in src/lib/paraglide/messages/
  2. Update language configuration
  3. 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

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes
  4. Run tests: npm run check
  5. Format code: npm run format
  6. Commit changes: git commit -m 'Add amazing feature'
  7. Push to branch: git push origin feature/amazing-feature
  8. Open a Pull Request

📄 License

Apache 2.0 License – see LICENSE for details.


🙏 Acknowledgements


"Making video compression accessible to everyone, one byte at a time"