<?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: Jonathan Devis</title>
    <description>The latest articles on DEV Community by Jonathan Devis (@jonathan_dev13).</description>
    <link>https://dev.to/jonathan_dev13</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%2F3557532%2F56e80351-ca37-4081-b53f-6c089bf05c9f.png</url>
      <title>DEV Community: Jonathan Devis</title>
      <link>https://dev.to/jonathan_dev13</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonathan_dev13"/>
    <language>en</language>
    <item>
      <title>I Built a Free Online Video Compressor in 1 Week</title>
      <dc:creator>Jonathan Devis</dc:creator>
      <pubDate>Tue, 13 Oct 2026 09:59:07 +0000</pubDate>
      <link>https://dev.to/jonathan_dev13/i-built-a-free-online-video-compressor-in-1-week-b8d</link>
      <guid>https://dev.to/jonathan_dev13/i-built-a-free-online-video-compressor-in-1-week-b8d</guid>
      <description>&lt;p&gt;Hi everyone!&lt;br&gt;
In the last two weeks, I've worked on a tiny side project Video Compress&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fast, free, and simple online video compressor with no watermarks or limits on use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Problem&lt;/p&gt;

&lt;p&gt;You've got a ton of free &lt;a href="https://shrinkvideos.com/" rel="noopener noreferrer"&gt;online video compressors&lt;/a&gt; to choose from, though most of those services will throw a lot of frustrating restrictions on you watermarks, file size limits, and hidden paywalls.&lt;br&gt;
I was looking for something simple: upload, compress, download -no unnecessary things, no tricks.&lt;/p&gt;

&lt;p&gt;The Tech Stack&lt;/p&gt;

&lt;p&gt;The project is developed with:&lt;/p&gt;

&lt;p&gt;Frontend: Next JS, static site generation and an ultra-fast UI.&lt;br&gt;
Backend: Node JS, for handling API requests.&lt;br&gt;
FFmpeg, on server to make compression more efficient.&lt;br&gt;
The Next app is all static - served out on a CDN for near-instant access all over the world – while all the real work happens on the server with the backend API.&lt;/p&gt;

&lt;p&gt;Reasons for Moving Compression to the Backend&lt;/p&gt;

&lt;p&gt;First, I added compression to the frontend through Web Assembly builds of FFmpeg.&lt;br&gt;
It worked, but performance was not good - CPU load was low and compressing large files took forever.&lt;/p&gt;

&lt;p&gt;This allowed me to shift the compression to the server side so that I could take advantage of full CPU and I/O performance of the machine.&lt;br&gt;
And that resulted in faster compression-especially if you were working with a longer video or a higher resolution file (like 1080p or 4K).&lt;/p&gt;

&lt;p&gt;It also gave me more flexibility to:&lt;/p&gt;

&lt;p&gt;Optimize compression presets dynamically&lt;/p&gt;

&lt;p&gt;Manage bigger uploads&lt;/p&gt;

&lt;p&gt;Compatibility to various video formats, like MP4, MOV, AVI, etc.&lt;/p&gt;

&lt;p&gt;Lessons Learned&lt;/p&gt;

&lt;p&gt;Sure, frontend compression sounds neat and all, but when you got some serious grind to do, ain't worth the effort.&lt;br&gt;
No comparison to the quality/size ratio of FFmpeg.&lt;br&gt;
Keep the UI as simple as it can get - users are only interested in getting results, not navigating through loads of settings.&lt;br&gt;
Static building with Next JS + Node JS backend is a power combo for projects like this - quick to build, deploy easily and scalable.&lt;/p&gt;

&lt;p&gt;Test It&lt;/p&gt;

&lt;p&gt;Get it now or try it here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://shrinkvideos.com/" rel="noopener noreferrer"&gt;https://shrinkvideos.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's totally free, no watermarks, no hidden limits.&lt;br&gt;
Would appreciate your comments or suggestions of improvement!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
