
A comprehensive, browser-based media conversion tool supporting multiple file formats including images, documents, audio, and video files. All conversions are performed locally in your browser, ensuring complete privacy and data security.
š Features
Image Conversion
- Supported Formats: PNG, JPEG, JPG, WEBP
- Canvas-based Processing: High-quality client-side conversion
- File Validation: Type checking and 5MB size limit
- Instant Download: No server processing delays
Document Conversion
- Supported Formats: DOCX, PDF, TXT, XLSX
- Advanced PDF Processing: Text extraction with PDF.js
- Memory Optimized: Dynamic processing limits based on file size
- Smart Text Handling: Proper formatting and character encoding
Audio Conversion
- Supported Formats: MP3, WAV, OGG, AAC, M4A, FLAC
- FFmpeg Integration: Professional-grade audio processing
- Quality Control: Configurable bitrate and encoding settings
- Progress Tracking: Real-time conversion progress with time estimates
Video Conversion
- Supported Formats: MP4, WebM, AVI, MOV, MKV
- Quality Presets: High, Medium, and Low quality options
- Memory Management: Dynamic file size limits to prevent browser crashes
- Fallback Processing: Automatic retry with simpler encoding if initial conversion fails
Universal Features
- Privacy-First: All processing happens locally in your browser
- No Upload Required: Files never leave your device
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Modern UI: Built with Skeleton UI components and Tailwind CSS
- Error Handling: Comprehensive error messages with actionable solutions
š Live Demo
Experience the converter in action: Multi-Format Media Converter
šø Screenshots
Main interface showing the drag-and-drop upload area and format selection
š ļø Technology Stack
šāāļø Quick Start
Prerequisites
Installation
# Clone the repository
git clone https://github.com/yourusername/multi-format-media-converter.git
cd multi-format-media-converter
# Install dependencies
npm install
# Start development server
npm run dev
The application will be available at http://localhost:5173
Build for Production
# Create optimized production build
npm run build
# Preview production build locally
npm run preview
š Project Structure
src/
āāā lib/
ā āāā components/
ā āāā MediaButton.svelte # Navigation header component
ā āāā SideBar.svelte # Navigation sidebar
āāā routes/
ā āāā +page.svelte # Image converter (home page)
ā āāā Audio/
ā ā āāā +page.svelte # Audio converter
ā āāā Video/
ā ā āāā +page.svelte # Video converter
ā āāā Docs/
ā āāā +page.svelte # Document converter
āāā utils.ts # Utility functions
āāā app.html # HTML template
š§ Configuration
File Size Limits
The application enforces the following size limits to ensure optimal performance:
- Images: 5MB
- Documents: 10-50MB (varies by type)
- Audio: 100MB
- Video: 200MB (reduced for browser memory constraints)
Supported Conversions
Source Format |
Target Formats |
Images |
PNG ā JPEG ā JPG ā WEBP |
Documents |
PDF ā TXT, DOCX DOCX ā TXT, PDF TXT ā PDF, DOCX, XLSX XLSX ā TXT |
Audio |
MP3 ā WAV ā OGG ā AAC ā M4A ā FLAC |
Video |
MP4 ā WebM ā AVI ā MOV ā MKV |
š Privacy & Security
- Local Processing: All file conversions happen in your browser
- No Data Collection: Files are never uploaded to external servers
- Memory Management: Automatic cleanup prevents memory leaks
- Secure Libraries: PDF.js configured with security restrictions
š Troubleshooting
Common Issues
"Conversion produced empty output file"
- Try using MP4 format for video conversions (best compatibility)
- Use "Low Quality" setting for large video files
- Ensure input file is not corrupted
"Memory access out of bounds"
- Reduce file size or use lower quality settings
- Try refreshing the page to clear browser memory
- Use MP4 format which is most memory-efficient
"Failed to load processing library"
- Check your internet connection
- Disable ad blockers temporarily
- Try refreshing the page
- Use lower quality settings for large files
- Convert files one at a time for best performance
- Close other browser tabs to free up memory
- Use MP4/JPEG formats for best compatibility
š¤ Contributing
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes and test thoroughly
- Commit your changes:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature/your-feature-name
- Open a Pull Request
Development Guidelines
- Follow TypeScript best practices
- Add error handling for new features
- Test with various file formats and sizes
- Update documentation for new functionality
- Ensure mobile responsiveness
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Acknowledgments
š Support
If you encounter any issues or have questions:
- Check the Troubleshooting section
- Search existing GitHub Issues
- Create a new issue with detailed information about your problem