<?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: Devh</title>
    <description>The latest articles on DEV Community by Devh (@peopleinthelab).</description>
    <link>https://dev.to/peopleinthelab</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%2F4184559%2Fd4e9ac98-c010-433e-968c-af25bc9299f6.png</url>
      <title>DEV Community: Devh</title>
      <link>https://dev.to/peopleinthelab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/peopleinthelab"/>
    <language>en</language>
    <item>
      <title>I got tired of image compressors uploading my photos to a server, so I built one that doesn't</title>
      <dc:creator>Devh</dc:creator>
      <pubDate>Wed, 14 Oct 2026 12:10:48 +0000</pubDate>
      <link>https://dev.to/peopleinthelab/i-got-tired-of-image-compressors-uploading-my-photos-to-a-server-so-i-built-one-that-doesnt-1h69</link>
      <guid>https://dev.to/peopleinthelab/i-got-tired-of-image-compressors-uploading-my-photos-to-a-server-so-i-built-one-that-doesnt-1h69</guid>
      <description>&lt;p&gt;I kept running into the same wall every time I needed to shrink a photo before uploading it somewhere: every "free image compressor" I tried had one of these problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a hard cap on how many images you could compress at once&lt;/li&gt;
&lt;li&gt;my photos getting uploaded to &lt;em&gt;someone else's&lt;/em&gt; server (never loved that for personal pics)&lt;/li&gt;
&lt;li&gt;so many ads I could barely find the drop zone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I spent a few weekends building &lt;a href="https://imgcompress.peopleinthelab.com" rel="noopener noreferrer"&gt;imgcompress.peopleinthelab.com&lt;/a&gt; — a JPG/PNG/WebP/HEIC compressor that runs &lt;strong&gt;entirely in your browser&lt;/strong&gt; using the Canvas API and WebAssembly. Nothing ever gets uploaded anywhere. You can open dev tools, watch the Network tab, and see for yourself that no image data leaves your device.&lt;/p&gt;

&lt;p&gt;A few things I specifically cared about getting right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No file-count limit, no sign-up&lt;/strong&gt; — drag in as many images as you want&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HEIC to JPG conversion&lt;/strong&gt; built in, since iPhone photos are a pain otherwise&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WebP output&lt;/strong&gt; for anyone optimizing images for their own site&lt;/li&gt;
&lt;li&gt;Batch download as a ZIP when you're done&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's still early and I'm pretty much the only one who's used it seriously so far, so I'd genuinely like feedback, especially if something breaks on your device or browser, or there's a format you wish it had.&lt;/p&gt;

&lt;p&gt;Happy to go into how the client-side compression works under the hood if anyone's curious. The HEIC decoding part was a fun rabbit hole.&lt;/p&gt;

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