A Chrome extension that allows you to download MS Teams meeting transcripts in multiple formats, even when the download button is disabled due to permissions.
This works for both teams.microsoft.com (Web Teams) and *.sharepoint.com meeting recording links.
- ποΈ Automatic Detection: Detects when you're viewing a Teams transcript
- π₯ Multiple Formats: Download transcripts as RAW JSON, VTT, or Grouped VTT
- π€ Speaker Names: Preserves speaker display names in all formats
- π Live Previews: Preview transcript in each format before downloading
- πΎ Easy Download: Adds a custom "Download Transcript" button to the transcript page
- π¨ Format Selection: Choose your preferred format via extension popup or modal dialog
The extension overrides the existing "Download Transcript" button.
-
Download or Clone this repository to your local machine
-
Open Chrome Extensions Page:
- Navigate to
chrome://extensions/ - Or click the three-dot menu β More Tools β Extensions
- Navigate to
-
Enable Developer Mode:
- Toggle the "Developer mode" switch in the top-right corner
-
Load the Extension:
- Click "Load unpacked"
- Navigate to the
srcfolder in this repository - Select the folder and click "Select Folder"
-
Verify Installation:
- You should see "MS Teams Transcript Downloader" in your extensions list
- The extension icon should appear in your Chrome toolbar
-
Navigate to a Teams Meeting Recording:
- Open a MS Teams meeting recording that has a transcript
- Click on the "Transcript" tab to view the transcript
-
Wait for the Extension:
- The extension automatically detects the transcript page
- It intercepts MS Teams API calls to capture the transcript metadata
- A green "Download Transcript" button appears next to the disabled download button
-
Download the Transcript:
- Click the "Download Transcript" button
- A modal dialog appears with three format options and live previews
- Choose your preferred format:
- RAW JSON: Original API response with full metadata and speaker names
- VTT: Standard WebVTT format with speaker labels and timestamps
- Grouped VTT: Text format with consecutive messages grouped by speaker
- Click "Download" to save the transcript
-
Set Default Format (Optional):
- Click the extension icon in the Chrome toolbar
- Select your preferred default format
- Future downloads will skip the modal and use your preference
βββββββββββββββββββββββββββββββββββ
β MS Teams Transcript Page β
β (iframe embedded in main page) β
ββββββββββ¬βββββββββββββββββββββββββ
β
β 1. Fetch API calls intercepted
βΌ
βββββββββββββββββββββββββββββββββββ
β intercept.js (MAIN world) β
β - Intercepts fetch() calls β
β - Captures transcript metadata β
β - Posts to window β
ββββββββββ¬βββββββββββββββββββββββββ
β
β 2. postMessage
βΌ
βββββββββββββββββββββββββββββββββββ
β content.js (ISOLATED world) β
β - Receives transcript URL β
β - Injects Download button β
β - Handles format conversion β
β - Shows format selection modal β
ββββββββββ¬βββββββββββββββββββββββββ
β
β 3. Fetch with ?format=json
βΌ
βββββββββββββββββββββββββββββββββββ
β MS Teams API β
β temporaryDownloadUrl endpoint β
β - Returns JSON with speakers β
β - Or VTT if no format param β
βββββββββββββββββββββββββββββββββββ
The extension intercepts MS Teams API calls to the transcript metadata endpoint:
/_api/v2.1/drives/{driveId}/items/{itemId}/media/transcripts
This endpoint returns a temporaryDownloadUrl which can be used to fetch the transcript:
temporaryDownloadUrl(default): Returns WebVTT formattemporaryDownloadUrl?format=json: Returns JSON with full metadata
-
RAW JSON: Direct download from API with
?format=jsonparameter- Contains:
entries[]withspeakerDisplayName,startOffset,endOffset,text,id
- Contains:
-
VTT: Converted from JSON
- Standard WebVTT format with timestamps
- Cue identifiers use speaker IDs
- Speaker names in NOTE comments
-
Grouped VTT: Converted from JSON
- Groups consecutive messages by the same speaker
- Format:
Speaker Name:\nMessage 1\nMessage 2\n\n - Preserves chronological order
chrome-extension/
βββ manifest.json # Extension configuration (Manifest V3)
βββ intercept.js # Fetch interceptor (MAIN world, runs at document_start)
βββ content.js # Main extension logic (ISOLATED world, runs at document_idle)
βββ background.js # Background service worker (stores transcript metadata)
βββ modal.css # Format selection modal styles
βββ popup.html # Extension popup UI
βββ popup.js # Popup logic (format preferences)
βββ icons/
βββ icon128.svg # Extension icon
The extension requires the following permissions:
storage: To store user's format preferences- Host permissions: Access to
teams.microsoft.comand*.sharepoint.comwhere Teams transcripts are hosted - Content Script MAIN world: To intercept fetch() calls in the page context
- Refresh the page after installing the extension
- Check the console (F12) for error messages (look for
[MS Teams Transcript]logs) - Verify you're on a Teams transcript page (URL should contain
teams.microsoft.comorsharepoint.com) - Wait a few seconds - the button is injected after the API call is intercepted
- Check the browser console for error messages
- Verify the transcript has loaded properly in the Teams UI
- Try refreshing the transcript page to trigger a new API call
- Check that you have permission to view the transcript
- Check console for errors during format conversion
- Verify the JSON data was captured (check console logs)
- Try clicking the Download button again
- Reload the extension:
- Go to
chrome://extensions/ - Click the reload icon on the extension card
- Go to
- Check Developer Mode is enabled
- Clear browser cache and reload the Teams page
- Check that both
intercept.jsandcontent.jsare loading (F12 β Sources tab)
- β No data is sent to external servers - all processing happens locally in your browser
- β No tracking or analytics
- β Open source - review the code yourself
- β Uses MS Teams' official API endpoints (temporaryDownloadUrl)
- Load the extension in Chrome
- Navigate to a Teams meeting with transcript
- Open DevTools (F12) and check the Console
- Look for
[MS Teams Transcript Downloader]log messages
Enable verbose logging in the console:
- Open the Teams transcript page
- Press F12 to open DevTools
- Go to Console tab
- Look for
[MS Teams Transcript]messages - Debug-level logs show detailed format conversion info
- Check Network tab for API calls to
/transcriptsendpoints
- Only works on Teams transcripts accessible via the web interface
- Requires the transcript API call to be intercepted (happens when viewing the transcript)
- Cannot bypass access restrictions - only works if you can view the transcript
- Chrome/Edge only (Manifest V3)
- Must have the Transcript tab open for the extension to detect it
MIT License - See LICENSE file for details
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
If you encounter issues:
- Check the troubleshooting section above
- Review the browser console for errors
- Open an issue on GitHub with details
Created as a tool to help access your own Teams meeting transcripts when the download button is disabled due to organizational permissions.
Note: This tool is intended for accessing your own meeting transcripts. Please respect copyright and privacy policies when using this extension.


