Playlists
A playlist job transcribes a whole YouTube playlist in one go. You paste the playlist link, pick which videos to include and how to transcribe each one, and INDXR works through them in the background. It's the way to handle a course, a channel's series, or any batch without pasting links one at a time.
Run a playlist job
The flow is four steps, and you decide the cost before anything is charged.
- Paste the playlist URL. INDXR lists the videos it can reach; any that YouTube doesn't return — private or deleted — are counted as unavailable and left out.
- For each video, choose how it's transcribed — free auto-captions, or AI transcription (which uses credits). Nothing is checked ahead of time.
- Review the total, then start. Credits are reserved up front for the whole job. If a video turns out to have no captions or can't be reached, it's skipped during extraction and the credits held for it come back.
- Let it run. The job continues in the background — you can close the tab and the transcripts appear in your library as they finish.
What a playlist costs
The first 3 auto-caption videos in a playlist are free. From the fourth onward, each caption video costs 1 credit. Any video you switch to AI transcription costs 1 credit per minute instead, with no per-video charge and no free discount.
Costs credits
Credits are reserved up front for the estimated total. As each video finishes, only what it actually used is settled — and when the job ends, the unused remainder is returned to your balance automatically.One job holds up to 500 videos
A single job processes up to 500 videos. A larger playlist has to be split into batches of 500. INDXR also warns you before you start a job of 50 or more, so a big run is never a surprise. See Limits for the full list.
Sources
- INDXR (own code) — unavailable videos come from the playlist fetch (not a per-video check); the review screen only lets you pick captions vs AIVerified against backend/main.py:684 + backend/youtube_client.py:119 (unavailable_count); packages/shared/src/components/PlaylistManager.tsx:253 (handleCheckAvailability — no check)
- INDXR (own code) — a video that can't be transcribed is skipped and its reserved credits are returnedVerified against backend/worker.py:288,520-521,543-548 (no_captions/members_only skip + reservation refund)
- INDXR (own code) — first-3-free, per-video and per-minute cost, 500-video cap and ≥50 warningVerified against backend/worker.py:431; backend/main.py:780,1340-1344; packages/shared/src/components/PlaylistManager.tsx; packages/shared/src/lib/pricing.ts
- INDXR (own code) — reserve up front, settle per video, refund the unused remainder; runs in backgroundVerified against backend/credit_manager.py:242-331 (reserve/settle/refund_credits); backend/main.py:1410-1442



