Back to blog
Guide·Aug 1, 2026·3 min read

TikTok Video Transcript: What You Get, and What to Do With It

What a TikTok video transcript actually contains, why most videos have no caption track to download, and how to turn timestamped segments into subtitles, search data, or LLM input.

Chandler Caseyby Chandler Casey

You can get the transcript of a TikTok video, but what you get back varies enormously depending on how you ask. This is about the output: what a TikTok video transcript actually contains, the formats worth having, and how to turn one into subtitles, search data, or LLM input without writing a parser.

What is actually in a TikTok video transcript

Two things produce the text, and they are not equivalent.

A caption track, when one exists, is a timed file. TikTok's auto-captions or a creator-uploaded track. You get the words plus start and end times, already segmented, at no processing cost.

Speech-to-text on the audio is what you get when no track exists, which on TikTok is most of the time. A Whisper-class model listens to the audio and produces text. Quality is usually better than TikTok's auto-captions, and you can ask for word-level or segment-level timing.

The distinction matters because it changes what you can trust. Caption tracks inherit whatever the creator typed, including deliberate misspellings and hashtag spam. Speech-to-text transcribes what was said, which is often what you actually wanted.

The shape of a useful response

A transcript is more useful as structured data than as a wall of text. What you want back is both:

json
{
  "text": "Hi, I'm Blake, the recruiter for this role...",
  "segments": [
    { "start": 0.0, "duration": 3.5, "text": "Hi, I'm Blake, the recruiter for this role" },
    { "start": 3.5, "duration": 2.8, "text": "Can you start by telling me about yourself?" }
  ]
}

The joined text field is what you feed a model or a search index. The segments array is what you need for anything time-aware: subtitles, jump-to-moment links, clipping.

Getting both in one response means you never have to reconstruct one from the other, which is where most homegrown pipelines get fiddly.

Turning segments into subtitles

Once you have start times and durations, SRT is a formatting exercise rather than another integration:

python
def to_srt(segments):
    def ts(s):
        h, rem = divmod(s, 3600)
        m, sec = divmod(rem, 60)
        ms = int((sec % 1) * 1000)
        return f"{int(h):02}:{int(m):02}:{int(sec):02},{ms:03}"

    out = []
    for i, seg in enumerate(segments, 1):
        end = seg["start"] + seg["duration"]
        out.append(f"{i}\n{ts(seg['start'])} --> {ts(end)}\n{seg['text']}\n")
    return "\n".join(out)

The same segment list converts to WebVTT by swapping the comma for a period in the timestamp and prefixing the file with WEBVTT.

What the text is good for

Repurposing. A transcript is the raw material for a blog post, a newsletter section, or a thread. Creators pulling their own back catalogue into text is the most common use.

Search. Video is opaque to search. Indexing transcripts makes a library of clips queryable by what was said in them.

Retrieval for LLMs. Segments chunk cleanly, and the timestamps survive as metadata, so a model can cite the moment rather than the whole video.

Getting one

For a single video and no code, the free TikTok transcript generator takes a URL and returns text in the browser.

Programmatically, one call to a TikTok transcript API handles both paths, caption track when it exists and audio transcription when it does not:

bash
curl https://transcriptfetch.com/api/v1/transcripts/video \
  -H "Authorization: Bearer $TRANSCRIPTFETCH_KEY" \
  -H "Content-Type: application/json" \
  -d '{"video":"https://www.tiktok.com/@user/video/7137723462233555205"}'

The response shape is identical either way, so your code does not branch on which method produced the text.

Two things that will surprise you

Most TikToks have no caption track. If you are building on the assumption that captions exist and you can just download them, the majority of your requests will come back empty. Speech-to-text is the primary path on this platform, not the fallback.

Some videos have no speech at all. A dance clip over a licensed track produces nothing, because there is nothing to transcribe. That is a permanent condition rather than a retryable failure, and detecting it early stops you paying to retry videos that will never produce text.