A fast, privacy-focused file converter that runs entirely in your browser. No uploads, no servers, no tracking.
- Drag and Drop / Click to Select - Intuitive file selection with visual feedback
- Client-Side Conversion - All processing happens in your browser; files never leave your device
- Multi-Format Support - Convert images, videos, and audio files
- Batch Conversion - Process up to 10 files simultaneously
- Completely Free - No payment required, no hidden fees, no limits
| Format | Extension |
|---|---|
| PNG | .png |
| JPEG | .jpg, .jpeg |
| WebP | .webp |
| GIF | .gif |
| BMP | .bmp |
| ICO | .ico |
| Format | Extension |
|---|---|
| MP4 | .mp4 |
| WebM | .webm |
| AVI | .avi |
| MOV | .mov |
| MKV | .mkv |
| Format | Extension |
|---|---|
| MP3 | .mp3 |
| WAV | .wav |
| OGG | .ogg |
| FLAC | .flac |
| AAC | .aac |
| Technology | Purpose |
|---|---|
| FFmpeg.wasm | WebAssembly port of FFmpeg for browser-based media conversion |
| Cloudflare Pages | Global edge hosting with automatic SSL |
| Vanilla JavaScript | Zero framework dependencies for maximum performance |
- Node.js 18+ - For local development with Wrangler
- Cloudflare Account - Free tier works perfectly
- Wrangler CLI - Cloudflare's deployment tool
-
Clone the repository
git clone https://github.com/yourusername/convertbox.git cd convertbox -
Install Wrangler globally
npm install -g wrangler
-
Start development server
wrangler pages dev src
-
Open in browser
http://localhost:8788
- Push your code to GitHub
- Log in to Cloudflare Dashboard
- Navigate to Pages > Create a project
- Select Connect to Git
- Choose your repository
- Configure build settings:
- Build command: (leave empty)
- Build output directory:
src
- Click Save and Deploy
wrangler pages deploy src- Go to your Pages project in Cloudflare Dashboard
- Click Custom domains
- Click Set up a custom domain
- Enter your domain (e.g.,
convert.yourdomain.com) - Follow DNS configuration prompts
Shift is designed with security as a priority:
| Feature | Description |
|---|---|
| HTTPS/SSL | Automatic SSL certificates via Cloudflare |
| Content Security Policy | Strict CSP headers prevent XSS attacks |
| WAF | Web Application Firewall protects against common threats |
| Security Headers | X-Frame-Options, X-Content-Type-Options, and more |
| Privacy-First | No server uploads; all processing is client-side |
| Monitoring | Cloudflare analytics and logging for threat detection |
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), microphone=(), camera=()
Enable Cloudflare's Web Application Firewall:
- Log in to Cloudflare Dashboard
- Select your domain
- Navigate to Security > WAF
- Enable Cloudflare Managed Ruleset
- Configure Rate Limiting:
- Click Rate Limiting Rules
- Create rule: Block requests exceeding 100/minute from same IP
- Action: Block
- Duration: 10 minutes
| Rule | Threshold | Action |
|---|---|---|
| Rate Limit | 100 requests/minute | Block |
| Bot Fight Mode | On | Challenge |
| Browser Integrity Check | On | Block |
- In Cloudflare Dashboard, go to Pages > Your Project
- Click Custom domains > Set up a custom domain
- Enter your domain (must be on Cloudflare or transfer nameservers)
- DNS records are configured automatically
- SSL certificate provisions within minutes
Note: API endpoints are planned for future releases.
POST /api/convert
| Parameter | Type | Required | Description |
|---|---|---|---|
file |
File | Yes | File to convert (multipart/form-data) |
format |
string | Yes | Target format (e.g., "mp4", "png", "mp3") |
quality |
string | No | Quality preset: "low", "medium", "high" |
curl -X POST https://convert.yourdomain.com/api/convert \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@input.avi" \
-F "format=mp4"{
"success": true,
"download_url": "/download/converted-uuid.mp4",
"expires_at": "2024-01-01T00:00:00Z"
}convertbox/
├── src/
│ ├── index.html # Main HTML file
│ ├── css/
│ │ └── styles.css # Styling
│ └── js/
│ └── app.js # Application logic
├── README.md
└── LICENSE
| Browser | Version |
|---|---|
| Chrome | 79+ |
| Firefox | 79+ |
| Safari | 14.1+ |
| Edge | 79+ |
Note: WebAssembly and SharedArrayBuffer support required.
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style
- Test on multiple browsers before submitting
- Update documentation for new features
- Keep PRs focused and atomic
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0) - see the LICENSE file for details.
This license allows sharing and adapting the work, requires attribution, and prohibits commercial use.
- Website: boxu.dev
- X/Twitter: @boxudev
- Discord: Join our server
- GitHub: blazfxx
- FFmpeg - The multimedia framework
- FFmpeg.wasm - WebAssembly port
- Cloudflare - Edge computing platform