What the ZIP contains
Successful converted files are placed in an images folder. The JSON report records the chosen settings, input and output sizes, dimensions, elapsed time and any failure message.
Why the limit is 30 files
A browser holds decoded pixels as well as compressed files. Thirty files and a 250 MiB input cap keep the free tool useful without implying that every device can safely process an unlimited folder.
- Sequential conversion
- 80-megapixel per-output guard
- Sanitized ZIP names
- Failure isolation
Why compressed input size is not the whole memory cost
A small compressed file can expand into a large RGBA pixel surface. A 6000 × 4000 image needs about 96 million bytes for one four-channel surface before the browser holds source bytes, preview, output and temporary codec buffers.
Starting many conversions at once multiplies those surfaces and can terminate a mobile tab. Sequential processing trades some speed for a predictable upper bound.
- Compressed input bytes
- Decoded pixel surface
- Encoder working memory
- Output blob
- Preview and ZIP data
How the thirty-item run was arranged
The queue contained 29 controlled valid images and one deliberately invalid file. All valid files used the same output settings. Instrumentation recorded active conversion count, per-file result and final manifest rows.
The invalid item was placed where it could prove failure isolation rather than merely failing after all successful work. No file bytes were sent to an upload endpoint.
Measured queue behavior
Maximum active conversions remained one. All 29 valid items reached the ZIP, the invalid input produced one clear failure, the queue continued and progress reached completion. The manifest contained one row for every selected input.
This is a functional and resource-policy test, not a speed benchmark. Elapsed time depends on dimensions, codec, processor, available memory and browser version.
What the ZIP validation checked
The generated archive began with the expected ZIP signature, used sanitized paths and included successful images plus a JSON report. A filename attempting directory traversal could not create a ../ path in the archive.
The manifest records settings, dimensions, input and output bytes, elapsed time and failures so a user does not have to guess which files were omitted.
Why the public limits remain conservative
The tool caps the batch at 30 files and 250 MiB of compressed input, with per-file size, dimension and megapixel guards. These limits cannot guarantee every old phone will succeed, but they block obvious abuse and accidental overload.
One-at-a-time processing also keeps error recovery simple. The user can identify the failed file without losing successful outputs or restarting a parallel pool.
How to repeat a useful performance test
Use representative small, medium and large files from the target workflow and include one invalid input. Record device, browser, total compressed bytes, dimensions, output settings, elapsed time and whether the tab stayed responsive.
Increase limits only from measured evidence. A desktop success alone is not enough for a mobile-first public tool, and a lower cap is preferable to an impressive number that crashes ordinary devices.
What production monitoring should collect
Because images stay local, monitoring should not collect filenames, pixels, metadata, GPS or hashes. It can safely count anonymous error codes, tool version, broad stage and bounded numeric context such as attempted batch size.
That privacy-preserving telemetry can show whether users frequently hit memory or format limits without turning the diagnostic system into a file log. Session diagnostics remain local unless a user chooses to download and share them.
- No image bytes
- No filenames or coordinates
- Bounded error context
- Explicit user-controlled export
What this does not prove
A metadata result describes the fields and structures that the supported parser could read. It does not, by itself, prove authenticity, intent, authorship or the truth of the visible scene.