Txtify is a free open-source web application that transcribes and translates audio from YouTube videos or uploaded media files. It runs on Docker for easier deployment. Leveraging the stable-ts library and the whisper models, Txtify offers enhanced transcription accuracy and performance.
Txtify is designed to simplify the process of converting audio and video content into text. Whether you're looking to transcribe a YouTube video or your own audio/video files, Txtify offers an easy-to-use interface and powerful AI models to ensure accuracy and speed. The application supports multiple output formats including .txt, .srt, .vtt, .sbv, and .pdf.
Before you begin, ensure you have met the following requirements:
- Python 3.10 installed on your machine
- Docker (containerized deployment)
- An API key for DeepL if you want to enable translation (in case you need to use this tool for translation)
To install and run Txtify using Docker, follow these steps:
- Clone the repository:
git clone https://github.com/lkmeta/txtify.git
cd txtify- Set Up Environment Variables
cp .env.example .envEdit the .env file and add your DeepL API key for translation, and any other necessary environment variables.
- Run the Docker
docker-compose up --build -dNote: The -d flag runs the container in detached mode.
- Stop the Docker Container
docker-compose downIf you want to use the pre-built Docker image available on Docker Hub, follow these steps:
- Pull the Docker Image:
docker pull lkmeta/txtify:latest
- Run the Docker Container
docker run -d -p 8011:8011 --env-file .env -v ./output:/app/output -v txtify-cache:/root/.cache lkmeta/txtify:latest
--env-file .envprovides your DeepL API key (translation silently stays disabled without it);-v ./output:/app/outputkeeps transcriptions and job state on your machine across container restarts;-v txtify-cache:/root/.cachekeeps downloaded Whisper models so they aren't re-downloaded when you pull a new image.
Old jobs in
output/are swept afterRETENTION_DAYS(default 7) — at startup and everyRETENTION_SWEEP_HOURS(default 12) — so the volume doesn't grow without bound; setRETENTION_DAYS=0to keep everything.
Note: If you're using Unraid or an AMD architecture, check out the docker hub images. You can pull and run it with:
docker pull lkmeta/txtify:v1 docker run -d -p 8011:8011 lkmeta/txtify:v1
Open your web browser and navigate to http://localhost:8011 to access Txtify.
Note: Txtify has no authentication — every job is reachable by its numeric id. Keep it on localhost or behind your own reverse proxy/auth if you expose it.
Open /history (or the History link in the nav) to see your past transcriptions on this machine: source, model, language, duration, and status. You can sort by any column, filter by status, download a job's results, or delete a job (with its files); Clear all removes every finished job. Old jobs are pruned automatically after RETENTION_DAYS.
Because the page lists all jobs and there's no authentication, set
ENABLE_HISTORY=Falseto hide it (and its delete endpoints) on a shared/exposed deployment.
To follow the application output and the transcription processes, view the logs of the running Docker container:
docker logs -f txtify_containerNote: The -f option follows the log output in real-time.
To see Txtify in action, visit the Txtify Website and upload your media or enter a YouTube URL to transcribe it.
# Unit/API tests (run without the ML stack — see tests/conftest.py)
pip install -r requirements-dev.txt
pytest
# Full end-to-end check against the real Docker image
./scripts/docker_e2e.shBoth run in CI: tests on every pull request, plus a Docker image build. If you use Claude Code, CLAUDE.md and the project skills/agents under .claude/ encode the repo's conventions and verification workflow.
- Basic transcription functionality
- Support for multiple output formats
- Integration with DeepL for translations
- Improved UI/UX
- Containerized the application
- Enhance performance and scalability
- Web browser Whisper option
If you encounter any issues, bugs, or have suggestions for improvements, please report them using one of the following methods:
- Contact Form: Visit our Contact Page and submit your feedback or issue.
- GitHub Issues: Open an issue on the repository's issue tracker. Please provide detailed information to help us address the problem effectively.
Your feedback is valuable and helps us improve Txtify!
Feel free to contribute by opening issues, suggesting improvements, or submitting pull requests. Your feedback is highly appreciated!
This project is licensed under Apache 2.0.

