Back to Blog

100 KB Is 100,000 Bytes

September 17, 2026
Share:
100 KB Is 100,000 Bytes

I had a photo that had to land under 100 KB. The compressor I opened gave me a quality slider. I dragged it left until the picture looked bad. The download was still 147 KB. The form bounced it. The slider never asked what 100 KB meant.

KB is 1,000 bytes. 100 KB is 100,000 bytes. KiB is 1,024. Those are different caps. A quality knob that doesn't measure the file can't hit either one.

The new page is Compress Image to Exact KB. You type the cap. The tab searches JPEG or WebP quality until canvas.toBlob lands under it. You see the exact byte count. The photo stays in this tab.


The slider that never asked

Most compressors treat size as a side effect. You pick High, Medium, Low, or a number from 1 to 100. The encoder writes a file. You look at the KB after the fact. If it is still over, you drag again.

A visa form, a job portal, a school upload doesn't want Medium. It wants a number. 50 KB. 100 KB. 200 KB. If the file is 100,001 bytes, it is over. The portal doesn't care that the picture still looks fine to you.

I wanted the other job. Type the cap. Get a file that is under it. See the letters on the photo at the same scale as the original so I know the ID scan is still readable.

100 KB is 100,000 bytes. A quality slider doesn't know that.

That is the whole product. Show the unit. Measure the encoded file. If quality can't get there, ask before shrinking the pixels.


KB is not KiB

SI prefixes use 1,000. IEC prefixes use 1,024. People mix them, and upload forms mix them too.

This page won't mix them. KB and MB are 1,000 and 1,000,000. KiB and MiB are 1,024 and 1,048,576. 100 KB is 100,000 bytes. 100 KiB is 102,400 bytes. Those 2,400 bytes are the difference between a form that accepts the file and a form that prints "too large" with no other hint.

A disk tool that says 100 KB often means 102,400. A government PDF that says 100 KB usually means 100,000. I can't read the checker from here. The field prints the exact cap in bytes under the number so you can match whichever one you are looking at.

The default is KB, because that is what most forms print. Switch the radio to KiB if the checker is picky. The presets are 20 KB, 50 KB, 100 KB, 200 KB, and 1 MB. Those are SI. They are the numbers people type.


What TinyPNG actually offers

TinyPNG's free page, read 16 September 2026, says free users can upload 20 images at once, each 5 MB at most, and convert 3 images. The photos go to TinyPNG. Their FAQ says they keep uploads for a maximum of 48 hours.

I did not find a box on that page where you type 50 KB or 100 KB. The encoder picks a size. That is a different job from hitting a form cap.

I am not printing a dollar figure for their paid plans. I did not open checkout. The free limits above are from tinypng.com, the same day.

This tab does the opposite of an upload compressor. You type the cap. The file stays here. The byte count you see is the byte count you download.

I am not claiming TinyPNG is bad at making files small. It is good at that. The job I had was not "make it smaller." The job was "make it under this number." Those two sentences look similar until the form rejects 147 KB.


147 KB is not close enough

100,001 bytes fails the same way 400,000 bytes fails. The checker is a less-than-or-equal test. People round. Encoders round. Portals do not.

I kept the 147 KB figure because that is the kind of miss a slider produces. You drag until the preview looks ugly, you download, you look at Finder, and the file is still over. Finder itself may show 144 KB or 148 KB depending on whether it divides by 1,000 or 1,024. That is the same mix this page refuses to make.

The result line prints the exact byte count with grouping, 98,412 bytes, then the same number in the unit you picked. If you asked for 100 KB, you can see it is under 100,000. If you asked for 100 KiB, you can see whether it is under 102,400. You do not have to trust a "144 KB" label that hid the unit.


Quality is a search, not a guess

JPEG and WebP have a quality number from about 0.1 to 0.92 on this page. Higher quality, more bytes. The relationship is not a straight line, and it changes with the photo. A sky compresses. Type does not.

The tab encodes at the high end first. If that file is already under the cap, it keeps that quality. No point making it worse. If the high end is over, it encodes at the floor. If the floor is still over, quality can't do it. If the floor is under, it binary-searches the number in between until it finds the highest quality whose encoded bytes still sit under the cap.

Each attempt is a real canvas.toBlob. The number next to the result is blob.size. It is not an estimate from the slider position.

PNG has no useful quality knob here. PNG is lossless. Encoding it at 0.1 and at 0.92 writes the same pixels. A PNG that is already over 50 KB won't get there by searching a knob that does nothing. The page says so under the format radios.

WebP often lands under JPEG at the same visual quality. That is not a promise. It depends on the photo. If a portal only takes JPEG, pick JPEG. A 90 KB WebP that the form won't accept is not a win. The format radios are there so you can match the form, not so this page can brag about a codec.

The search has a step budget. It doesn't run forever. Ten steps between the floor and the ceiling is enough to get close. The last encode is at the winning quality, so the file you download is the file that was measured, not a neighbour from the search.


Ask before shrinking the picture

Some caps are smaller than a full-size JPEG at the lowest useful quality. A 4000 by 3000 phone photo, even ugly, can still miss 20 KB.

The default is to keep your pixels. You get the nearest file, the measured bytes, and a line that says the cap is out of reach at this size. Tick Allow shrinking the pixels if you'd rather lose resolution than miss the upload. Then Compress again. The tab scales both sides, keeps the ratio, and searches quality at the new size.

It won't shrink past a 32 pixel short side. If even that is over the cap, the nearest file stays on screen and the miss stays honest.

Resize Image is a different URL because it is a different job. That page picks pixels, or a percent, or centimetres at a DPI. This page picks bytes. They share the same encoder, pica plus a canvas, so a photo you already resized can be compressed without a second library.


Same scale so you can read the letters

Original and result sit in two columns of the same width. That is the check the product exists for. An ID scan with a name on it has to stay readable after the file lands under 100 KB. If the result is shown at real pixels and the original is shown as a thumbnail, you can't tell.

The sample is a 1600 by 1200 still drawn in this tab. It says FORM LIMIT 100 KB in large type, then "The letters have to stay readable." Compress it. Read the same line on the right. If you can't, the cap is too small for that picture at that resolution. Tick the shrink box, or raise the cap, or pick a tighter crop somewhere else. This page doesn't crop.

I put type on the sample on purpose. A gradient looks fine at any quality. A name on an ID scan does not. If you drop your own photo, look at the part you care about, the line of text, the face, the stamp. Same scale is how you do that on a phone too. Both columns are full width of the card. You do not pinch one and not the other.


HEIC uses the decoder you already have

Drop JPEG, PNG, WebP, or iPhone HEIC. HEIC uses the same decoder as HEIC to JPG. Safari can read it natively. Chrome and Firefox load a decoder module the first time a HEIC file is in the drop. You will see that load. The module doesn't send the photo anywhere.

Safari stops a canvas at 16,777,216 pixels. A huge phone photo is scaled to that cap first, then the quality search runs. The line under the knobs tells you the target in bytes. The list under the drop names each file and whether it landed under the cap.


A folder becomes a ZIP

One photo downloads under name-98KB.jpg, using the measured size in the same unit as the cap. Two or more become compressed-N-images.zip. The cap is 100 files and 40 MB each. GIF is refused. A PDF in the same drop is refused too, because it is already a document.

Stop cancels the run. Nothing is saved until you download. Cap, unit, format, and the shrink tick sit in this browser under softery.compress-image-to-kb.settings. Copy settings link puts those knobs on the URL. The photo never goes in the URL. That is the share for a 100 KB form, not for a passport scan.


Mixpanel sees the tool, not the photo

Softery.io loads Mixpanel and Google Analytics. They see that someone opened Compress Image to Exact KB, which setting moved, and whether a download happened. Sizes go out as buckets. The target goes out as a bucket too, 50kb or 100kb, not the photo. They do not get the file.

After the page has loaded, compress runs in JavaScript here. Unplug the cable if you want. The photo is still in the tab.


What I checked, and what I did not

ClaimSource, 16 September 2026
TinyPNG free: 20 images, 5 MB each, 3 conversionstinypng.com FAQ
TinyPNG keeps uploads up to 48 hoursSame FAQ
KB = 1,000 bytes, KiB = 1,024SI prefixes, IEC 80000-13
Safari canvas 16,777,216The same cap Resize Image uses
40 MB, 100 filesThis page's own limits
pica 10.0.3package.json

I did not open TinyPNG checkout, so there is no paid price here. I did not treat a blog roundup as their pricing page. I did not quote a Reddit thread. The job is "the photo has to land under 100 KB." The page is built for that job.


Try the tab

  1. Open Compress Image to Exact KB.
  2. Keep the sample, or drop a JPEG, PNG, WebP or HEIC.
  3. Pick 100 KB, or type the number the form printed.
  4. Hit Compress. Read the letters on both sides. The byte count next to the result is the file you will download.

Nearby tools

Exact pixels, a percent, or centimetres at a DPI belong on Resize Image. Photos that should become pages belong on Images to PDF. An iPhone HEIC you want as a JPEG, not as a smaller HEIC, belongs on HEIC to JPG.

Compress Image to Exact KB is the thirty-seventh free tool on the hub. It runs after the JavaScript has loaded. Unplug the cable if you want. The photo is still in the tab.


Last updated: September 16, 2026 | Reading time: 10 minutes

Written by Softery.io, after a quality slider left a 147 KB file on a 100 KB form.