<?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: Nawal Shrestha</title>
    <description>The latest articles on DEV Community by Nawal Shrestha (@nawalshrestha).</description>
    <link>https://dev.to/nawalshrestha</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%2F4160809%2Fef25d13b-f6fd-408d-a12a-eb7a5b3ba956.png</url>
      <title>DEV Community: Nawal Shrestha</title>
      <link>https://dev.to/nawalshrestha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nawalshrestha"/>
    <language>en</language>
    <item>
      <title>Compress Image to 100KB Online — No Upload</title>
      <dc:creator>Nawal Shrestha</dc:creator>
      <pubDate>Sun, 04 Oct 2026 03:58:14 +0000</pubDate>
      <link>https://dev.to/nawalshrestha/compress-image-to-100kb-online-no-upload-9pk</link>
      <guid>https://dev.to/nawalshrestha/compress-image-to-100kb-online-no-upload-9pk</guid>
      <description>&lt;p&gt;Visa portals, exam forms, and job applications all ask for the same thing: a photo under 100KB. Most compressors hand you a quality slider and wish you luck — you export at 60%, check the size, re-export at 50%, check again. Five guesses later you land at 97KB with a photo that looks worse than it needed to.&lt;/p&gt;

&lt;p&gt;There's a better way: &lt;strong&gt;name the size, and let the tool find the best quality that fits it.&lt;/strong&gt; Type &lt;code&gt;100&lt;/code&gt;, get ≤100KB, done — with your file never leaving your device.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why 100KB limits are everywhere
&lt;/h2&gt;

&lt;p&gt;Government and university portals process millions of files. A hard per-file cap keeps storage costs and database rows predictable. A phone photo today is 3–8MB, so "under 100KB" means shrinking it to roughly &lt;strong&gt;2% of its original size&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Common places you'll hit this limit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Visa and passport applications&lt;/strong&gt; — photo and signature uploads, often capped at 100KB or even 50KB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exam and university admission portals&lt;/strong&gt; — scanned documents and photos with per-file caps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job applications&lt;/strong&gt; — resume portals that reject oversized profile photos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scholarship and KYC forms&lt;/strong&gt; — ID scans that must stay small but readable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Banking portals&lt;/strong&gt; — document uploads for account opening or loans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cap persists because the bottleneck is storage and database row size, not your internet speed. Faster broadband didn't move it; it won't move soon.&lt;/p&gt;

&lt;h2&gt;
  
  
  What 100KB actually looks like: quality vs size
&lt;/h2&gt;

&lt;p&gt;People imagine 100KB means a ruined photo. It depends entirely on dimensions. Here's the relationship, roughly, for a typical phone photo saved as JPEG:&lt;/p&gt;

&lt;p&gt;Source dimensions — Quality 85 — Quality 60 — Quality 40&lt;br&gt;
4000×3000 (12MP) — ~2.5 MB — ~1.2 MB — ~600 KB&lt;br&gt;
2000×1500 — ~700 KB — ~350 KB — ~180 KB&lt;br&gt;
1200×900 — ~280 KB — ~140 KB — ~75 KB&lt;br&gt;
800×600 — ~130 KB — ~65 KB — ~35 KB&lt;br&gt;
&lt;em&gt;Illustrative — actual sizes vary with image complexity. Noisy, detailed photos run heavier.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The takeaway: &lt;strong&gt;100KB is mostly about resolution, not the quality slider.&lt;/strong&gt; A 1200×900 photo at quality 60 hits ~140KB; drop to 800×600 and you're comfortably under 100KB at decent quality. Anyone telling you to "just lower the quality" on a 12MP original is giving bad advice — resize first, then compress.&lt;/p&gt;

&lt;h2&gt;
  
  
  Type 100, get ≤100KB: how target-size mode works
&lt;/h2&gt;

&lt;p&gt;In SnapShrink you type &lt;code&gt;100&lt;/code&gt; into the target-size box and the engine does the search for you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Drop your image&lt;/strong&gt; at &lt;a href="https://getsnapshrink.com/app/" rel="noopener noreferrer"&gt;https://getsnapshrink.com/app/&lt;/a&gt;. JPG, PNG, WebP, and GIF accepted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type &lt;code&gt;100&lt;/code&gt;&lt;/strong&gt; as the target size in KB and pick your output format (WebP is smallest for photos — but check portal acceptance below).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Binary search on quality.&lt;/strong&gt; The engine encodes at quality 95, then 50, then narrows the range — about 8 encodes — to find the highest quality that lands at or under 100KB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Downscale fallback.&lt;/strong&gt; If even quality 5 overshoots, the image scales down in ×0.9 steps (never below 320px) and the search repeats.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You get the result&lt;/strong&gt; with before/after sizes shown. On the rare image where 100KB is truly unreachable, it reports the best effort it managed instead of failing silently.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It all runs in a background worker in your browser tab, so the page stays responsive. A standard 5MP phone photo typically finishes in under 3 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which format will the portal accept?
&lt;/h2&gt;

&lt;p&gt;This is where people get burned. You compress a beautiful 80KB WebP, upload it, and the portal rejects it — not for size, but for format. Older government and banking portals often accept &lt;strong&gt;only JPEG&lt;/strong&gt; (sometimes only JPG, not even PNG).&lt;/p&gt;

&lt;p&gt;Your image — Best format — Why&lt;br&gt;
Photo / camera shot — WebP or JPEG — Smallest at a given quality; WebP usually wins ~25%&lt;br&gt;
Screenshot / graphic with text — PNG or WebP — Keeps edges sharp&lt;br&gt;
Scan of a document — WebP or JPEG — Text stays readable far below 100KB in grayscale&lt;br&gt;
Signature on white background — PNG or JPEG — Tiny anyway; JPEG safest for old portals&lt;br&gt;
&lt;strong&gt;Rule: when in doubt, JPEG.&lt;/strong&gt; It's the universally accepted format. Use WebP only when you've confirmed the portal takes it — or when the file is for your own site, not someone else's form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compress a batch to 100KB
&lt;/h2&gt;

&lt;p&gt;A passport photo, a signature scan, a supporting ID — drop them all at once. SnapShrink's bulk image compressor (&lt;a href="https://getsnapshrink.com/bulk-image-compressor/" rel="noopener noreferrer"&gt;https://getsnapshrink.com/bulk-image-compressor/&lt;/a&gt;) applies the 100KB target to &lt;strong&gt;each file individually&lt;/strong&gt;, because every image needs a different quality level to hit the same cap. When the batch finishes, download everything as one ZIP.&lt;/p&gt;

&lt;p&gt;This beats the one-by-one loop most online tools force on you, and it eliminates the rename-and-organize step — the ZIP keeps your filenames.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compressing from a phone
&lt;/h2&gt;

&lt;p&gt;Identical process in Safari on iOS and Chrome on Android: tap the drop zone, pick from camera roll or files, type &lt;code&gt;100&lt;/code&gt;, download. The file lands in Downloads, ready to attach.&lt;/p&gt;

&lt;p&gt;One iOS wrinkle: phone photos are typically HEIC. Safari converts HEIC to JPEG automatically through the file picker, so SnapShrink receives a JPEG and processes it normally. No manual conversion needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "no upload" matters for document compression
&lt;/h2&gt;

&lt;p&gt;Passport photos, ID scans, and visa applications contain biometric data. Uploading those to a third-party compressor — even one promising deletion — creates a data trail: how long the server &lt;em&gt;actually&lt;/em&gt; retains the file, who can access it, what their breach notification obligations are. You have no visibility into any of that.&lt;/p&gt;

&lt;p&gt;SnapShrink processes images with the browser's Canvas API and a Web Worker. The bytes never leave your device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify it yourself&lt;/strong&gt; — don't take my word for it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the tool (&lt;a href="https://getsnapshrink.com/app/" rel="noopener noreferrer"&gt;https://getsnapshrink.com/app/&lt;/a&gt;) and press F12 → Network tab.&lt;/li&gt;
&lt;li&gt;Compress a photo.&lt;/li&gt;
&lt;li&gt;Look for file uploads in the network log.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are none. Thirty seconds, and you've confirmed what no privacy policy can prove for a server-side tool. For documents this sensitive, "trust us" isn't good enough — testable beats promised.&lt;/p&gt;

&lt;p&gt;SnapShrink also strips EXIF metadata (GPS coordinates, device info, timestamps) automatically during compression. Your ID photo shouldn't ship your location history to a portal database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step by step: compress to 100KB
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the SnapShrink tool (&lt;a href="https://getsnapshrink.com/app/" rel="noopener noreferrer"&gt;https://getsnapshrink.com/app/&lt;/a&gt;) — no signup, no install.&lt;/li&gt;
&lt;li&gt;Drag in your photo (or pick files with the button).&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;100&lt;/code&gt; in the target-size field. Choose JPEG if the portal is old or unspecified; WebP if confirmed accepted.&lt;/li&gt;
&lt;li&gt;Hit Compress, then download. The file is ≤100KB and ready for the portal.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;First 10 images per session are free. If you process documents regularly, one $9 payment unlocks unlimited use — no subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting: when the image won't reach 100KB
&lt;/h2&gt;

&lt;p&gt;Genuinely impossible cases are rare but real. A 320×320px photo that's already 110KB at quality 1 in JPEG has nowhere left to go. In that situation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Switch to WebP&lt;/strong&gt; — usually smaller than JPEG at the same dimensions (if the portal allows).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crop tighter&lt;/strong&gt; — border whitespace costs bytes, especially in JPEG.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resize to the portal's minimum&lt;/strong&gt; — if it says "minimum 200×200px", try exactly 200×200.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grayscale for documents&lt;/strong&gt; — some portals accept it, and it compresses far more efficiently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the EXIF&lt;/strong&gt; — a 50–200KB metadata payload on an unprocessed phone photo is dead weight; stripping it alone can close the gap.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SnapShrink always reports the actual output size, so you know exactly where you stand instead of guessing whether a rejection was the size, the format, or the portal being slow.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is my photo uploaded to a server?&lt;/strong&gt;&lt;br&gt;
No. Compression happens entirely in your browser. Open DevTools → Network while compressing — zero file uploads. That's the whole point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if my image can't reach 100KB?&lt;/strong&gt;&lt;br&gt;
Rare, but possible with very detailed images at small dimensions. You'll see the smallest size achieved ("best effort") instead of a silent failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which browsers work?&lt;/strong&gt;&lt;br&gt;
Chrome, Edge, Firefox, and Safari handle WebP encoding natively. If yours can't encode WebP, the tool says so and you pick JPEG or PNG instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a file size limit?&lt;/strong&gt;&lt;br&gt;
Files up to 50MB accepted. Larger files are skipped with a clear message; the rest of the batch keeps going.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I compress multiple images to 100KB at once?&lt;/strong&gt;&lt;br&gt;
Yes — drop the batch, set the target once, download a ZIP. Each image is processed individually to hit the same cap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JPEG or WebP for a 100KB target?&lt;/strong&gt;&lt;br&gt;
WebP preserves more quality at 100KB, but old portals may reject it. JPEG when unsure; WebP when confirmed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is this different from Squoosh?&lt;/strong&gt;&lt;br&gt;
Squoosh is excellent for single-image manual tuning. SnapShrink is built for two things Squoosh doesn't do: &lt;strong&gt;batch processing&lt;/strong&gt; and &lt;strong&gt;target-size mode&lt;/strong&gt; — type the cap, get there automatically. One image with pixel-perfect control: Squoosh. A stack of documents with a size cap: SnapShrink.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webperf</category>
      <category>tutorial</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
