Convert any file format with just one click!
A powerful, modern, and lightning-fast file conversion tool supporting 40+ formats
π View on GitHub β’ Features β’ Installation β’ Usage β’ Demo β’ Support
|
|
|
- π¨ Modern UI - Beautiful, responsive interface with Tailwind CSS
- π Fast Conversion - Lightning-fast processing with multi-threading
- π₯ Drag & Drop - Easy file upload with drag and drop support
- π Progress Tracking - Real-time conversion progress visualization
- π Multi-language - Full support for English and Arabic (RTL)
- π Secure - Automatic file cleanup after 1 hour
- π― Smart Detection - Automatic format detection and validation
- π¦ Batch Processing - Convert multiple files at once
- π Auto Cleanup - Scheduled cleanup of temporary files
- πΎ 50MB Limit - Support for large file conversions
Before you begin, ensure you have the following installed:
- β Python 3.8+ - Download here
- β pip - Package manager (comes with Python)
- β Platform-specific tools:
| Platform | Requirements |
|---|---|
| πͺ Windows | Microsoft Word OR LibreOffice |
| π§ Linux | LibreOffice (auto-installed via script) |
| π macOS | LibreOffice (auto-installed via script) |
# Clone or download the project
git clone https://github.com/Rootx202/ConvX.git
cd ConvX
# Run the automated installer
chmod +x install_linux_deps.sh
./install_linux_deps.sh
# Run the application
chmod +x run.sh
./run.sh# Clone or download the project
git clone https://github.com/Rootx202/ConvX.git
cd ConvX
# Run the automated installer
chmod +x install_macos_deps.sh
./install_macos_deps.sh
# Install Python dependencies
pip3 install -r requirements.txt
# Run the application
python3 app.py# Clone or download the project
git clone https://github.com/Rootx202/ConvX.git
cd ConvX
# Create virtual environment
python -m venv venv
venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the application
python app.pyClick to expand manual installation steps
π§ Linux (Ubuntu/Debian):
sudo apt-get update
sudo apt-get install -y libreoffice-writer --no-install-recommends
sudo apt-get install -y poppler-utilsπ macOS:
brew install libreoffice
brew install popplerπͺ Windows:
- Install Microsoft Word (Recommended) OR
- Install LibreOffice
- Download Poppler for Windows
# Navigate to project directory
cd ConvX
# Create virtual environment
python3 -m venv venv
# Activate virtual environment
# Linux/Mac:
source venv/bin/activate
# Windows:
venv\Scripts\activate
# Install Python packages
pip install -r requirements.txtpython app.pyOnce installed, start the application:
python app.pyThe application will be available at:
π http://localhost:5000
- π Upload: Drag & drop your file or click to browse
- π Select Format: Choose your desired output format
- β‘ Convert: Click convert and watch the magic happen
- πΎ Download: Download your converted file instantly
# Example 1: Convert PDF to Word
Input: document.pdf β Output: document.docx
# Example 2: Convert Excel to JSON
Input: data.xlsx β Output: data.json
# Example 3: Convert PNG to WebP
Input: image.png β Output: image.webp
# Example 4: PDF to Images (Batch)
Input: slides.pdf β Output: slides_images.zip (multiple images)ConvX/
βββ π app.py # Main Flask application with routes
βββ βοΈ config.py # Configuration settings & formats
βββ π requirements.txt # Python dependencies
β
βββ π§ core/ # Core conversion engines
β βββ __init__.py # Module initialization
β βββ doc_converter.py # Document conversions (PDF, DOCX, TXT)
β βββ data_converter.py # Data format conversions (Excel, CSV, JSON)
β βββ img_converter.py # Image conversions (PNG, JPG, WebP, etc.)
β
βββ π¨ static/ # Static assets
β βββ js/
β βββ upload.js # Frontend JavaScript logic
β
βββ πΌοΈ templates/ # HTML templates
β βββ index.html # Main UI template (Tailwind CSS)
β
βββ π translations/ # i18n translation files
β βββ ar/LC_MESSAGES/ # Arabic translations
β βββ en/LC_MESSAGES/ # English translations
β
βββ π₯ uploads/ # Temporary upload storage (auto-cleanup)
βββ π€ outputs/ # Converted files storage (auto-cleanup)
β
βββ π¨ install_linux_deps.sh # Linux dependency installer
βββ π¨ install_macos_deps.sh # macOS dependency installer
βββ π run.sh # Quick start script
Customize ConvX by editing config.py:
| Setting | Default | Description |
|---|---|---|
MAX_FILE_SIZE |
50 MB | Maximum file upload size |
CLEANUP_AFTER_HOURS |
1 hour | File retention period |
CLEANUP_INTERVAL_MINUTES |
30 min | Automatic cleanup frequency |
LANGUAGES |
EN, AR | Supported UI languages |
DEBUG |
True | Flask debug mode |
# config.py
MAX_FILE_SIZE = 100 * 1024 * 1024 # 100MB
CLEANUP_AFTER_HOURS = 2 # 2 hours
CLEANUP_INTERVAL_MINUTES = 60 # 1 hour
DEBUG = False # Production modeConvX provides a RESTful API for programmatic access:
GET /api/available-conversions/<file_ext>Example:
curl http://localhost:5000/api/available-conversions/pdfResponse:
{
"success": true,
"conversions": ["docx", "txt", "images"],
"category": "document"
}POST /api/upload
Content-Type: multipart/form-dataParameters:
file: File to convert (required)target_format: Target format extension (required)
Example:
curl -X POST http://localhost:5000/api/upload \
-F "[email protected]" \
-F "target_format=docx"Response:
{
"success": true,
"message": "Conversion successful",
"download_url": "/api/download/20260206_123456_document_converted.docx"
}GET /api/download/<filename>Example:
curl -O http://localhost:5000/api/download/20260206_123456_document_converted.docxGET /api/healthResponse:
{
"status": "healthy",
"upload_folder": "/path/to/uploads",
"output_folder": "/path/to/outputs"
}GET /set_language/<language>Supported languages: en, ar
| Feature | Description |
|---|---|
| β File Validation | Strict file extension and type checking |
| β Secure Filenames | Automatic sanitization of uploaded filenames |
| β Size Limits | 50MB maximum file size (configurable) |
| β Auto Cleanup | Automatic deletion of files after 1 hour |
| β Input Sanitization | Protection against malicious inputs |
| β CORS Protection | Configured Cross-Origin Resource Sharing |
| β Session Security | Secure session management with Flask |
| β Error Handling | Comprehensive error handling and logging |
π₯ Watch ConvX in action: YouTube Demo
1. π Open http://localhost:5000 in your browser
2. π Drag and drop a file or click to select
3. π Choose your desired output format from available options
4. β³ Wait for the conversion to complete (with progress bar)
5. πΎ Download your converted file
6. π Convert another file or close
π Input: resume.pdf (2.5 MB)
π Action: Convert to DOCX
β±οΈ Time: ~5 seconds
πΎ Output: resume_converted.docx (1.8 MB)
π Input: sales_data.xlsx (5.2 MB)
π Action: Convert to JSON
β±οΈ Time: ~3 seconds
πΎ Output: sales_data_converted.json (6.1 MB)
π Input: presentation.pdf (15 pages)
π Action: Convert to Images
β±οΈ Time: ~12 seconds
πΎ Output: presentation_images.zip (15 PNG files)
β Document conversions not working (DOCX/PDF)
Problem: Cannot convert Word documents or PDFs
Solution:
The application automatically detects your OS and uses the appropriate converter:
πͺ Windows:
- Requires Microsoft Word (recommended) OR LibreOffice
- Install from: MS Office or LibreOffice
π§ Linux:
sudo apt-get install libreoffice-writer --no-install-recommendsπ macOS:
brew install libreofficeβ PDF to Image conversion fails
Problem: Error when converting PDF to images
Solution: Install poppler-utils:
π§ Linux:
sudo apt-get install poppler-utilsπ macOS:
brew install popplerπͺ Windows:
- Download from: Poppler for Windows
- Extract and add to PATH
β "Conversion not supported" error
Problem: Format conversion not available
Solution:
- Check the supported formats list
- Ensure you're converting between compatible formats
- Example: PDF can convert to DOCX, TXT, or Images
- Not all format combinations are supported
β File too large error
Problem: File exceeds size limit
Solution:
- Default limit is 50MB
- Edit
config.pyto increase:
MAX_FILE_SIZE = 100 * 1024 * 1024 # 100MB- Restart the application
β Port 5000 already in use
Problem: Another application is using port 5000
Solution:
- Edit
app.pyand change the port:
app.run(debug=DEBUG, host='0.0.0.0', port=8080) # Use port 8080- Or kill the process using port 5000:
# Linux/Mac
lsof -ti:5000 | xargs kill -9
# Windows
netstat -ano | findstr :5000
taskkill /PID <PID> /Fβ Module not found errors
Problem: ImportError or ModuleNotFoundError
Solution:
# Ensure virtual environment is activated
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Reinstall all dependencies
pip install -r requirements.txt --force-reinstall- Check the GitHub Issues
- Create a new issue with:
- Your OS and version
- Python version (
python --version) - Error message and logs
- Steps to reproduce
- π Adding new file format conversions
- π Bug fixes and improvements
- π Translations to other languages
- π Documentation improvements
- π¨ UI/UX enhancements
- β‘ Performance optimizations
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License - Free to use, modify, and distribute
- π Bug Reports: GitHub Issues
- π‘ Feature Requests: GitHub Discussions
- π§ Email: [email protected]
- π¬ Telegram Community: Join our Telegram
If you found ConvX helpful, please consider:
- β Starring this repository
- π¦ Sharing with your friends and colleagues
- π΄ Contributing to the project
- π Following on social media