Benchmarks / Product comparisons
Performance after you open the app.
Create a ZIP after opening the app. Extract an archive you are already browsing. MetalArchiver results measure creation and extraction time including file I/O, with startup excluded. See creation and extraction times and ZIP sizes alongside previously recorded results for other tools.
MetalArchiver: September 6, 2026 / Large-data competitors: September 5 / Seven-corpus competitors: September 4 / CLI tools: August 25 / Tests by BridgeDevs
Creation and extraction including file I/O
Release build of the September 6 source (1fb20f0), measured using real files on an external SSD on an Apple M4 Max with 64 GiB RAM and macOS 26.6.2. Three-run medians after Metal initialization and one warm-up. Application startup and GUI redraw are excluded.
Standard ZIP and AES-256. Fast and compact.
Standard ZIP and AES-256, measured with the same input and conditions. See the time difference with encryption, alongside the resulting archive size.
MetalArchiver: Sep 6, resident. Keka and BetterZip: Sep 4, three-run medians. CLI tools: Aug 25. All include file I/O, but startup and storage conditions differ, so this is a reference comparison. Methods ↗
Bars use linear scales starting at zero. Creation and extraction use independent time axes. 1 MB = 1,000,000 bytes. All seven inputs are available for ZIP and AES. Encryption overhead varies by input.
All measurements (ZIP / AES-256)
| Input / mode | Create ms | Extract ms | ZIP bytes |
|---|---|---|---|
| canterbury / ZIP | 3.77 | 5.07 | 765,386 |
| canterbury / AES | 5.35 | 6.27 | 766,236 |
| calgary / ZIP | 4.68 | 7.00 | 1,045,278 |
| calgary / AES | 7.62 | 8.33 | 1,046,338 |
| large / ZIP | 8.20 | 5.54 | 3,351,173 |
| large / AES | 9.75 | 6.34 | 3,352,027 |
| silesia / ZIP | 105.11 | 46.21 | 71,096,049 |
| silesia / AES | 107.13 | 48.38 | 71,109,689 |
| enwik8 / ZIP | 48.74 | 11.78 | 37,267,853 |
| enwik8 / AES | 55.02 | 15.16 | 37,274,015 |
| enwik9 / ZIP | 371.73 | 81.63 | 332,344,938 |
| enwik9 / AES | 380.54 | 116.03 | 332,406,028 |
| artificial / ZIP | 1.67 | 0.81 | 76,828 |
| artificial / AES | 2.50 | 1.48 | 77,108 |
Creation includes reading the input files and writing the ZIP. Extraction includes reading compressed data from the ZIP and writing the extracted files. Both read and write real files on an external SSD.
Extraction also reuses ZIP inspection results in the resident process. Cleanup is outside the timer. Final archives passed 7-Zip validation and extracted content matched the source tree.
Large data can be compressed quickly, too.
We read a stopped Parallels Windows 11 virtual machine package (PVM) from the external SSD and wrote a standard ZIP to the internal SSD. This shows real processing at tens-of-gigabytes scale, beyond small test corpora.
Input was 58,432,123,901 bytes and the ZIP was 30,154,930,215 bytes. This was one run reading from the current external PCI-Express SSD and writing the ZIP to the internal SSD.
AES-256 remains nearly as fast.
Encrypting the entire 58 GB input with AES-256 added only 0.41 seconds. The AES-256 ZIP was 30,158,497,911 bytes—about 3.57 MB larger than the unencrypted ZIP. Each format was measured once and passed a full 7-Zip integrity test after creation.
Large-data extraction, tested with real files.
MetalArchiver extracted ZIPs from the internal SSD to the current external WorkDisk. For both standard ZIP and AES-256, the restored SHA-256 manifest—21 files and 58,432,123,901 bytes—matched the source. Each format was measured once, including file reads, extraction, and output writes.
The OS file cache remained enabled. Competing-product extraction values are from the earlier external-WorkDisk-to-internal-SSD run, the reverse direction from MetalArchiver. Storage I/O is unlikely to be their primary bottleneck, but these are not presented as speedup ratios under perfectly identical conditions. Info-ZIP’s extraction tool, unzip 6.00, does not support WinZip AES-256.
Standard ZIP
Creation time · Shorter is faster
AES-256 ZIP
Creation time · Shorter is faster
Standard ZIP compared with other applications.
| Product | Creation time | Extraction time | ZIP size |
|---|---|---|---|
| MetalArchiver | 21.97 s | 18.41 s | 30.155 GB |
| BetterZip 6.0.5 | 630.98 s | 156.76 s | 29.449 GB |
| Info-ZIP (zip 3.0 / unzip 6.00) | 1,178.54 s | 262.71 s | 29.164 GB |
| 7-Zip 26.02 | 2,467.71 s | 166.21 s | 28.679 GB |
| Keka 1.6.7 | 3,035.02 s | 196.62 s | 28.679 GB |
Archives created by Keka 1.6.7, BetterZip 6.0.5, and Info-ZIP zip 3.0 passed 7-Zip testing and matched the source path, size, type, and SHA-256 manifest after extraction.
For this large input, MetalArchiver creation and extraction were each measured once per format (standard ZIP and AES-256). Each competing product was run once because of the long processing time, measured from its command or official API call through completion. Apple ditto produced a ZIP, but 7-Zip reported “Headers Error / 32-bit overflow in headers,” so it is excluded from successful results.
AES-256 ZIP compared with other applications.
| Product | Creation time | Extraction time | ZIP size |
|---|---|---|---|
| MetalArchiver | 22.38 s | 17.98 s | 30.158 GB |
| BetterZip 6.0.5 | 655.20 s | 169.85 s | 29.449 GB |
| 7-Zip 26.02 | 2,482.05 s | 167.03 s | 28.679 GB |
| Keka 1.6.7 | 3,073.31 s | 206.68 s | 28.679 GB |
AES-256 ZIPs from Keka 1.6.7 and BetterZip 6.0.5 passed password-protected 7-Zip testing and matched the source path, size, type, and SHA-256 manifest after extraction. Info-ZIP and Apple ditto do not create WinZip AES-256 ZIPs, so they are not included in the AES comparison.
Measured in a resident process from real-file input reads through compression, encryption and ZIP output writes. Both the unencrypted and AES-256 Zip64 archives passed 7-Zip 26.02 validation with “Everything is Ok.” Private contents, filenames and the validation password are not published.
MetalArchiver / Keka / BetterZip
We also tested other applications with the same input data.
Creation time, extraction time, and ZIP size are shown side by side for standard ZIP and AES-256 across all seven public corpora. MetalArchiver and BetterZip are resident; Keka starts a fresh process for each operation.
Inputs, archives, and extraction destinations are real files on WorkDisk. Keka includes its CLI wrapper and bundled 7-Zip startup; BetterZip includes its official AppleScript API call through completion. Timing scopes differ, so no speedup ratio is calculated.
Standard ZIP
| Corpus | Metric | MetalArchiver Startup excluded · File I/O included · Sep 6 | Keka 1.6.7 Process start included · Sep 4 | BetterZip 6.0.5 Resident API · Sep 4 |
|---|---|---|---|---|
| canterbury | Creation timeExtraction timeZIP size | 3.77 ms5.07 ms0.730 MiB | 105.57 ms55.36 ms0.650 MiB | 400.96 ms629.43 ms0.732 MiB |
| calgary | Creation timeExtraction timeZIP size | 4.68 ms7.00 ms0.997 MiB | 152.81 ms60.90 ms0.942 MiB | 420.98 ms375.73 ms1.019 MiB |
| large | Creation timeExtraction timeZIP size | 8.20 ms5.54 ms3.196 MiB | 791.23 ms85.24 ms2.910 MiB | 670.84 ms373.64 ms3.234 MiB |
| silesia | Creation timeExtraction timeZIP size | 105.11 ms46.21 ms67.802 MiB | 3,873.77 ms720.66 ms62.596 MiB | 923.57 ms1,137.54 ms66.998 MiB |
| enwik8 | Creation timeExtraction timeZIP size | 48.74 ms11.78 ms35.541 MiB | 8,133.60 ms400.77 ms33.565 MiB | 2,200.57 ms653.44 ms36.152 MiB |
| enwik9 | Creation timeExtraction timeZIP size | 371.73 ms81.63 ms316.949 MiB | 75,748.20 ms3,188.66 ms298.226 MiB | 13,171.40 ms3,459.30 ms321.369 MiB |
| artificial | Creation timeExtraction timeZIP size | 1.67 ms0.81 ms0.073 MiB | 60.21 ms46.53 ms0.073 MiB | 451.17 ms407.61 ms0.075 MiB |
AES-256 ZIP
| Corpus | Metric | MetalArchiver Startup excluded · File I/O included · Sep 6 | Keka 1.6.7 Process start included · Sep 4 | BetterZip 6.0.5 Resident API · Sep 4 |
|---|---|---|---|---|
| canterbury | Creation timeExtraction timeZIP size | 5.35 ms6.27 ms0.731 MiB | 107.36 ms71.28 ms0.650 MiB | 426.85 ms376.81 ms0.732 MiB |
| calgary | Creation timeExtraction timeZIP size | 7.62 ms8.33 ms0.998 MiB | 143.26 ms64.80 ms0.943 MiB | 424.61 ms377.06 ms1.020 MiB |
| large | Creation timeExtraction timeZIP size | 9.75 ms6.34 ms3.197 MiB | 763.06 ms80.76 ms2.910 MiB | 664.16 ms373.38 ms3.234 MiB |
| silesia | Creation timeExtraction timeZIP size | 107.13 ms48.38 ms67.815 MiB | 3,765.31 ms697.28 ms62.596 MiB | 930.06 ms1,138.35 ms66.999 MiB |
| enwik8 | Creation timeExtraction timeZIP size | 55.02 ms15.16 ms35.547 MiB | 8,135.18 ms409.84 ms33.565 MiB | 2,221.02 ms888.33 ms36.152 MiB |
| enwik9 | Creation timeExtraction timeZIP size | 380.54 ms116.03 ms317.007 MiB | 81,536.64 ms3,251.33 ms298.226 MiB | 13,161.70 ms3,452.44 ms321.369 MiB |
| artificial | Creation timeExtraction timeZIP size | 2.50 ms1.48 ms0.074 MiB | 61.06 ms47.33 ms0.073 MiB | 452.46 ms407.48 ms0.075 MiB |
Keka uses ZIP / Deflate / -mx=5; BetterZip uses ZIP / Fast with Mac metadata excluded. Both use AES-256 when encrypted. Values are three-run medians. Archives and extracted contents were verified.
Comparison with 7-Zip, Info-ZIP and pigzpp
Every MetalArchiver cell uses September 6 measurements with startup excluded and file I/O included. Other columns retain the August 25 process-start-inclusive CLI measurements. Input sizes, file counts and content hashes match, but this is not a simultaneous comparison with matched startup and storage conditions.
Standard ZIP
| Corpus | Metric | MetalArchiver Startup excluded · File I/O included · Sep 6 | Info-ZIP Process start included · Aug 25 | pigzpp Process start included · Aug 25 | 7-Zip Process start included · Aug 25 |
|---|---|---|---|---|---|
| canterbury | Creation timeExtraction timeZIP size | 3.77 ms5.07 ms0.730 MiB | 63.44 ms16.32 ms0.701 MiB | 23.52 ms7.84 ms0.708 MiB | 57.00 ms12.84 ms0.650 MiB |
| calgary | Creation timeExtraction timeZIP size | 4.68 ms7.00 ms0.997 MiB | 78.12 ms20.37 ms0.979 MiB | 26.58 ms8.84 ms0.986 MiB | 82.68 ms15.68 ms0.942 MiB |
| large | Creation timeExtraction timeZIP size | 8.20 ms5.54 ms3.196 MiB | 690.91 ms52.07 ms3.107 MiB | 30.87 ms15.98 ms3.080 MiB | 660.88 ms38.30 ms2.910 MiB |
| silesia | Creation timeExtraction timeZIP size | 105.11 ms46.21 ms67.802 MiB | 4,156.05 ms918.78 ms65.069 MiB | 229.65 ms330.13 ms65.721 MiB | 3,449.63 ms594.01 ms62.596 MiB |
| enwik8 | Creation timeExtraction timeZIP size | 48.74 ms11.78 ms35.541 MiB | 2,361.78 ms487.79 ms34.827 MiB | 120.42 ms156.61 ms35.180 MiB | 6,828.12 ms346.30 ms33.564 MiB |
| enwik9 | Creation timeExtraction timeZIP size | 371.73 ms81.63 ms316.949 MiB | 20,708.45 ms4,466.97 ms308.745 MiB | 1,098.05 ms1,412.97 ms311.371 MiB | 65,475.96 ms3,050.97 ms298.226 MiB |
| artificial | Creation timeExtraction timeZIP size | 1.67 ms0.81 ms0.073 MiB | 7.20 ms5.63 ms0.073 MiB | 8.56 ms4.43 ms0.073 MiB | 10.87 ms5.25 ms0.073 MiB |
Other tools extracted the MetalArchiver ZIP generated on August 25; current MetalArchiver extracts its newly generated ZIP. Source content is identical, but archive identity is not guaranteed. This is not a fresh all-product test of one identical ZIP.
AES-256 ZIP
WinZip AES-256 ZIPs of the same seven inputs. MetalArchiver uses the current measurements with startup excluded and file I/O included; minizip-ng + zlib-ng and 7-Zip retain the August 25 process-start-inclusive CLI records. These are reference comparisons with different timing scopes.
| Corpus | Metric | MetalArchiver Startup excluded · File I/O included · Sep 6 | minizip-ng + zlib-ng Process start included · Aug 25 | 7-Zip Process start included · Aug 25 |
|---|---|---|---|---|
| canterbury | Creation timeExtraction timeZIP size | 5.35 ms6.27 ms0.731 MiB | 34.70 ms—0.712 MiB | 57.98 ms14.89 ms0.650 MiB |
| calgary | Creation timeExtraction timeZIP size | 7.62 ms8.33 ms0.998 MiB | 45.34 ms—0.987 MiB | 82.42 ms19.16 ms0.943 MiB |
| large | Creation timeExtraction timeZIP size | 9.75 ms6.34 ms3.197 MiB | 169.88 ms—3.077 MiB | 643.27 ms39.16 ms2.910 MiB |
| silesia | Creation timeExtraction timeZIP size | 107.13 ms48.38 ms67.815 MiB | 1,659.86 ms—65.707 MiB | 3,414.90 ms599.93 ms62.596 MiB |
| enwik8 | Creation timeExtraction timeZIP size | 55.02 ms15.16 ms35.547 MiB | 936.45 ms—35.172 MiB | 6,748.38 ms347.70 ms33.564 MiB |
| enwik9 | Creation timeExtraction timeZIP size | 380.54 ms116.03 ms317.007 MiB | 8,447.80 ms—311.300 MiB | 64,818.97 ms3,111.83 ms298.226 MiB |
| artificial | Creation timeExtraction timeZIP size | 2.50 ms1.48 ms0.074 MiB | 10.55 ms—0.073 MiB | 11.47 ms6.27 ms0.073 MiB |
Extraction was not measured for minizip-ng + zlib-ng, so it is shown as “—”. large is an approximately 11.2 MB corpus; Artificial is diagnostic input. Metadata restoration settings are not fully aligned across products.
Test conditions and source data
- Timing scope and cache
- Includes real-file reads, archive creation or extraction, and output writes. Process startup, Metal initialization, GUI redraw, cleanup and content verification are outside the timer. The OS file cache is enabled; this is not a cold-cache test that forces every byte to be read from the SSD on every run.
- Tested versions
- Keka 1.6.7, BetterZip 6.0.5, 7-Zip 26.02 (arm64), minizip-ng 4.2.2 + zlib-ng, and pigzpp d094a0e. The Info-ZIP version output retained in the record contains only a copyright line, not a complete version number.
- Creation settings
- Current MetalArchiver uses create defaults. Historical CLI settings: Info-ZIP and minizip-ng -6; 7-Zip and Keka ZIP / Deflate / -mx=5. Matching level numbers do not imply matching compression quality.
- Environment
- Current MetalArchiver: M4 Max / 64 GiB / macOS 26.6.2. Input, archive and extraction output used an external SSD with measured sequential read/write speeds topping out at approximately 2.6 GB/s. Historical CLI records use the same machine model, memory and OS. Because the OS file cache remains enabled, the displayed throughput represents the complete overlapping read, compression and write workload—not the SSD alone. The seven-corpus Keka and BetterZip tests also used WorkDisk. Storage conditions and SSD state are not necessarily equivalent across all measurements, including historical CLI records.
- MetalArchiver revision
- The seven-corpus MetalArchiver cells use 1fb20f0, measured September 6, 2026, with startup excluded and real-file reads and writes included. Process-start-inclusive CLI results and older MetalArchiver rows are not used in the displayed data. Large-data dates and conditions are listed in that section. These are not full GUI-operation timings.
- Regression check
- On September 5, we compared the pre-audit commit with the release-audit candidate on a RAMDisk. Across 28 combinations—seven corpora, ZIP and AES-256, creation and extraction—three-run medians after one warm-up showed no consistent performance regression.
- Integrity
- The records report 7-Zip integrity checks on final archives and byte-for-byte or source-tree fingerprint verification after extraction. Tables include archive size alongside creation time.
- Reading the numbers
- 1 MiB is 1,048,576 bytes. Lower elapsed time is faster; higher MiB/s is faster. Throughput uses uncompressed/restored bytes. No speedup ratios or overall rankings are shown across the different timing scopes.
Input sizes and file counts
| Corpus | Files | Bytes |
|---|---|---|
| canterbury | 11 | 2,810,784 |
| calgary | 14 | 3,141,622 |
| large | 3 | 11,159,482 |
| silesia | 12 | 211,938,580 |
| enwik8 | 1 | 100,000,000 |
| enwik9 | 1 | 1,000,000,000 |
| artificial | 4 | 300,001 |
All seven corpora are shared across Keka, BetterZip, and CLI comparisons. Input tree SHA-256 hashes are retained in the CLI comparison JSON.
Inspect the measurement data
Current MetalArchiver JSON includes all three samples, revision, environment and input hashes. Original comparison JSON retains historical MetalArchiver rows for provenance, but those rows are not used in this page’s MetalArchiver cells. The large-data competitor test was run on September 5; peer values in the seven-corpus and CLI comparisons were not repeated for this update.
← Back to MetalArchiver