<?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: ravi</title>
    <description>The latest articles on DEV Community by ravi (@ravinirban876).</description>
    <link>https://dev.to/ravinirban876</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%2F4029539%2F9e338bf5-23f2-453e-b80d-52a766e6fb08.png</url>
      <title>DEV Community: ravi</title>
      <link>https://dev.to/ravinirban876</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ravinirban876"/>
    <language>en</language>
    <item>
      <title>I built a free set of subtitle tools that run entirely in your browser (no upload)</title>
      <dc:creator>ravi</dc:creator>
      <pubDate>Wed, 15 Jul 2026 04:21:19 +0000</pubDate>
      <link>https://dev.to/ravinirban876/i-built-a-free-set-of-subtitle-tools-that-run-entirely-in-your-browser-no-upload-h5h</link>
      <guid>https://dev.to/ravinirban876/i-built-a-free-set-of-subtitle-tools-that-run-entirely-in-your-browser-no-upload-h5h</guid>
      <description>&lt;p&gt;As a side project, I've been building Lazyblink — a collection of free browser-based tools — and I recently added a set of subtitle utilities that solve a problem I kept running into: most online subtitle tools either upload your file to a server, slap on a watermark, or hide the useful part behind a signup.&lt;/p&gt;

&lt;p&gt;So I built these to run 100% in the browser using JavaScript. The subtitle file never leaves your device, which matters when you're working with unreleased or client video.&lt;/p&gt;

&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SRT ↔ VTT conversion&lt;/strong&gt; — convert between the two most common subtitle formats&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transcript extraction&lt;/strong&gt; — pull clean plain text out of an SRT/VTT file, stripping timestamps and cue numbers (useful for show notes, blog posts, or accessibility)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timing shifter&lt;/strong&gt; — move every caption earlier or later by a set number of seconds to fix out-of-sync captions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting technical bit: because it's all client-side, the whole thing works as a static site with zero backend. Parsing SRT/VTT is basically splitting on blank lines, reading the &lt;code&gt;--&amp;gt;&lt;/code&gt; timing line, and reformatting the timestamps (SRT uses commas for milliseconds, VTT uses periods — a small but easy gotcha).&lt;/p&gt;

&lt;p&gt;If you work with video, it's here: &lt;a href="https://lazyblink.com/subtitle-tools" rel="noopener noreferrer"&gt;https://lazyblink.com/subtitle-tools&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's free, no signup, no watermark. Happy to answer questions about the client-side approach, and open to feedback on what subtitle operations to add next.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
