A Chrome DevTools extension that captures, reassembles, and exports split binary file chunks from Telegram Web network requests.
- π― Automatically detects Telegram progressive document downloads
- π¦ Captures binary chunks with proper Content-Range parsing
- ποΈ Groups chunks by file automatically
- π Shows real-time download progress for each file
- π Reassembles chunks in the correct order
- πΎ Individual download buttons for each file
- ποΈ Delete individual files or reset all
- π§Ή Clean UI with file management
- π§ͺ Built-in test mode to verify extension is working
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" (toggle in top right)
- Click "Load unpacked"
- Select the
telehackerfolder - The extension is now installed!
- Open Chrome DevTools (F12 or Right-click β Inspect)
- Navigate to the "Telegram Stream" tab (should appear as a new tab in DevTools)
- Click the "π§ͺ Test Extension" button
- You should see a test chunk appear and the status update
- Check the debug info bar showing: Status, Requests count, and Chunks count
- Go to Telegram Web
- Login to your account
- Find a file to download (document, video, audio, etc.)
- Click to download the file
- Watch the extension capture chunks automatically
- The "Requests" counter will increment as network activity is detected
- When chunks are captured, they'll appear in the list
- Each captured file appears in the list with:
- File name and icon
- Number of chunks captured
- Download progress bar
- Current size vs total size
- Progress percentage
- Click the "πΎ Download" button on any file to download it
- Use the "ποΈ Delete" button to remove individual files
- Use "ποΈ Reset All" to clear all captured files
The extension follows this binary processing flow:
- Capture: Listens for network requests matching
https://web.telegram.org.*/progressive/document - Parse Headers: Extracts
Content-Range(format:bytes start-end/total) - Decode Binary: Converts Base64 response to
Uint8Array(raw binary bytes) - Sort: Orders chunks by
startBytefrom Content-Range - Reassemble: Creates a single
Uint8Array(totalSize)and uses.set()to place each chunk at the correct offset - Export: Converts to
Bloband triggers browser download
- manifest.json: Manifest V3 configuration with devtools permissions
- devtools.html/js: Creates the "Telegram Stream" panel
- panel.html: UI with chunk list, buttons, and status messages
- panel.js: Core logic for network listening, binary processing, and file reassembly
The extension properly handles binary data by:
- Decoding Base64 to raw bytes using
atob()+Uint8Array - Never concatenating Base64 strings directly (prevents corruption)
- Using
Uint8Array.set()for efficient byte-level merging - Preserving binary integrity through proper Content-Range ordering
Regex pattern: https://web\.telegram\.org.*/progressive/document
This captures all progressive document downloads from Telegram Web, including:
- Documents
- Videos
- Large media files
Problem: Can't see "Telegram Stream" tab in DevTools
- Solution 1: Reload the extension in
chrome://extensions/and restart DevTools - Solution 2: Close and reopen DevTools (F12)
- Solution 3: Make sure the extension loaded without errors in
chrome://extensions/
Problem: Requests counter increases but no chunks captured
- Solution 1: Check DevTools Console (Console tab) for error messages
- Solution 2: Verify you're on
web.telegram.org(not the desktop app) - Solution 3: DevTools must be open BEFORE starting the download
- Solution 4: Try downloading a larger file (small files may not be chunked)
- Solution 5: Some files might not use the progressive download format
- Check the debug bar at the top shows "Status: Active & Listening"
- Click "π§ͺ Test Extension" - a test chunk should appear
- The "Requests" counter should increment when browsing any page
- Open DevTools Console and look for messages like:
β Telegram Stream Capture panel loaded and ready![1] Request: https://...(for each network request)
Problem: Extension seems frozen
- Solution 1: The extension only monitors while DevTools is open
- Solution 2: Refresh the DevTools panel (close and reopen the Telegram Stream tab)
- Solution 3: Navigate to any webpage - the counter should increase
Problem: Warning about missing bytes when combining
- Cause: Some chunks may be missing or out of order
- Solution: You can continue, but the file may be corrupted
- Alternative: Reset and try downloading again with DevTools open from the start
Problem: Combine button clicked but no download
- Solution 1: Check browser's download permissions
- Solution 2: Look for blocked pop-ups in address bar
- Solution 3: Check DevTools Console for errors
- Solution 4: Try the "Combine & Download" button again
Problem: Combined file won't open or is corrupted
- Cause 1: Missing chunks (see Gap Detected warning)
- Cause 2: Download started before DevTools was open
- Solution: Reset, open DevTools first, then start download again
- Open the "Telegram Stream" tab in DevTools
- Switch to the "Console" tab in DevTools
- Look for messages prefixed with:
β= Success messagesπ¦= Chunk informationβ οΈ= Warningsβ= Errors
When extension is working correctly:
β
Telegram Stream Capture panel loaded and ready!
π To test: 1) Open Telegram Web, 2) Download a file, 3) Watch this panel
[1] Request: https://web.telegram.org/...
[2] Request: https://static.telegram.org/...
β
Telegram chunk detected: https://web.telegram.org/.../progressive/document
π¦ Chunk info: 0-524287 of 1048576
Content encoding: base64, length: 699051
β
Captured chunk: 0-524287 (512 KB)
No Content-Range header found- File might not be chunked (single download)Invalid Content-Range format- Unexpected header formatNo content received- Empty response bodyError combining chunks- Issue during reassembly (check console for details)
If you need to capture files from different sources, edit panel.js line ~34:
// Current pattern (Telegram only)
const urlPattern = /telegram\.org.*\/(upload|download|progressive)/i;
// To capture all requests (for testing)
const urlPattern = /.*/;
// To capture specific domain
const urlPattern = /example\.com.*\/api\/files/i;MIT License - Feel free to modify and distribute!