Export YouTube channel videos, Shorts, playlists, and search results to CSV, JSON, XLSX, or Markdown — directly from your browser. Free, open‑source, and 100% client‑side.
YT Data Exporter is a lightweight Chrome browser extension that turns any YouTube channel page, Shorts feed, playlist, or search results page into a clean, structured dataset. Perfect for content creators, marketers, researchers, journalists, and data analysts who need YouTube data without API keys, scraping services, or paid tools.
- Why YT Data Exporter
- Features
- Supported pages
- Supported browsers
- Installation
- How to use
- How it works
- Export formats
- Data fields exported
- Filters
- Settings
- Keyboard shortcut
- Privacy
- FAQ
- Contributing
- License
Tired of copying YouTube video titles into spreadsheets by hand? Hitting the YouTube Data API v3 quota limits? Paying for SaaS scrapers that lock your data behind a subscription?
YT Data Exporter solves all of that:
- No API key required — works on the public DOM, no quotas, no auth.
- No server, no tracking — every byte stays on your machine.
- No subscription — free and open source under the MIT license.
- No setup — install, click, download.
If you've ever searched for a "YouTube channel video list exporter", "YouTube playlist to CSV", "YouTube Shorts scraper", or a "competitor channel research tool", this is the one‑click answer.
- One‑click export of videos, Shorts, playlists, and search results
- Live preview window with sortable, searchable table before download
- Export to CSV, JSON, XLSX (Excel), or Markdown
- Filters: minimum/maximum views, upload age, duration, title keyword, content type
- Aggregate statistics (total videos, total views, average views, top 10 by views)
- Auto‑scroll to load every video on long channels
- Re‑hydrate pass to fill in metadata YouTube lazy‑loads
- Configurable item cap for large channels
- Cancel mid‑scrape at any time
- Light & dark theme toggle
- Page‑type auto‑detection — knows whether you're on a channel, playlist, Shorts feed, or search
- Keyboard shortcut: Ctrl+Shift+Y (⌘+Shift+Y on Mac)
| Page type | URL pattern | Example |
|---|---|---|
| Channel Videos tab | youtube.com/@handle/videos |
All long‑form videos on a channel |
| Channel Shorts tab | youtube.com/@handle/shorts |
All Shorts on a channel |
| Playlists | youtube.com/playlist?list=... |
Any public playlist |
| Search results | youtube.com/results?search_query=... |
Any search query |
YT Data Exporter is a Chromium Manifest V3 extension and runs on every major Chromium‑based browser:
- ✅ Google Chrome (v109+)
- ✅ Microsoft Edge (v109+)
- ✅ Brave
- ✅ Opera
- ✅ Vivaldi
- ✅ Arc
- ✅ Any other Chromium‑based browser that supports Manifest V3 extensions
Firefox is not currently supported — Firefox's MV3 implementation differs from Chromium. Firefox support is on the roadmap; PRs welcome.
- Download the latest release as a ZIP, or clone the repo:
git clone https://github.com/amolbangare08/YT-Data-Exporter.git
- Open your browser and go to:
- Chrome:
chrome://extensions - Edge:
edge://extensions - Brave:
brave://extensions
- Chrome:
- Enable Developer mode (top‑right toggle).
- Click Load unpacked and select the
YT-Data-Exporterfolder. - Pin the extension to your toolbar — done.
Coming soon.
- Open any supported YouTube page (channel Videos, channel Shorts, a playlist, or search results).
- Click the YT Data Exporter icon in your toolbar — or press Ctrl+Shift+Y.
- (Optional) Switch to the Filters tab to narrow results by views, age, duration, or title keyword.
- (Optional) Switch to the Settings tab to set a max item cap or change the default format.
- Click Scrape & Preview.
- The extension auto‑scrolls the page to load every item, then opens a preview tab with a sortable table, summary stats, and a top‑10 list.
- Pick your format (CSV / JSON / XLSX / Markdown) and click Download.
That's it. No accounts, no API keys, no rate limits.
YT Data Exporter is a content‑script‑based scraper. Here's what happens under the hood:
- When you click Scrape & Preview, the popup sends a
scrapeDatamessage to the active YouTube tab. - A content script (
content.js) injected intoyoutube.comauto‑scrolls the page usingwindow.scrollTountil no new items load (or your max‑item cap is reached). - It then walks the DOM using a hardened set of selectors that cover both YouTube's modern (
yt-content-metadata-view-model) and legacy (#metadata-line) rendering paths. - For each video card, it extracts:
- Title, video ID, watch URL, thumbnail
- View count (parsed from
aria-label, metadata row, or subhead) - Upload time (relative — "2 days ago" — and an absolute timestamp estimate)
- Duration (parsed from the badge overlay)
- Whether it's a Short or a long‑form video
- Channel‑level info (name, description, subscriber count) is grabbed from the page header.
- Filters are applied client‑side, then the dataset is handed to
preview.html, which renders the table, stats, and top‑10 chart. - When you click Download, the data is serialized in your chosen format and saved via a Blob URL — nothing ever leaves your browser.
Permissions used (minimal):
activeTab— read the YouTube tab you click onscripting— inject the content scriptstorage— remember your filter and theme preferences
No host_permissions for any non‑YouTube domain. No network requests to anywhere outside YouTube.
| Format | Best for | Notes |
|---|---|---|
| CSV | Excel, Google Sheets, pandas, R | UTF‑8 with BOM, RFC‑4180‑style quoting |
| JSON | Developers, automation, APIs | Pretty‑printed, includes metadata block |
| XLSX | Power BI, Excel power users | Native Excel format, multiple sheets |
| Markdown | GitHub READMEs, Notion, Obsidian | Pipe table with summary header |
Each row in the export contains:
title— video titlevideoId— YouTube video ID (e.g.dQw4w9WgXcQ)url— fullhttps://www.youtube.com/watch?v=...linkthumbnail— high‑quality thumbnail URLviews— display string (e.g."1.2M views")viewsCount— numeric views, parsedtimeUploaded— relative string (e.g."3 weeks ago")uploadedDate— best‑effort ISO date estimateduration— display string (e.g."12:34")durationSeconds— duration in secondsisShort— boolean
Plus a top‑level metadata block with channel name, description, total videos found, total views, and average views.
Filters apply during preview generation, so you only export what you actually need.
- Views — min and/or max
- Upload age — last 24 hours / 7 days / 30 days / 12 months / any time
- Duration — under 4 min, 4–20 min, over 20 min, or any
- Title contains — case‑insensitive keyword match
- Content type — include videos, Shorts, or both
- Auto‑scroll to load all items — toggle on/off
- Re‑scroll to hydrate metadata — fixes missing views/dates on lazy‑rendered cards
- Max items to scrape — useful cap for huge channels
- Default export format — CSV, JSON, XLSX, or Markdown
All settings persist via chrome.storage.
| Action | Windows / Linux | macOS |
|---|---|---|
| Open YT Data Exporter | Ctrl+Shift+Y | ⌘+Shift+Y |
You can rebind it at chrome://extensions/shortcuts.
YT Data Exporter is fully client‑side:
- No analytics, no telemetry, no error reporting.
- No external network requests — only YouTube's own DOM is read.
- No accounts, sign‑ups, or API keys.
- Settings are stored locally via
chrome.storage.local.
Your data is yours. Period.
No. It reads the public DOM of the page you have open, so there are no API quotas or keys involved.
The extension simply automates scrolling and reads what's already on screen — the same thing your eyes do. That said, scraping at scale is against YouTube's Terms of Service, so use responsibly.
YouTube lazy‑loads metadata as you scroll. Enable Re‑scroll to hydrate metadata in Settings, or just scroll the page once before clicking Export.
It's been tested on channels with 2,000+ videos. For very large channels, set a Max items cap in Settings and expect the scrape to take a few minutes.
No — only on www.youtube.com channel/playlist/search/Shorts pages.
No. The extension only reads what YouTube renders on the page; comments and subscriber lists aren't part of the supported page types.
Contributions welcome. If YouTube changes its DOM and a selector breaks, that's the most common kind of fix:
- Open
content.js. - Find the
SELECTORSblock at the top — every CSS selector lives there. - Update the broken one and submit a PR.
For larger changes, please open an issue first to discuss the approach.
MIT © Amol Bangare
youtube channel exporter, youtube to csv, youtube to excel, youtube to json, youtube playlist exporter, youtube shorts scraper, youtube search results export, youtube data extractor, youtube channel videos list, youtube competitor research, youtube data without api key, chrome extension youtube, youtube data exporter free, open source youtube scraper