Nested archives: which downloaders deliver the file, and what it costs

Seven downloaders over ten archive shapes. Each is graded on whether the file arrives byte-correct with nobody touching it, and measured for the time, disk and processor it takes to get there, including any manual work left behind.

27 August 2026M3 Ultra desktop, macOS Local article serverMedian of three passesDraft

These are capability tests, not speed tests

Each test asks whether a downloader can turn a post into the finished file on its own. The payloads are small and are served from memory over a local connection, with no provider and no network in the path, so nothing here is limited by download speed and the absolute times are far shorter than the same shapes would take in the real world.

What carries across, and what does not: whether a shape needs manual work at all is a property of the shape and the downloader, not of file size or line speed, so those results transfer directly. Disk and processor figures scale with payload size, and the ratios between downloaders should hold. Elapsed time transfers least: against a real provider the download would dominate, so treat the seconds below as a comparison between downloaders doing identical work, never as a prediction of how long a real job takes.

What each result means

No help needed
Every file named in the post arrived under the downloader's output directory with a matching SHA-256, with nothing done by hand.
Manual passes
The downloader stopped early and left archives behind. The file was then produced by running the standard tools by hand, and the count is how many rounds of repair-and-extract that took.
Never delivered
The file could not be produced, even after the manual passes. Times and costs for these are the point at which the attempt was abandoned, not the cost of doing the work.

Grading reads the bytes on disk, never a downloader's own report of success. A file counts as delivered if its exact content appears anywhere in the output, so a downloader that renames what it extracts is not penalised for it.

The ten tests

Test 1Field shape

Store RAR volumes + PAR2 → file

One store-mode RAR set with a posted PAR2 recovery set. No nesting.

Why it matters. The plain shape. A baseline every client is expected to finish.

Routinely posted.

Test 2Obfuscation

Store RAR + PAR2 → store RAR → file

A store RAR wrapped inside another store RAR.

Why it matters. Wrapping hides the real filename until the outer layer is opened, so the post gives away less about what it contains.

Wrapping of this kind is used to keep a post from revealing what it holds.

Test 3Obfuscation

Store RAR + PAR2 → compressed RAR → file

The same wrapper, but the inner archive is compressed rather than stored.

Why it matters. The inner layer has to be decompressed, not merely unwrapped.

Wrapping of this kind is used to keep a post from revealing what it holds.

Test 4Structural

Store RAR + PAR2 → 7z (LZMA2) → file

A 7z archive inside a RAR set.

Why it matters. The format changes between layers, so one chain needs both engines.

Built to isolate one capability. Not claimed to be a common posting shape.

Test 5Field shape

Healthy RAR + PAR2 → damaged RAR + its own PAR2 → file

The posted set is intact. The archive inside it is corrupt, and its own PAR2 recovery set is packed alongside it.

Why it matters. A bad source or a partial re-post. The repair is needed on content that only exists once the outer archive has been opened.

Routinely posted.

Test 6Obfuscation

Store RAR + PAR2 → store RAR ×4 → file

A five-level ladder with a separate file at every level.

Why it matters. Deep wrapping, with content at each level, so reaching only the deepest file is not enough.

Wrapping of this kind is used to keep a post from revealing what it holds.

Test 7Structural

Store RAR + PAR2 → 7z → store RAR → file

Three layers alternating between formats.

Why it matters. Format switching part-way down a chain.

Built to isolate one capability. Not claimed to be a common posting shape.

Test 8Structural

Damaged at all three layers, each with its own recovery data

Every layer is corrupt. The outer has PAR2, the middle has its own PAR2 packed alongside, the innermost carries a RAR recovery record.

Why it matters. The full recovery chain. Each repair has to succeed before the next layer can be opened at all, and the three layers need three different tools.

Built to isolate one capability. Not claimed to be a common posting shape.

Test 9Field shape

PAR2 at 100% only; the archive volumes are never delivered

All four archive volumes are listed in the post and none arrives. Only a complete PAR2 set does.

Why it matters. A post whose articles are gone but whose recovery data survives. The archives have to be rebuilt from parity alone.

Routinely posted.

Test 10Synthetic

Three encrypted layers, each password carried by the layer above

Three password-protected layers. The first password is posted beside the volumes; each layer then contains the next one's password.

Why it matters. A password chain that has to be walked, one layer at a time. No client is given a password.

Constructed for this test. Our own sampling of current obfuscated posts found no password carried with the post, so this placement is not typical of the field.

Payloads are random data generated and archived locally, so the corpus contains no third-party material and can be rebuilt from its generator.

Did the downloader deliver the file — fewer manual passes is better

TestNZBGet 26.3NZBGet 27.0-testingSABnzbd 5.1.2nzbfast 1.2.4rustnzb 1.4.5Weaver 0.7.8Weaver 0.8.3
Test 1No help neededNo help neededNo help neededNo help neededNo help neededNo help neededNo help needed
Test 21 manual pass1 manual passNo help neededNo help neededNo help neededNever deliveredNever delivered
Test 31 manual pass1 manual passNo help neededNo help neededNo help neededNever deliveredNever delivered
Test 41 manual pass1 manual passNo help neededNo help neededNo help neededNever deliveredNever delivered
Test 51 manual pass1 manual pass1 manual passNo help needed1 manual passNever deliveredNever delivered
Test 64 manual passes4 manual passes2 manual passesNo help neededNo help neededNever deliveredNever delivered
Test 72 manual passes2 manual passesNo help neededNo help neededNo help neededNever deliveredNever delivered
Test 83 manual passes3 manual passes3 manual passesNo help neededNever deliveredNever deliveredNever delivered
Test 9No help neededNo help neededNever deliveredNo help neededNo help neededNever deliveredNo help needed
Test 103 manual passes3 manual passesNever deliveredNo help neededNever delivered3 manual passes3 manual passes
Delivered with no help2 of 102 of 105 of 1010 of 107 of 101 of 102 of 10

Summary — more in the first column is better, more in the last is worse

DownloaderDelivered with no helpNeeded manual passesNever delivered
NZBGet 26.3280
NZBGet 27.0-testing280
SABnzbd 5.1.2532
nzbfast 1.2.41000
rustnzb 1.4.5712
Weaver 0.7.8118
Weaver 0.8.3217

Charts

How each test ended more black is better. All ten tests, all seven downloaders.
NZBGet 26.3NZBGet 27.0-testingSABnzbd 5.1.2nzbfast 1.2.4rustnzb 1.4.5Weaver 0.7.8Weaver 0.8.3delivered with no helpdelivered after manual passesnever deliveredtests
Time to a usable file, on identical work lower is better. The 7 tests every downloader shown here delivered.
NZBGet 26.351.2NZBGet 27.0-testing51.5SABnzbd 5.1.252.3nzbfast 1.2.410.3rustnzb 1.4.541.8downloadermanual passesseconds
Data written to disk, on identical work lower is better. The 7 tests every downloader shown here delivered.
NZBGet 26.329.8NZBGet 27.0-testing30.0SABnzbd 5.1.232.3nzbfast 1.2.411.7rustnzb 1.4.527.8downloadermanual passesGB

Those two charts cover Test 1, Test 2, Test 3, Test 4, Test 5, Test 6, Test 7, the largest set of tests every downloader shown in them delivered, so the bars measure identical work. Not shown, because they could not deliver enough of that set to compare: Weaver 0.7.8 delivered 1 of these 7; Weaver 0.8.3 delivered 1 of these 7. A downloader that finishes little accumulates little time and little disk, so plotting it here would give it the shortest bars on the chart.

Time, split into downloader and manual work — lower is better, seconds

The first figure is the downloader's own run. The second, where present, is the manual repair and extraction needed afterwards to produce the file.

TestNZBGet 26.3NZBGet 27.0-testingSABnzbd 5.1.2nzbfast 1.2.4rustnzb 1.4.5Weaver 0.7.8Weaver 0.8.3
Test 14.24.24.10.74.12.12.1
Test 24.2 +0.34.2 +0.36.10.74.1gave up at 6.1gave up at 2.1
Test 34.2 +0.34.2 +0.36.10.74.1gave up at 6.1gave up at 2.1
Test 44.2 +0.44.2 +0.46.12.24.1gave up at 6.1gave up at 4.1
Test 56.3 +17.36.2 +17.56.1 +17.34.54.1 +17.3gave up at 6.1gave up at 2.1
Test 64.2 +1.14.2 +1.12.0 +0.30.62.1gave up at 6.2gave up at 2.1
Test 74.2 +0.44.2 +0.44.11.02.1gave up at 6.2gave up at 2.1
Test 86.2 +12.26.2 +12.32.1 +12.32.2gave up at 2.1gave up at 99.1gave up at 240
Test 96.26.2gave up at 2.12.947.5gave up at 2.14.1
Test 102.2 +4.62.2 +4.6gave up at 3010.6gave up at 2.1609 +4.638.6 +4.6

Total time to a usable file — lower is better, seconds

TestNZBGet 26.3NZBGet 27.0-testingSABnzbd 5.1.2nzbfast 1.2.4rustnzb 1.4.5Weaver 0.7.8Weaver 0.8.3
Test 14.24.24.10.74.12.12.1
Test 24.54.56.10.74.1not deliverednot delivered
Test 34.54.56.10.74.1not deliverednot delivered
Test 44.64.66.12.24.1not deliverednot delivered
Test 523.523.823.44.521.4not deliverednot delivered
Test 65.35.32.40.62.1not deliverednot delivered
Test 74.64.64.11.02.1not deliverednot delivered
Test 818.418.514.32.2not deliverednot deliverednot delivered
Test 96.26.2not delivered2.947.5not delivered4.1
Test 106.86.8not delivered0.7not delivered61443.3

Total data written to disk — lower is better, GB

Physical bytes written by the downloader and by any manual passes together. This is what the disk actually had to absorb, including intermediate files that were written and later removed.

TestNZBGet 26.3NZBGet 27.0-testingSABnzbd 5.1.2nzbfast 1.2.4rustnzb 1.4.5Weaver 0.7.8Weaver 0.8.3
Test 13.002.993.521.503.113.013.01
Test 24.424.374.971.504.634.504.50
Test 34.394.394.941.504.544.504.50
Test 44.434.364.961.504.564.504.50
Test 56.206.218.194.657.894.814.81
Test 65.105.383.720.521.991.531.53
Test 72.272.301.960.511.031.501.50
Test 83.963.924.332.000.501.7311.10
Test 91.061.050.020.770.850.381.13
Test 102.422.373.851.160.412.402.37

† the file was never produced, so this is what the attempt cost before it was abandoned.

Peak free space needed — lower is better, GB

The largest the working set ever became at one moment, which is the free space a job actually requires.

TestNZBGet 26.3NZBGet 27.0-testingSABnzbd 5.1.2nzbfast 1.2.4rustnzb 1.4.5Weaver 0.7.8Weaver 0.8.3
Test 13.023.023.011.503.203.003.00
Test 23.013.013.011.504.734.504.50
Test 33.013.013.001.504.654.504.50
Test 43.013.013.001.504.733.003.00
Test 54.664.664.663.105.043.303.30
Test 62.562.561.520.512.981.521.02
Test 71.501.501.000.501.971.001.00
Test 82.092.092.091.280.870.983.36
Test 91.121.050.030.751.100.381.09
Test 101.511.511.141.100.411.511.51

Peak memory — lower is better, GB

TestNZBGet 26.3NZBGet 27.0-testingSABnzbd 5.1.2nzbfast 1.2.4rustnzb 1.4.5Weaver 0.7.8Weaver 0.8.3
Test 10.140.141.650.080.050.480.49
Test 20.140.131.640.080.050.480.47
Test 30.140.141.630.070.050.490.48
Test 40.140.131.724.320.120.490.49
Test 50.150.161.670.320.060.510.48
Test 60.130.141.040.090.050.330.29
Test 70.140.131.101.250.050.300.28
Test 80.140.160.990.300.040.480.46
Test 90.600.610.161.291.280.360.43
Test 100.120.120.680.160.040.240.26

Total processor time — lower is better, seconds

Processor seconds used by the downloader and by any manual passes together. Independent of how many cores the machine has.

TestNZBGet 26.3NZBGet 27.0-testingSABnzbd 5.1.2nzbfast 1.2.4rustnzb 1.4.5Weaver 0.7.8Weaver 0.8.3
Test 13.03.03.41.214.12.01.6
Test 24.24.13.91.413.92.82.1
Test 34.14.03.91.414.02.82.1
Test 44.34.34.22.714.03.83.2
Test 524.925.225.76.336.23.02.3
Test 62.82.92.70.74.81.10.9
Test 72.01.82.01.04.61.41.3
Test 817.617.718.86.54.2281247
Test 930.230.21.341.28901.68.5
Test 108.98.821.30.83.1822135

† the file was never produced. These are the cost of abandoning the job, not of completing it, and are not comparable with the rest of the column. The same mark is used in the disk tables above.

Method