Web application for extracting MP3 audio from online videos. https://audio-drop-production.up.railway.app/
- MP3 audio extraction from YouTube videos and other sites
- Minimalist and responsive interface
- Persistent download counter (survives server restarts)
- Queue system with Bull (optional Redis support)
- Automatic retry mechanism (up to 3 attempts)
- Advanced yt-dlp configuration (bypasses YouTube restrictions)
- Rate limiting to prevent overload (5 requests per 10 minutes)
- Automatic cleanup of temporary files
- Better error handling with specific user feedback
- Auto-update yt-dlp on container start
Frontend:
- HTML5 + CSS3 + Vanilla JavaScript
- Tailwind CSS
- Responsive interface
Backend:
- Node.js + Express
- Redis (optional - for Bull queue)
- Bull (queue management with fallback)
- yt-dlp (audio extraction with auto-update)
- Winston (logs)
- File-based persistence for stats
- Node.js 18+
- Redis (optional - for queue system)
- Python 3 + pip
- FFmpeg
-
Clone the repository:
git clone https://github.com/your-username/audiodrop.git cd audiodrop -
Install dependencies:
npm install
-
Install yt-dlp:
pip install yt-dlp
-
Configure environment variables:
cp .env.example .env
-
Start Redis (optional):
redis-server # If Redis is not available, the app will work without queue system -
Run the application:
npm run dev
- Connect your repository to Railway
- Configure environment variables:
REDIS_URLPORT
- Automatic deployment
docker build -t audiodrop .
docker run -p 3000:3000 audiodropStarts downloading a video.
Body:
{
"url": "https://www.youtube.com/watch?v=VIDEO_ID"
}Response:
{
"jobId": "1234567890",
"status": "processing",
"message": "Download started..."
}Checks download status.
Response:
{
"status": "completed",
"file": "/path/to/audio.mp3",
"timestamp": 1234567890
}Downloads the audio file.
- Only use with content you have the right to download
- Respect the terms of use of websites
- This tool is for educational and personal use
- YouTube Bot Detection: YouTube may occasionally detect automated downloads. The app uses multiple strategies (iOS, Android, TV clients) to minimize this.
- Age-Restricted Content: Some age-restricted videos cannot be downloaded without authentication
- Regional Restrictions: Geo-blocked content may not be accessible
- Rate Limiting: Maximum 5 downloads per IP every 10 minutes
- Try different videos if one fails (bot detection is video-specific)
- Wait a few minutes between downloads
- Shorter videos typically have higher success rates
- Public, non-restricted videos work best
- Fork the project
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
MIT License - see LICENSE file for details.