A fast, modern, and production-ready web application for extracting YouTube video transcripts with a clean user experience, intelligent caching, and built-in rate limiting.
YouTube Transcript Generator allows users to instantly retrieve transcripts from YouTube videos by simply pasting a video URL.
Designed with performance, scalability, and clean architecture in mind, this project demonstrates production-oriented backend development using Flask, efficient caching, robust error handling, and API protection.
-
Paste any YouTube video URL
-
Automatic Video ID extraction
-
Fetch transcripts in seconds
-
Timestamped transcript view
-
Plain text transcript view
-
One-click copy transcript
-
Download transcript as TXT
-
Search within transcript
-
Transcript statistics
- Word count
- Character count
- Duration
- Number of transcript segments
- Intelligent in-memory caching
- Automatic cache cleanup
- Retry mechanism with exponential backoff
- Reduced API calls
- Fast response times
- API rate limiting
- Daily request quota
- Input validation
- Secure HTTP headers
- Graceful error handling
- Protection against abusive requests
- Responsive design
- Modern UI
- Loading indicators
- Error notifications
- Mobile friendly
- Clean typography
- Python
- Flask
- Flask-Limiter
- youtube-transcript-api
- HTML5
- CSS3
- JavaScript (Vanilla)
- Gunicorn
- Render
- Cloudflare (optional)
.
├── app.py
├── requirements.txt
├── services/
│ └── transcript.py
├── static/
│ ├── style.css
│ ├── script.js
│ └── favicon.svg
└── templates/
└── index.html
Clone the repository
git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.gitMove into the project
cd YOUR_REPOSITORYCreate a virtual environment
python -m venv venvActivate it
venv\Scripts\activatesource venv/bin/activateInstall dependencies
pip install -r requirements.txtRun the application
python app.pyOpen
http://127.0.0.1:5000
Try the application here:
🚀 https://yt-subtitle-generator-1.onrender.com
No installation required paste a YouTube URL and retrieve the transcript instantly.
The live demo may occasionally be unavailable for transcript retrieval. This is not an application issue. The project uses
youtube-transcript-api, and YouTube frequently blocks requests originating from cloud hosting providers (such as Render, AWS, Azure, etc.). As a result, transcript requests from the hosted demo may fail even though the application itself is functioning correctly.For the best experience, clone the repository and run the project locally, where transcript retrieval is significantly more reliable.
- Run the application on your local machine for consistent results.
- Avoid sending a large number of transcript requests in a short period of time. Excessive requests can cause YouTube to temporarily block your IP address, preventing transcript retrieval until the restriction is lifted.
- The application includes caching and rate limiting to reduce unnecessary requests, but responsible usage is still recommended.
Thank you for your understanding.
- Request validation
- Centralized error handling
- Structured logging
- Rate limiting
- Intelligent caching
- Retry mechanism
- Security headers
- Health endpoint
- Scalable architecture
- Clean project structure
- Export as SRT
- Export as VTT
- Multi-language transcript selection
- AI-powered transcript summarization
- Chapter generation
- Keyword extraction
- Sentiment analysis
- Docker support
- Redis caching
- PostgreSQL support
- User authentication
- REST API documentation
This project showcases practical software engineering skills beyond basic CRUD applications.
- REST API development
- Backend architecture
- Production-ready Flask development
- API security
- Caching strategies
- Error handling
- Performance optimization
- Clean code organization
- Deployment readiness
Contributions, feature requests, and bug reports are welcome.
Feel free to fork the repository and submit a pull request.
This project is licensed under the MIT License.
Mohit Bhatt
Master's in Computer Science
If you found this project useful, consider giving it a ⭐ on GitHub.