YouTube, shorter.
Paste a YouTube link. Condensr writes chapters and notes in the browser. No account. Models run on the visitor’s machine.
- Official captions if the uploader wrote them.
- Cleaned auto-captions if that is all YouTube has.
- Whisper in the browser only when there are no captions at all.
Chapters and the overview are written locally. You can pick timed cuts or MiniLM, extractive lines or DistilBART, and Whisper tiny or base. The first download is cached in the browser.
The library lives in cookies and IndexedDB. After a video is condensed, it can be reopened offline.
| Layer | What |
|---|---|
| App | Vite + React |
| API | Express — YouTube metadata, captions (yt-dlp), audio (ffmpeg) |
| Models | Transformers.js in a Web Worker (MiniLM, DistilBART, Whisper) |
npm run install:all
npm run dev- App: http://localhost:5173
- API: http://localhost:8787
The Vite dev server proxies /api to the Express process.
The web app can be hosted on Vercel. The API cannot — it needs a long-running Node process for yt-dlp and ffmpeg.
Frontend (Vercel)
- Import this repo.
vercel.jsonbuildsclient/and outputsclient/dist.- Set
VITE_API_URLto the public API origin, with no trailing slash.
API (Railway, Render, Fly, or any Node host)
npm run install:all
npm run build
npm startnpm start serves the built app and /api from server/ on port 8787 (or PORT). CORS is already enabled.
A $0 Render free instance will sleep after 15 minutes idle. Railway Hobby stays up and is a better fit for this API.
First download, then cached in the browser. Not billed on Vercel.
| Choice | When it loads | Size |
|---|---|---|
| Timed cuts | Always available | 0 MB |
| MiniLM | Semantic chapters | ~23 MB |
| Extractive writer | Always available | 0 MB |
| DistilBART | Hybrid writer | ~306 MB |
| Whisper tiny | No captions | ~48 MB EN / ~52 MB multilingual |
| Whisper base | No captions | ~115 MB EN / ~145 MB multilingual |
WebGPU may fetch a larger fp16 copy (~2×). Traffic is between the visitor and Hugging Face.
MIT. Bundled or downloaded models keep their own licenses (typically Apache-2.0 for the Xenova Whisper, MiniLM, and DistilBART weights).





