Fitabyte Lab

Controlled file-size tests, with the numbers shown.

We build repeatable synthetic test images so readers can see how content complexity changes file size. These measurements are reference points—not promises about your own files.

Last updated: 10 October 2026

October 10 recheck: a byte target can conflict with fixed dimensions

We ran the actual image compressor on the existing synthetic 800 × 600 WebP (35,018 bytes) with a deliberately tight 1,024-byte target. The reference run used Node 24.19.0 and @napi-rs/canvas 1.0.7, not a browser encoder.

Image modeOutput bytesOutput dimensionsTarget met
Keep original pixel dimensions4,190800 × 600No; reported above target
Allow automatic resizing1,016180 × 135Yes; dimensions changed

The smaller result is not interchangeable with an 800 × 600 deliverable. Lock dimensions when the destination requires them, and accept a larger byte budget if necessary. Try the dimension-locked browser example to measure your own browser.

In the same reference recheck, the PDF function produced 27,153 bytes below a 30,720-byte target and preserved one 595 × 842-point page. Native FFmpeg 7.1.5 produced a 183,976-byte, three-second 1280 × 720 H.264 video and a 23,920-byte, three-second AAC audio file. Their targets were 204,800 and 24,576 bytes. Small differences from the September records are expected across encoder versions; the earlier records remain labeled by date.

Actual Tesseract.js 7 recognition in Node again matched the ten English lines in the three existing synthetic OCR images. That does not establish translation accuracy or difficult-photo performance. Read the recheck settings and measurements. Live-browser interaction and physical-device performance are not established by these adapter tests.

Run the actual file processor

PDF, video and audio size targets

Download a source or run it here using the same compressor as the homepage. The table reports the bytes from your run; no output size is assumed in advance. One KB here means 1,024 bytes.

Reference run — September 9, 2026
FileInput bytesTarget bytesOutput bytes
PDF output52,22530,72027,136
VIDEO output2,334,407204,800183,848
AUDIO output288,07824,57623,921

Reference method: the PDF uses the actual PDF processor with a Node canvas adapter; video and audio use native FFmpeg with the same encoding arguments and bitrate search as the browser processor. Browser encoders can return different sizes. See method and measurements.

One-page invoice → 30 KB

A fictional Docuivo invoice with embedded fonts. Compression renders pages as images: selectable text, links, forms and digital signatures are not preserved. Check all numbers and text at full size.

Download source file

Three-second video → 200 KB

A silent 1280 × 720 moving test chart. The actual browser encoder aims below 204,800 bytes. Play the output and inspect moving edges; duration and dimensions should remain unchanged.

Download source file

Three-second test tone → 24 KB

A synthetic 440 Hz test tone, not speech or music. The WAV is encoded to AAC in an M4A file. Start playback at low volume and check the full three-second duration.

Download source file

A target that should be rejected

For this three-second video, a 1 KB target is below the processor's minimum. The expected result is an explanation asking for a larger limit, with no pretend successful output.

Download source file

Video and audio processing loads the browser encoder on the first run. Keep this page open. A small target can reduce quality, still produce an oversized file, or be rejected; a completed run does not guarantee that the result suits your destination.

Source → OCR → translation

Three image-translation examples

English to Spanish, checked September 9, 2026. These original synthetic images contain no personal information. OCR matched all ten source lines, including the two prices, capacity and batch code.

The reference run used Tesseract.js 7 in Node and the live Fitabyte translation API. The PNGs use the same text-placement function as this tool, rendered with a server canvas adapter. They are reference outputs; browser fonts and provider responses can differ. View measurements and method.

Screenshot-style notice

Screenshot-style notice: original English source
Original: 16,796 bytes
Screenshot-style notice: Spanish reference output
Translated PNG: 16,735 bytes
Observed text, not an accuracy score for other images
OCR sourceTranslation returned
Upload completeCarga completa
Your file is readyEl archivo está listo
Download nowDescargar ahora

OCR matched all three source lines. Translation used complete Spanish phrases; compare the different text lengths in the same boxes.

Download source PNG · Download translated reference · Load this image in the translator

Fictional menu

Fictional menu: original English source
Original: 18,132 bytes
Fictional menu: Spanish reference output
Translated PNG: 16,858 bytes
Observed text, not an accuracy score for other images
OCR sourceTranslation returned
TODAY'S MENUMenú del día
Tomato soup 4.50Sopa de tomate 4.50
Fresh salad 6.00Ensalada fresca 6.00

OCR preserved both prices; the translation kept 4.50 and 6.00. The title became “Menú del día”.

Download source PNG · Download translated reference · Load this image in the translator

Fictional storage label

Fictional storage label: original English source
Original: 22,177 bytes
Fictional storage label: Spanish reference output
Translated PNG: 17,151 bytes
Observed text, not an accuracy score for other images
OCR sourceTranslation returned
STORAGE BOXCAJA DE ALMACENAMIENTO
Capacity: 30 LCapacidad: 30 L
Keep dryMantener seco
Batch: BX-1042Lote: BX-1042

OCR preserved the capacity, unit and batch code. The longer Spanish title uses smaller lettering inside the original title box.

Download source PNG · Download translated reference · Load this image in the translator

What these examples reveal

Translation length affects readability even when OCR is correct. The storage-label heading expands to “CAJA DE ALMACENAMIENTO”, so it is reduced to fit the original box. The tool paints a white area over recognized text; it does not reconstruct the background underneath. Review both the text table and the image before downloading.

These clean printed samples do not test glare, curved packaging, handwriting or every language pair. Six source OCR languages and fourteen target languages are available in the selectors; only English to Spanish was checked in this record.

What this test is designed to show

Two images can have identical pixel dimensions and radically different storage requirements. Flat graphics repeat the same colors and edges; screenshot-style interfaces repeat structured shapes; photo-like scenes contain gradients, noise, and irregular detail. The encoder has a much harder job with the last category.

For this first Fitabyte Lab reference set, we generated three synthetic 1600 × 1200 RGB images with no personal data using Python 3.13.5 and Pillow 12.3.0. We encoded each source as optimized PNG and at JPEG/WebP quality settings 85, 70, and 50, then recorded the resulting byte counts. The generation is deterministic so the same source can be recreated for future tests. These measurements describe that reference encoder—not Fitabyte’s browser encoder byte-for-byte.

Reference scenes

Flat graphic synthetic reference image used in Fitabyte Lab

Flat graphic

Large flat colors, simple cards, thin lines, and sparse text-like shapes.

1600 × 1200 source
Screenshot-style UI synthetic reference image used in Fitabyte Lab

Screenshot-style UI

White panels, interface rows, icons, lines, and repeated high-contrast edges.

1600 × 1200 source
Photo-like scene synthetic reference image used in Fitabyte Lab

Photo-like scene

Gradients, deterministic noise, foliage-like texture, and irregular natural-style detail.

1600 × 1200 source

Measured file sizes

The table reports the actual encoded file size for this controlled test set. Quality numbers are encoder settings, not percentages of the original image quality.

SceneFormatQualityFile size
Flat graphicPNGLossless12.3 KB
Flat graphicJPEG8550.3 KB
Flat graphicJPEG7041.5 KB
Flat graphicJPEG5035.3 KB
Flat graphicWebP8512.7 KB
Flat graphicWebP7010.3 KB
Flat graphicWebP509.8 KB
Screenshot-style UIPNGLossless11.4 KB
Screenshot-style UIJPEG8560.3 KB
Screenshot-style UIJPEG7050.0 KB
Screenshot-style UIJPEG5042.3 KB
Screenshot-style UIWebP8512.0 KB
Screenshot-style UIWebP7010.2 KB
Screenshot-style UIWebP509.5 KB
Photo-like scenePNGLossless2.17 MB
Photo-like sceneJPEG85408.6 KB
Photo-like sceneJPEG70267.4 KB
Photo-like sceneJPEG50169.3 KB
Photo-like sceneWebP85353.4 KB
Photo-like sceneWebP70240.5 KB
Photo-like sceneWebP50196.7 KB

What the numbers mean

PNG can dominate on simple graphics

The flat and screenshot-style references compress extremely well losslessly because large areas and repeated edges are predictable.

Photo-like detail is expensive

The photo-like reference was about 2.17 MB as optimized PNG, but hundreds of kilobytes as lossy JPEG or WebP. Texture changes the problem completely.

One quality number cannot predict KB

JPEG quality 70 produced very different file sizes across the three scenes, despite identical dimensions.

Format choice depends on content

PNG is not automatically larger and WebP is not automatically smaller in every case. Content and encoder settings decide the outcome.

Limitations and reproducibility

These are synthetic reference images, not a representative sample of every photograph or screenshot. The reference data was produced with Pillow rather than the browser encoder used by Fitabyte Compress. Different encoders can map quality values differently. Browser engines, operating systems, color profiles, metadata, transparency, and source content can all change the result. That is why Fitabyte treats the measurements as explanatory evidence rather than a universal benchmark.

Read How Fitabyte Tests Its Tools for our testing principles, or compare the formats in WebP vs JPG vs PNG. If you have a real size limit, use Fitabyte Compress and inspect the resulting file rather than assuming a preset will fit.

Ready to use Fitabyte?

Choose a simple file tool.

Explore all tools