Twitch DownloaderVODs · Clips · Live

How to Get a Twitch Transcript (VOD, Chat & Spoken Audio)

Updated: 2026-07-06 · Written by the vodfetch founder

Twitch doesn't give you a transcript button. Here are the real ways to get a text transcript of a Twitch VOD — the chat, and the spoken words.

Does Twitch have transcripts or subtitles?

Short answer: not really. Twitch has no built-in transcript or subtitle export for VODs. A few browser extensions can show auto-generated live captions while you watch, but Twitch itself doesn't store or hand you a transcript of a VOD's spoken audio, and there's no "download transcript" button anywhere in the interface.

So "getting a Twitch transcript" always means using a workaround. The right workaround depends on which transcript you actually want — and there are two very different kinds.

Two different things people call a 'Twitch transcript'

A chat transcript is a text log of everything typed in the stream's chat — messages, timestamps and usernames. People want this to find a moment, quote reactions, or archive their community.

A spoken transcript is the words the streamer actually said, turned into text — for subtitles, show notes, blog posts or repurposing a VOD into other content. These two need completely different tools, so decide which one you're after before you start.

How to get the chat transcript

Twitch keeps the chat replay attached to each VOD, and that replay can be exported as text. vodfetch downloads the full chat replay and saves it as a timestamped plain-text file — effectively a complete chat transcript you can open, search or archive.

Paste the VOD's twitch.tv/videos/… link into the Twitch chat downloader and download the chat replay. You get every message with its timestamp, no scrubbing through the video.

How to get a spoken (audio) transcript

Twitch won't give you the streamer's spoken words as text, so the honest route is two steps: get the audio, then transcribe it.

First, save the VOD's audio with vodfetch — it extracts a clean audio track (an .m4a/.aac file) from any Twitch VOD. Then run that audio file through a speech-to-text tool. Plenty are free, including open-source Whisper and the transcription features built into tools you may already use.

vodfetch itself doesn't do speech recognition — we're a downloader, not a transcription engine, and we'd rather be honest about that than pretend. But a clean audio file is exactly the input those transcription tools need, and extracting it is the step Twitch makes hard.

Which method should you use?

Want to quote chat messages, find a highlight, or archive community reactions? Use the chat transcript.

Want the streamer's words for subtitles, notes, a blog post or repurposing the VOD? Use the spoken transcript: extract the audio, then transcribe it. You can do both from the same VOD — download the chat replay and the audio, and you have the full picture of a stream in text.

What is actually inside the chat transcript file

The export is a plain text file named after the video ID, so a VOD at twitch.tv/videos/2381546891 saves as 2381546891_chat.txt. Each message is one line, in the form [timestamp] DisplayName: message. The timestamp is the message's offset into the VOD rather than the wall-clock time it was sent, so it matches the position on Twitch's own scrubber. The hour field is only written once it is non-zero: a message eight minutes in reads [08:00], one two hours and three minutes in reads [2:03:04]. Worth knowing before you write a parser, because the number of colons in a line is not constant.

Three fields are requested from Twitch per message, and only those three reach the file: the offset, the commenter's display name, and the message text. Everything the Twitch player draws around a message is absent — badges, subscriber months, name colours, emote images, user IDs, message IDs. Emotes survive as their text codes, because a message is flattened by joining its text fragments, so a line reads Kappa rather than showing an image. Where Twitch returns no commenter for a message, the name falls back to a single question mark.

Messages are fetched 100 at a time with a cursor, and the paging loop is bounded at 3,000 rounds, which puts a ceiling near 300,000 messages on one export. No real broadcast approaches that. While it runs, the counter shows a bare number followed by the word messages, and the finished line reports "Chat saved" with the total in brackets — a useful check against the volume you expected. One quirk: the Filename box does not rename this file. The chat export is always the video ID plus _chat.txt.

Chapters, and the one clock that ties the exports together

A second text export sits beside the chat button: chapters. If the broadcaster set game or section markers, the tool writes a <videoid>_chapters.txt with one line per marker, formatted the same way — [timestamp] followed by the marker description, or an em dash where a marker has no description. That button only appears when Twitch actually returned markers for the video, so its absence means the streamer set none, not that the export failed. Like the chat button, it is shown only for twitch.tv/videos/… links; both stay hidden for clips and for a live channel.

Both files use the video's own offset clock, so they join cleanly. Treat the chapter timestamps as boundaries and you can slice a chat log into per-game blocks without opening the video at all. Twitch's share links use the same clock, so appending ?t=1h02m03s to the VOD URL jumps back to a line you found. vodfetch reads that parameter too, but from its own address bar rather than from the box you paste into: open vodfetch.com/?url=<the VOD link>&t=1h02m03s and, once the VOD is analysed, the trim fields pre-fill with a 60-second window starting at that point. Add &go=1 to start the analysis automatically. A ?t= buried inside the URL you paste is ignored.

There is one alignment trap. Trimming keeps whole segments: the filter keeps every segment that overlaps your range, so the cut expands outward at both ends and the exported audio begins slightly before the time you typed. Chat timestamps stay absolute to the full VOD, so 0:00 in a trimmed file is not your typed start, and the two sets of timestamps drift apart by that overshoot. The selection readout shows the range you asked for, not the widened one, so it will not tell you how far off you are. If chat and speech need to line up, transcribe untrimmed audio.

What the audio export hands a speech-to-text tool

The audio-only rendition is the last entry in the quality dropdown, and that position is deterministic rather than cosmetic: the list is sorted source-first, then by descending bitrate, so the audio track — the lowest bitrate present — always sinks to the bottom. Where the master playlist reports a bitrate, the label carries it in Mbit/s, and for a VOD an estimated size appears beside the dropdown. That estimate is simply bitrate times the selected duration, so it recomputes as you move the trim window and is a fair way to sanity-check a long broadcast before you start.

Which extension you get is decided by a control you can no longer see. Selecting an audio-only quality hides the MP4/TS switch, because an audio track has nothing to remux — but the switch keeps whatever value it last held, and it starts on MP4. With MP4 still selected the in-browser transmuxer runs and you get .m4a; with TS selected you get .aac, and if the transmuxer script fails to load the download quietly falls back to .aac with no error. Neither is MP3; the tool never produces one. After a raw save it says as much, logging "Plays in VLC; for MP4 choose Format → MP4."

Neither extension is a problem downstream. OpenAI's open-source Whisper loads its input through ffmpeg, so it accepts .m4a and .aac directly, and hosted transcription services generally do too. Re-encoding to MP3 first only adds a lossy generation, and converting to WAV only inflates the file; neither changes what the recogniser hears.

One gap no setting can close: Twitch mutes VOD sections flagged for copyrighted music, and the muting is baked into what its servers hand out, so every downloader receives the same silence. A speech-to-text pass over those minutes returns nothing, or invented filler, which is worse. This is where the chat log earns its keep. Chat keeps running through a muted section, so the text transcript of chat frequently tells you what was happening in exactly the minutes where the spoken transcript goes blank.

When it fails: the exact message and what it means

"No chat available for this VOD" means the export ran to completion and Twitch returned no comments at all. "GraphQL HTTP" followed by a status code is a raw response from Twitch's API, so retry before concluding anything about the video. There is also a failure that hides the button rather than printing anything: the chat button is only revealed after a successful analysis, and analysis requests a playback token first, so a video that fails with "VOD unavailable (deleted, private or sub-only)" never gets that far — even though the chat query is a separate request that might have succeeded. Every request carries Twitch's public web Client-ID with no login and no user token, which is precisely why subscriber-only content cannot be reached.

On the audio side the messages come from three different stages, and knowing which one narrows the cause immediately. "Usher 403 (sub-only/expired)" and "Usher 404 (offline/not found)" come from the playlist handshake, before any quality list exists. "No qualities available" means the master playlist parsed but held nothing usable. "Playlist HTTP" with a code comes from fetching the specific rendition you picked, one step later. "Segment failed" is raised only after four attempts on a single chunk, with a lengthening pause between them, so it indicates a persistent problem rather than one dropped request.

If the chat button is not on screen at all, what you analysed was not a past broadcast. It is revealed only when the parsed input is a VOD, so a clip link or a bare channel name hides it: clips carry no chat replay of their own, and a live channel has no stored replay yet. For a clip, open the parent broadcast while it still exists, export that VOD's chat, and read the window around the clip's position in the file.

Your window to export chat is the broadcast's lifespan

Chat replay is stored against the past broadcast, so it inherits that broadcast's lifespan exactly. Twitch deletes past broadcasts after 7 days, 14 for Affiliates, and 60 for Partners (and for channels with Prime or Turbo). When the VOD goes, its chat replay goes with it, and no tool retrieves it afterwards, this one included. Clips never expire, and Highlights are off that clock too — though since 19 April 2025 they share a combined 100-hour storage budget with uploads — which makes them the durable half of an archive, but neither carries an exportable chat log: a Highlight preserves the video while the surrounding chat still dies on the parent broadcast's schedule.

The practical order is chat first. That export needs no media download, goes straight to Twitch's GraphQL endpoint rather than through the media relay, and finishes in seconds even on a long broadcast; the audio can wait. There is no live path for chat, because the export reads a stored replay that exists only once the broadcast has ended and the VOD has appeared. If you want the speech from a stream still in progress, record it live and pick the audio-only rendition: a live recording is never remuxed, so it saves as .aac, and it stops itself after three hours, after which you can start it again.

How to download a Twitch video

  1. 1

    Copy the Twitch VOD URL

    Open the VOD on Twitch and copy its twitch.tv/videos/… link.

  2. 2

    For the chat: download the replay as text

    Paste the link into the Twitch chat downloader and export the chat as a timestamped plain-text transcript.

  3. 3

    For the speech: extract the audio, then transcribe

    Save the VOD's audio (an .m4a/.aac file), then run it through a free speech-to-text tool to turn the spoken words into text.

Frequently asked questions

Does Twitch have a transcript feature?

No. Twitch has no built-in transcript or subtitle export for VODs. You can get a chat transcript by downloading the chat replay, and a spoken transcript by transcribing the VOD's audio with a speech-to-text tool.

Is there a Twitch transcript generator?

There's no official one. For the chat, vodfetch exports the full chat replay as text. For the spoken audio, save the VOD's audio (an .m4a/.aac file) and run it through any speech-to-text tool — that combination is the closest thing to a Twitch transcript generator.

Can I get a transcript of Twitch chat?

Yes. Twitch stores the chat replay with each VOD, and vodfetch can download it as a timestamped plain-text file — a complete chat transcript.

How do I transcribe what a streamer said?

Extract the VOD's audio with vodfetch (an .m4a/.aac file), then feed that file to a speech-to-text tool. Free options include open-source Whisper. Twitch doesn't provide the spoken words as text itself.

Does Twitch have subtitles?

Not as a stored feature you can export. Some browser extensions add live auto-captions while you watch, but Twitch doesn't save or export subtitles for a VOD.

What exactly does the chat transcript file look like?

A plain .txt file named after the video ID, such as 2381546891_chat.txt, with one message per line in the form [timestamp] DisplayName: message. The timestamp is the offset into the VOD, and the hour field is only written once it is non-zero, so [08:00] is eight minutes in and [2:03:04] is two hours, three minutes and four seconds in. If you plan to parse the file, do not assume a fixed number of colons per line.

Can I export the chat for a clip or a live stream?

No. The chat button is shown only for twitch.tv/videos/… links, so it stays hidden for clips and for a live channel. Clips have no chat replay of their own, and a live broadcast has no stored replay until it ends and the VOD appears. For a clip, export the parent broadcast's chat while that VOD still exists and read the section around the clip's position.

Do emotes, badges and name colours appear in the transcript?

Emotes appear as their text codes, because each message is flattened by joining its text fragments. Badges, subscriber months, name colours, emote artwork, user IDs and message IDs do not appear at all: only three fields are requested from Twitch and only those three are written, namely the offset, the display name and the message text. Where Twitch returns no commenter, the name falls back to a question mark.

Why does my spoken transcript have gaps where someone was clearly talking?

Twitch mutes VOD sections flagged for copyrighted music, and that mute is baked into the audio its servers deliver, so every downloader gets the same silence. Speech-to-text over those minutes returns nothing useful. Cross-reference the chat transcript for the same timestamps: chat keeps running through muted sections, so it usually shows what was happening while the audio is blank.

Do the chat timestamps line up with the video?

Yes, as long as you do not trim. The chat file and the chapters file both use the video's own offset clock, the same one behind Twitch's ?t= share links, so you can append a timestamp to the VOD URL to jump straight to a line. If you trim the audio, the cut expands outward to whole segment boundaries, so the trimmed file's 0:00 is not the time you typed and the two clocks no longer match.

Why do I sometimes get .m4a and sometimes .aac?

The MP4/TS switch decides it, even though selecting an audio-only quality hides that switch from the form. It keeps its last value and starts on MP4, so by default the in-browser transmuxer runs and you get .m4a; if it was left on TS, or if the transmuxer script does not load, the file saves as .aac without an error. A live recording is never remuxed, so live audio is always .aac. Neither case produces MP3, and both feed a speech-to-text tool directly.

Ready to download? Use the free Twitch Chat Downloader.

More questions? See the full Twitch downloader FAQ

Download your Twitch video now

Paste a Twitch link and save it as MP4 in seconds — free, no account.

Open the Twitch Downloader

Related guides

How to Download Twitch Clips for TikTok, YouTube Shorts & Reels

To repurpose a Twitch clip for short-form video, download it as an MP4 with our free browser-based Twitch Downloader, then crop it to 9:16 vertical and add captions before uploading to TikTok, YouTube Shorts or Instagram Reels. The download is watermark-free and keeps the clip's original resolution, so always credit the original streamer.

Is It Legal to Download Twitch VODs? What You Need to Know

Downloading public Twitch content for personal, private use—and especially backing up your own VODs—is generally low-risk. The key rules: respect Twitch's Terms of Service and copyright, and never redistribute or monetize someone else's content. This is general information, not legal advice.

OBS vs a Twitch Downloader: Which Is Better for Saving Streams?

OBS and a browser downloader solve two different problems: OBS records a broadcast live as it happens, while a downloader saves an existing Twitch VOD or clip after the stream. Here's an honest comparison — system load, disk space, ease of use — so you pick the right one for archive vs broadcast.

← Back to the Twitch Downloader