About

This tool runs entirely in your browser.

Your data never leaves this tab

  • No server. The page is static HTML/CSS/JS. There is no backend to send data to.
  • No telemetry. No analytics, no tracking pixels, no cookies, no fonts loaded from a CDN.
  • No network requests by default while you use the app — open your browser's Network tab and watch. The one exception is opt-in: if you flip the Thumbnails switch in the report header, the page hotlinks YouTube video thumbnails from i.ytimg.com (no API, no key, no JSON — just images).
  • Parsing happens locally. Your watch-history.json is read with the browser's File API and processed in memory.
  • Refresh = gone. Nothing is persisted; reloading the page wipes the report.

How to get your watch-history.json

Google bundles your YouTube history into a download via Google Takeout. It usually takes a few minutes to an hour, depending on how much data you have.

  1. 1

    Open Google Takeout

    Visit takeout.google.com while signed in to the Google account you use for YouTube.

  2. 2

    Deselect everything, then select only "YouTube and YouTube Music"

    Click Deselect all at the top of the product list, scroll down, and tick only the YouTube box. This keeps the download small.

  3. 3

    Narrow the content to just history

    Click All YouTube data included. In the modal: Deselect all, then tick only history. Choose JSON as the format (the default is HTML — change it).

  4. 4

    Create the export

    Pick Send download link via email, one-time export, .zip format. Click Create export.

  5. 5

    Download and unzip

    When the email arrives, download the archive and unzip it. You'll find watch-history.json at Takeout/YouTube and YouTube Music/history/watch-history.json.

  6. 6

    Drop the file

    Head back to the home page and drop the file. Your report appears immediately.

What gets counted

The report uses only the "Watched …" entries from your history. Ads, posts, and YouTube Music entries are filtered out. Channel names come from the entry's first subtitle; if a video was removed or the channel was deleted, it shows as (unknown / removed).

About the channel avatars

By default, the colorful circles next to channel names are generated deterministically from the channel's name — same name, same colors. They aren't fetched from YouTube, so there are no network requests.

If you flip the Thumbnails switch in the report header, those circles get replaced with the thumbnail of each channel's most-watched video, hotlinked from i.ytimg.com. There's no API call and no key involved — your browser just loads each image directly, the same way it would on any other page that embeds a YouTube thumbnail. YouTube can see the request, so the toggle is off by default; the choice is yours.

Found a bug or want to read the code?

It's a small, dependency-free project: one HTML file, one stylesheet, one core module, one renderer. View source to read it all.

← Back to the report