How to Download a Twitch VOD With Chat (Video + Chat Replay)
Updated: 2026-06-30 · Written by the vodfetch founder
Want the video and the chat? Here's how to download a Twitch VOD as an MP4 and export its full chat replay as a text file — free, in your browser, before the VOD is deleted.
Can you download a Twitch VOD together with its chat?
Twitch stores a past broadcast (the VOD) and the chat replay that scrolled alongside it, but it does not offer a single button to download both — and it deletes VODs after 7 to 60 days depending on the account. To keep them, you download the video and the chat separately, then pair them up on your own computer.
vodfetch handles both in one place: it saves the VOD as a clean MP4 in source quality, and it can export the complete chat replay as a plain-text file with timestamps. No account, no software and no watermark — everything runs in your browser.
How to download the Twitch VOD video as MP4
Grab the VOD URL from the address bar (it looks like twitch.tv/videos/123456789), paste it into vodfetch, and click Analyze. Pick your quality — choose the ★ Source option for the original 1080p60 — and download it as an MP4 that plays anywhere.
If you only need a moment of the stream, switch on Trim and drag the scrubber to save just that section, which also keeps the file small.
How to download the Twitch chat replay
After you analyze a VOD, vodfetch shows a Chat (.txt) option. Click it and the tool pages through the entire chat replay and saves it as a text file, with each message prefixed by its timestamp and the viewer's name.
The result is a lightweight, searchable record of the conversation that you can open in any text editor, import into a video editor as reference, or keep as a memory of the stream.
Why download the chat as well as the video?
The chat is half of what makes a Twitch stream feel alive. Editors use the chat log to find the exact moments viewers reacted to, so they can cut highlights and clips faster. Streamers keep it as a record for moderation or community memories.
Because Twitch removes VODs (and their chat) on a schedule, the only way to keep the chat replay long-term is to export it before the VOD expires.
What is actually inside the chat .txt file
The export is a single file named after the VOD's numeric ID: a broadcast at twitch.tv/videos/2345678901 produces 2345678901_chat.txt. Inside, every message occupies one line in the form [12:34] DisplayName: the message text. The timestamp is the offset into the stream, not a wall-clock time, and the hour component is omitted while the offset is still under an hour, so the first hour reads [07:41] and the second reads [1:07:41]. Any script you write against the file has to accept both shapes.
The name shown is Twitch's display name, the cased version a viewer chose, not the lowercase login. Emotes arrive as their text codes, because the export concatenates the text of each message fragment: a line ending in Kappa or LUL is exactly what Twitch stored. Where Twitch returns no commenter for an entry, usually a since-deleted account, the name is written as a single question mark. The file itself is UTF-8 with no byte-order mark, lines separated by a single LF and no trailing newline, which matters if you are importing it somewhere that assumes the system codepage or CRLF.
What the file does not carry is everything the request never asked for: no subscriber or moderator badges, no name colours, no per-message IDs, no bits rendering beyond the literal text, and no emote images. There is no JSON or CSV option either. The export asks Twitch for three things per message, the offset, the display name and the message text, and writes exactly those.
Lining the chat up with the video
Every timestamp in the file is measured from second zero of the complete broadcast. The chat export always requests comments from offset zero and pages forward to the end, so nothing you set in the Trim panel changes it. Trim shapes the MP4 only. Download a 90-second cut starting at 1:12:00 and the chat file still covers the whole stream, with a message marked 1:12:30 sitting half a minute into your clip rather than at 1:12:30 of it.
So when you trim, subtract the trim start from each chat timestamp to get the position inside your file. One catch: trimming keeps whole segments, and the cut expands outward to segment boundaries at both ends, so the saved MP4 usually begins slightly earlier than the time you typed. Check the real duration of the file you got before assuming a fixed offset. That drift comes from the segment expansion, not from the chat timestamps, which are exact.
The two downloads do not share a filename by default. The video name is built from the metadata, roughly Streamer_2026-06-30_Stream title_1080p60.mp4, with the reserved path characters swapped for underscores but spaces left intact, while the chat file is always <id>_chat.txt. If you are archiving in bulk, type the numeric ID into the Filename field before you download, because whatever you put there replaces the generated name entirely. That ID is the only part of the pair that still points back at twitch.tv/videos/<id> after the VOD itself has been deleted.
Worked example: find the moment chat reacted, then cut it
A common reason to export chat is to locate the moment viewers reacted and then save only that. Search the chat file rather than scrubbing the video: open 2345678901_chat.txt in any editor and look for a keyword, a phrase from the game, a name, a burst of one particular emote, and you have a timestamp in seconds. On the command line, grep -n PogChamp 2345678901_chat.txt does the same with line numbers, and line order is time order.
Convert that timestamp to Twitch's t syntax and hand it back to the tool in the URL. The page reads three query parameters: url (or u) fills the input box, go=1 (or autostart=1) runs Analyze by itself, and t pre-fills Trim. So https://vodfetch.com/?url=https://twitch.tv/videos/2345678901&t=2h14m7s&go=1 loads the VOD, expands the Advanced panel, switches Trim on, and sets the range to 2:14:07 to 2:15:07, a one-minute window around the line you found.
Two constraints on that shortcut. The t parameter only does anything for a VOD, and only when the offset is above zero and inside the video's duration; a value past the end is ignored and Trim simply stays off. And the sixty-second window is a starting point, not a rule. Drag the scrubber handles or edit the From and To fields to widen it before downloading. A bare number of seconds works too, so t=8047 behaves exactly like t=2h14m7s.
When the chat export fails, and what each message means
The Chat (.txt) button is only revealed for a past broadcast. It stays hidden for clip links and for a bare channel name, because a chat replay exists only for a VOD: a clip carries none, and live chat is not being recorded while you watch. If you pasted a channel and got the channel browser, click one of the VOD cards. That fills the URL box and re-runs Analyze, and the chat button appears with the rest of the result panel.
More often the button never appears because Analyze failed first. "VOD unavailable (deleted, private or sub-only)" means Twitch returned no playback token for that video. The chat lives behind a different request, but the button is only rendered once Analyze succeeds, so in practice a VOD you cannot analyze is one whose chat you cannot reach either. There is no login and no user token anywhere in the tool, which is why sub-only content stops at that gate.
"No chat available for this VOD" means the analyze worked but Twitch returned zero comments, typical for an uploaded video that never had a live chat, or a broadcast whose chat replay is not served. Anything of the form "GraphQL HTTP" followed by a status code means a page request was rejected part-way through. There is no retry and no partial save on error: the lines gathered so far are discarded, nothing is written to disk, and a restart begins again from the first message.
Two more things to check. The chat export talks straight to gql.twitch.tv and never touches the media proxy, so a blocker, DNS filter or corporate network that blocks that host kills the chat export and Analyze together; try the same VOD with the extension paused. And unlike a live recording, the chat export shows no Stop button, so reloading the page abandons it and nothing is saved when you do.
The limits, stated plainly
The export is capped. It fetches 100 messages per request and stops after 3,000 requests, so 300,000 messages is the ceiling and a chat longer than that would simply end there. The requests are strictly sequential, because each one needs the cursor returned by the previous page, so the export takes time in proportion to the number of messages rather than the length of the stream. A quiet eight-hour broadcast finishes faster than a busy two-hour one.
While it runs, the counter in the stats row above the log shows the running message total, advancing in jumps of 100 because it is written once per page rather than once per message. That is the only progress indicator: Twitch never reports how many messages a VOD holds, so there is no honest percentage to display. Every line is kept in memory and written out in one go at the end, which is why the file lands in your downloads folder all at once instead of growing as the export proceeds, and why the log line reading Chat saved, with the final count in brackets, is the first confirmation you get that it worked.
The file contains exactly what Twitch's public comments endpoint still returns. Messages deleted by a moderator or by Twitch are not in it and no tool can recover them, and neither is anything from a VOD that has already expired: past broadcasts go after 7 days, 14 for Affiliates, and 60 for Partners (and for channels with Prime or Turbo), taking the chat replay with them. Pasting a channel name instead of a URL lists its 24 most recent broadcasts, and any of them inside the last two weeks of its retention window carries a small badge estimating the days left. Treat it as a rough guide: it assumes 7 days for a plain channel, 14 for an affiliate and 60 for a partner, it has no case for the 60-day Prime or Turbo extension so it can read low, and it is not drawn on the extra pages you load with the more button.
Finally, what this is not. There is no chat-overlay video, no JSON export and no subtitle file. A .srt or .ass track needs a start and an end time for every line, and the export stores a single offset per message, so converting it means choosing a display duration yourself. If you want chat burned into the video, this text file is the input to that job rather than the finished result of it.
How to download a Twitch video
- 1
Copy the Twitch VOD URL
Open the past broadcast on Twitch and copy the link (twitch.tv/videos/…).
- 2
Paste it into vodfetch and Analyze
Drop the URL into the box and click Analyze to load the VOD.
- 3
Download the video as MP4
Choose the ★ Source quality and click Download to save the MP4.
- 4
Save the chat replay
Click Chat (.txt) to export the full chat replay with timestamps.
Frequently asked questions
Does vodfetch download Twitch chat?
Yes. After you analyze a VOD, click Chat (.txt) and vodfetch saves the entire chat replay as a timestamped text file — free and with no account.
What format is the downloaded Twitch chat?
The chat is saved as a plain .txt file, with each line showing the timestamp, the viewer's name and their message, so it opens in any text editor.
Can I download the chat without the video?
Yes — you can export the chat replay on its own; you don't have to download the MP4 first if you only want the conversation.
Does the downloaded chat include timestamps?
Yes. Every message is prefixed with its offset into the stream, so you can line the chat up with the video.
Why don't the chat timestamps match my trimmed video?
Because Trim only shapes the MP4. The chat export always requests comments from offset zero, so its timestamps are measured from the start of the full broadcast: subtract your trim start from each one to get the position inside your file. Expect a little extra offset as well, because trimming keeps whole segments and expands to segment boundaries at both ends, so the saved video normally starts slightly earlier than the time you entered.
Can I export just the chat for one section of a VOD?
Not from the tool. The request offset is fixed at zero, so you always receive the complete chat replay in one file. Filter it afterwards instead. The lines are chronological and each begins with [MM:SS] or [H:MM:SS], so an editor's search, or grep on the command line, isolates a viewer, a keyword or a stretch of time. Remember that the hour is omitted for the first hour, which trips up naive time-range matching.
Do emotes, badges and name colours survive the export?
Emotes appear as their text codes, because the file joins the text of each message fragment, so a line ending in Kappa is what Twitch stored. Badges, name colours, subscriber and moderator status, message IDs and emote images are not included: the export asks Twitch only for the offset, the display name and the message text. Entries where Twitch returns no commenter, usually deleted accounts, are written with a question mark in place of the name.
What does "No chat available for this VOD" mean?
It means the analyze step worked but Twitch's comments endpoint returned nothing for that video ID. The usual causes are an uploaded video that never had a live chat, or a broadcast whose chat replay is not served. It is not a network failure, because a failed request would show "GraphQL HTTP" followed by a status code instead. There is nothing to retry, and no other tool can produce chat that Twitch no longer returns.
How many chat messages can it export?
Up to 300,000: it pulls 100 messages per request and stops after 3,000 requests. The pages are fetched one after another, because each needs the cursor from the previous one, so the time it takes scales with the number of messages rather than the length of the stream. The message counter above the log is the only progress readout, and it moves in jumps of 100 because it updates once per page.
Can I download chat from a clip or a live stream?
No. The Chat (.txt) button only appears for a twitch.tv/videos/ link. Clips have no chat replay attached to them, and live chat is not captured while a stream is running, so a live recording saves the video only, always as a TS file. If you want the conversation around a moment you clipped, export the chat of the parent VOD while that VOD still exists.
Ready to download? Use the free Twitch Chat Downloader.
Download your Twitch video now
Paste a Twitch link and save it as MP4 in seconds — free, no account.
Open the Twitch DownloaderRelated guides
How to Get a Twitch Transcript (VOD, Chat & Spoken Audio)
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.
How to Turn Your Twitch VODs Into a YouTube Channel (The Free, Honest Workflow)
Your Twitch streams are already recorded — you're just letting them expire. Here's a free, honest workflow for turning Twitch VODs into a YouTube channel: what to upload, which moments actually go viral, and how to avoid copyright strikes, without a paid AI pipeline.
How to Raid on Twitch (and Why Raids Grow Channels)
A raid sends your live audience to another channel when you end your stream. Here's how to start one, the etiquette that makes raids work, and how to use them to grow.
Twitch Recap: How to See Yours (and Save the Highlights)
Every December, Twitch Recap sums up your year of watching. Here's exactly where to find it, why some accounts don't get one — and how to save the streams behind it before they expire.
How to Convert a Twitch VOD to MP3: Extract Audio From Any Twitch Stream
To get the audio from a Twitch VOD, paste the link into the browser-based downloader, choose the audio-only quality and click Download. What you get is an .m4a or .aac file — AAC audio copied straight from Twitch, not a re-encoded MP3.
How to Use a Twitch Downloader: A Beginner's Guide (VODs, Clips, Live & More)
Never downloaded a Twitch video before? Here's the simple, no-jargon guide: what a Twitch downloader is, how to use one step by step, and how to save every kind of Twitch content — VODs, clips, live streams, audio and chat — for free, right in your browser.