<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pawan Hirumina </title>
    <description>The latest articles on DEV Community by Pawan Hirumina  (@pawanhirumina).</description>
    <link>https://dev.to/pawanhirumina</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4132598%2Fd26cac4f-d89b-4460-b35f-7123ef40057d.jpg</url>
      <title>DEV Community: Pawan Hirumina </title>
      <link>https://dev.to/pawanhirumina</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pawanhirumina"/>
    <language>en</language>
    <item>
      <title>I was tired of manually copying YouTube transcripts, so I built a 15KB Firefox extension</title>
      <dc:creator>Pawan Hirumina </dc:creator>
      <pubDate>Sat, 19 Sep 2026 08:23:33 +0000</pubDate>
      <link>https://dev.to/pawanhirumina/i-was-tired-of-manually-copying-youtube-transcripts-so-i-built-a-15kb-firefox-extension-o96</link>
      <guid>https://dev.to/pawanhirumina/i-was-tired-of-manually-copying-youtube-transcripts-so-i-built-a-15kb-firefox-extension-o96</guid>
      <description>&lt;p&gt;If you use YouTube for learning, research, or building AI tools, you know this pain:&lt;/p&gt;

&lt;p&gt;Open transcript panel -&amp;gt; Scroll -&amp;gt; Select all -&amp;gt; Try not to copy the whole page -&amp;gt; Paste into notes -&amp;gt; Fix formatting.&lt;/p&gt;

&lt;p&gt;I do this 10 times a day. So I built &lt;strong&gt;yt-transcript-yoinker&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's a tiny Firefox add-on that adds a single "Copy Transcript" button right into the YouTube UI. One click, entire transcript in your clipboard. No account, no external API, no data leaving your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub: &lt;a href="https://github.com/pawanhirumina/yt-transcript-yoinker" rel="noopener noreferrer"&gt;https://github.com/pawanhirumina/yt-transcript-yoinker&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Install from AMO: &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/yt-transcript-yoinker/" rel="noopener noreferrer"&gt;https://addons.mozilla.org/en-US/firefox/addon/yt-transcript-yoinker/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;I needed transcripts for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My own study notes&lt;/li&gt;
&lt;li&gt;Summarizing lectures with LLMs&lt;/li&gt;
&lt;li&gt;Creating subtitles / documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every existing tool either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Required you to paste the YouTube link into some shady website&lt;/li&gt;
&lt;li&gt;Sent your data to a server&lt;/li&gt;
&lt;li&gt;Was a bloated extension asking for permissions to read ALL your data&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I wanted something that just works, locally.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-click copy:&lt;/strong&gt; Adds a button next to the video title/description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart:&lt;/strong&gt; Only shows up if the video actually &lt;em&gt;has&lt;/em&gt; a transcript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private:&lt;/strong&gt; Everything happens in your browser. No fetch(), no backend. Your watch history never leaves your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight:&lt;/strong&gt; &amp;lt; 15 KB packed. No frameworks, just vanilla JS + WebExtension APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Source:&lt;/strong&gt; MIT licensed, auditable in 2 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fctwagq5x8l6177l9ulyy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fctwagq5x8l6177l9ulyy.png" alt=" " width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works under the hood
&lt;/h3&gt;

&lt;p&gt;Super simple, no magic.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Content script listens for YouTube navigation (YouTube is an SPA, so I listen to &lt;code&gt;yt-navigate-finish&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Checks if the transcript endpoint exists for that video ID&lt;/li&gt;
&lt;li&gt;Injects a button into the DOM&lt;/li&gt;
&lt;li&gt;On click, it fetches YouTube's own transcript data (the same JSON the official transcript panel uses) and formats it to plain text with timestamps&lt;/li&gt;
&lt;li&gt;Uses &lt;code&gt;navigator.clipboard.writeText()&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No background server. The whole thing is ~100 lines of JS.&lt;/p&gt;

&lt;p&gt;Stack: HTML, CSS, Vanilla JavaScript (WebExtension APIs)&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Firefox first?
&lt;/h3&gt;

&lt;p&gt;I live in Firefox. And Mozilla's review process for add-ons is actually strict about privacy, which I like for a tool like this. Chrome version is on the roadmap - if you want to help port it, PRs are welcome!&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;For users:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/yt-transcript-yoinker/" rel="noopener noreferrer"&gt;https://addons.mozilla.org/en-US/firefox/addon/yt-transcript-yoinker/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add to Firefox. Done.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;For devs:&lt;/strong&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
git clone https://github.com/pawanhirumina/yt-transcript-yoinker.git
# Then in Firefox: about:debugging#/runtime/this-firefox -&amp;gt; Load Temporary Add-on -&amp;gt; manifest.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>firefox</category>
      <category>javascript</category>
      <category>webextension</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
