Free TikTok and YouTube transcript tools

Paste a TikTok or YouTube URL and copy caption text in the browser. Free transcript tools — no API key required for spot checks.

Social Fetch

You need the spoken text from one video: a quote for a doc, a sanity check on what a creator said, a chunk for an LLM prompt. You do not need a batch worker, a database, or an API key for that.

We run a free tools hub with browser helpers for TikTok and YouTube transcripts. Paste a URL, click a button, copy plain text. No account needed for a spot check.

That is the whole product for a spot check. The rest of this post covers when that is enough, when it is not, and what the tools will not do.

When the browser tool is enough

Use the free pages when the job is narrow and human: one URL on your clipboard right now, a quick check that a video has captions before you spend credits in a script, or a handful of links for a slide deck rather than a nightly cron over ten thousand URLs.

Start from the hub at /tools, or go straight to the tool you need:

Both pages use the production transcript routes. Your browser is the caller instead of a server with an API key. You get the same caption resolution logic. You do not get unlimited throughput.

Rule of thumb

If you would not put the job on a cron schedule, the browser tool is probably fine. If your product depends on the output, move to the API before you promise a ship date.

When you need the API

The free pages are rate-limited by design. Move to programmatic calls when you need volume (dozens or hundreds of URLs in one sitting), automation (nightly pulls, webhook handlers, agent loops), or structured output (WebVTT timing cues, millisecond segments, lookupStatus in your warehouse instead of pasted plain text).

The browser tools only read existing caption tracks on TikTok. The API accepts useAiFallback=true to transcribe audio when no captions exist (+10 credits on a completed lookup). Instagram Reels transcripts are API-only at GET /v1/instagram/posts/transcript, with the same auth header and billing model as TikTok and YouTube.

New accounts get 100 free API credits (no card). That is enough to prototype a batch job before you buy a credit pack.

Request
bash

For TikTok with AI fallback when captions are missing:

Request
bash

Full parameter lists: YouTube transcript, TikTok transcript. Auth and error shapes: Quickstart.

Caption limits and free lookup caps

We would rather tell you the edge cases upfront than have you discover them mid-demo.

Manual vs auto captions

Neither YouTube nor TikTok labels tracks as "manual" or "auto" in the response. You get whatever caption file the platform exposes, creator-uploaded or platform speech-to-text. On the API, pass language=en when several tracks exist and you need a specific one. There is no "manual only" switch.

YouTube can return lookupStatus: "found" with transcript: null. The video resolved, but no caption track exists. Common on music-only uploads or when the creator disabled captions. That is "no text available," not a broken lookup.

TikTok is stricter. A large share of videos never had captions enabled. Without AI fallback, those come back as not_found.

AI fallback is API-only

The free browser tools do not run AI transcription. They read existing tracks and return plain text for copying. If you need text from uncaptioned TikToks, call the API with useAiFallback=true. That costs 11 credits on a completed lookup (1 base + 10 for fallback). Use it when you need every video in a batch. Skip it when you would rather drop clips without captions.

Turnstile and per-IP caps

Free lookups are capped per IP address and gated behind Cloudflare Turnstile so the pages stay fast for everyone. That works for a spot check or a dozen URLs. It is not a batch worker.

Scripts, browser extensions, and rapid-fire submits will hit the cap quickly. If you are automating, use an API key from your backend. Paid routes have no request quotas — credits are the only limit. Under extreme concurrency you may get 503 with Retry-After (not charged). For large backfills we suggest staying under ~500 concurrent requests.

Billing on the API path

Credits charge on completed lookups. Reconcile against meta.creditsCharged, not your request count. Full rules: Credits.

OutcomeCharged?
Pre-send validation error (malformed URL)No
lookup_failed / HTTP 503No
HTTP 200 + lookupStatus: "not_found"Yes
HTTP 200 + lookupStatus: "found"Yes

Branch on data.lookupStatus in code. HTTP 200 does not mean you got text. We have seen production bugs from teams who assumed it did.

Browser tool vs API

The free pages and the API use the same transcript routes. When you outgrow pasting URLs in a browser, you do not learn a second system. Add an x-api-key header and call those paths from a worker.

Next steps:

  1. TikTok transcript API: WebVTT in transcript.content, optional AI fallback.
  2. YouTube transcript API: plainText plus segments with startMs / endMs.
  3. Quickstart: auth headers, error envelope, meta.requestId for support tickets.
  4. Pricing: model credit usage before you parallelize a big backfill.

For a full walkthrough across YouTube, TikTok, and Instagram (caption quirks, batch patterns, RAG chunking), see How to Get YouTube, TikTok & Instagram Transcripts with One API.

Try a URL in the browser first if you want to see what comes back. When the job needs to run on its own, call the API from your backend.