Convert YouTube videos to 3GP format optimized for feature phones like Nokia 5310 and old browsers like Opera Mini 4.4.
- Quality Options - Choose from 4 MP3 qualities (128k-320k) and 4 video qualities
- Smart Compression - Advanced FFmpeg settings for better quality at smaller sizes
- Cookie-Less Operation - Works without cookies on cloud hosting (Render free tier compatible)
- No JavaScript - Works on Opera Mini 4.4 and older browsers
- Ultra-Low Bitrate - Optimized for 2G networks (176x144 resolution)
- Long Videos - Supports up to 6 hours of video
- Auto Cleanup - Files deleted after 6 hours
- Free Forever - No API keys, no ads, completely free
- Time Estimates - Shows processing time from the start (no guessing!)
- Cookie-Less Downloads - Works WITHOUT cookies using 7 different download methods optimized for cloud hosting
- Smart Download Strategy - Android Client β Android Embedded β Android Music β iOS β TV Embedded β Web Embedded β Media Connect
- Intelligent Retry Logic - Exponential backoff (2sβ4sβ8sβ12sβ15sβ20s) to avoid rate limiting
- Anti-Bot Detection - Realistic browser headers, randomized sleep intervals, and sequential fragment downloads
- Memory Optimized - Runs perfectly on Render's 512MB free tier
- Health Monitoring -
/healthendpoint for uptime checks - Graceful Shutdown - Automatic cleanup on container restart
- Optional Cookies - Upload cookies only if downloads fail repeatedly (see
/cookiespage)
- Resolution: 176x144 (perfect for feature phone screens)
- Format: 3GP with MPEG-4 video codec and AAC audio
- Audio: 24kbps AAC, 16kHz (same across all presets for compatibility)
- Quality Presets (video bitrate/fps only):
- Ultra Low: 150kbps video, 10 fps (~1 MB per 5 min) - 2G networks
- Low (Default): 200kbps video, 12 fps (~2 MB per 5 min) - Recommended for feature phones
- Medium: 300kbps video, 15 fps (~2.5 MB per 5 min) - Better quality
- High: 400kbps video, 20 fps (~3 MB per 5 min) - Best quality
- Format: MP3 with optimized VBR compression
- Quality Presets (minimum 128kbps for reliability):
- 128 kbps (Default): Good quality, stereo (~5 MB per 5 min)
- 192 kbps: High quality, stereo (~7 MB per 5 min)
- 256 kbps: Very high quality, stereo (~9 MB per 5 min)
- 320 kbps: Maximum quality, stereo (~12 MB per 5 min)
- Max Duration: 6 hours (configurable)
- Max File Size: 500 MB
- Auto Quality: 128kbps for MP3, Low for 3GP
Quick Setup (5 minutes):
- Push this repo to GitHub
- Create account on Render.com (free, no credit card)
- Click "New Web Service" β Connect GitHub repo
- Render auto-detects
render.yamland deploys!
π Deployment Guides:
- RENDER_MANUAL_SETUP.md - Complete step-by-step manual for every option (beginners start here!)
- RENDER_DEPLOYMENT.md - Free tier optimization guide and troubleshooting
- DEPLOYMENT_SUMMARY.md - Quick overview of all improvements
Using Docker Compose:
docker-compose up --buildManual Docker:
docker build -t youtube-3gp .
docker run -p 5000:5000 youtube-3gpπ Documentation:
- DOCKER_DEPLOYMENT.md - Complete Docker guide with advanced options
- Dockerfile - Production-ready, multi-stage build
- docker-compose.yml - Local testing setup
See DEPLOY.md for traditional deployment instructions.
# Install Python dependencies (includes yt-dlp)
pip install -r requirements.txt
# Install system dependencies (Ubuntu/Debian)
sudo apt-get install ffmpeg
# Run locally
python app.pyVisit http://localhost:5000
β NEW GUIDES ADDED!
- ERROR_GUIDE.md - Complete error reference (covers 95% of issues!)
- MONITORING_GUIDE.md - How to monitor and maintain your app
- ADVANCED_TINKERING.md - Customize everything (settings, features, performance)
- OPTIMIZATION_IDEAS.md - Performance tips for Render free tier
See DOCUMENTATION_INDEX.md for complete navigation guide.
.
βββ app.py # Main Flask application
βββ bin/ # Optional: Place pre-compiled FFmpeg binaries here
β βββ .gitkeep # Keeps bin folder in repo
β βββ ffmpeg # (Optional) Static FFmpeg binary
β βββ ffprobe # (Optional) Static FFprobe binary
βββ templates/ # HTML templates (feature phone optimized)
β βββ base.html # Base template with minimal CSS
β βββ index.html # Homepage with URL input and quality selection
β βββ status.html # Conversion progress page
β βββ cookies.html # Cookie management page
βββ requirements.txt # Python dependencies
βββ Dockerfile # Production Docker image
βββ docker-compose.yml # Local Docker testing
βββ .dockerignore # Docker build optimization
βββ .env.example # Environment variables template
βββ render.yaml # Render deployment config
βββ build.sh # Build script for Render (checks bin/ first)
βββ Documentation/
βββ RENDER_MANUAL_SETUP.md # Step-by-step Render guide (START HERE!)
βββ RENDER_DEPLOYMENT.md # Render optimization guide
βββ DOCKER_DEPLOYMENT.md # Docker setup guide
βββ DEPLOYMENT_SUMMARY.md # Quick overview
βββ COOKIE_SETUP_GUIDE.md # Optional cookie authentication
βββ DEPLOY.md # General deployment guide
| Variable | Default | Description |
|---|---|---|
SESSION_SECRET |
Auto-generated | Flask session secret |
MAX_VIDEO_DURATION |
21600 | Max video duration (seconds) |
DOWNLOAD_TIMEOUT |
3600 | Download timeout (seconds) |
CONVERSION_TIMEOUT |
21600 | Conversion timeout (seconds) |
FILE_RETENTION_HOURS |
6 | File retention time (hours) |
MAX_FILESIZE |
500M | Max download file size |
- Download music videos for Nokia feature phones
- Convert lectures/tutorials for offline viewing on 2G
- Save YouTube content for devices with limited storage
- Perfect for areas with slow internet connections
Tested and working on:
- Nokia 5310
- Nokia 3310 (newer models)
- Any feature phone with 3GP support
- Opera Mini 4.4 browser
- No data collection
- No user tracking
- No analytics
- Files auto-delete after 6 hours
- Open source - see the code yourself!
MIT License - Free to use, modify, and distribute
- Built with Flask (Python)
- Powered by yt-dlp
- Video conversion by FFmpeg
- Optimized for the nostalgia of feature phones π±
Made with β€οΈ for feature phone users everywhere