Published Reproduction Package
The cases are fixed by seed 20260619. Download the cases and results, every loading plan, the head-to-head cases, the Python generator with the checker, and the local T1 CLI. The generator and the checker use only the Python standard library.
What Changed on October 16, 2026
- Same 10,000 cases, current solver. We rebuilt the solver from current code and ran the cases again. The June count-only figures came out identical, case for case.
- The headline is now a loading plan. In June the T1 figure came from a count-only search: it says how many cartons fit without building a plan, and it lets a carton overhang the cartons below it. This report uses the plan the T1 apps show when Deeper search is switched on, with a position for every carton. That plan holds fewer cartons than the count-only figure in 2,875 of the 10,000 cases, so the numbers below are lower than June's. The June page said the app's plan would meet or exceed the CSV figure; for those cases it did not.
- Every plan is published and checked. All 10,000 plans are in the download, together with the checker that verifies them. The checker is written apart from the solver and shares no code with it.
- A head-to-head on 91 cases. We ran cases from this corpus through DimPack3D, a free planner that needs no account, and solved the same cases with T1 in the same container.
- Public tools re-checked. SeaRates' calculator is gone, two free planners are new, and the rest still need an account.
- Vendors now publish academic results. 3DPACK.ING reports 92.4% mean fill on 190 Bischoff–Ratcliff instances with at least 75% of each base supported (September 29, 2026), and DimPack3D reports 80% on 300 instances. Those instances mix several carton types; T1 loads one type, so their numbers cannot be compared with this report.
Results
One carton type is loaded into a fixed 40HQ interior of 12032 x 2352 x 2698 mm. Normal cartons are named length ≥ width ≥ height; the tall-column class stands for upright products whose height is the largest side. SmartPacker T1 and the transparent baselines may turn a carton in all six axis-aligned orientations; the CSV also carries upright-only baselines.
| Comparison | More cartons | Equal | Fewer | Average gain |
|---|---|---|---|---|
| T1 vs one-cut baseline | 7,816 | 2,181 | 3 | +2.512% cartons |
| T1 vs one-cut baseline, every carton supported | 7,824 | 2,176 | 0 | +2.524% cartons |
| T1 vs single-grid baseline | 9,129 | 871 | 0 | +9.654% cartons |
| T1 vs T1 standard search | 5,134 | 4,866 | 0 | +0.446% cartons |
In the 3 cases where T1 holds fewer cartons than the one-cut baseline, it holds 1 or 2 fewer, and the baseline gets its extra cartons from an upper layer that overhangs the cartons below. Held to the same support rule as the T1 plans, the baseline beats T1 in none of the 10,000 cases.
Median fill
95.653% of the container volume across the 10,000 Deeper-search plans.
Plan vs count-only
The plan equals the June count-only figure in 7,124 cases and holds fewer cartons in 2,875 and more in 1.
Orientation
Allowing all six orientations beat upright-only loading in 8,923 cases for the one-cut baseline, +12.517% on average.
Standard Search
The T1 web app, the MCP service and the desktop app run a faster standard search unless Deeper search is switched on. On October 16, 2026 its plans failed the checker in 508 of the 10,000 cases: at least one carton was not fully supported by the cartons below it. We corrected it on October 17, 2026: all 10,000 standard-search plans now pass the checker, with the same carton counts. The web app and the MCP service run the corrected search from that day, and the Windows desktop app from version 0.3.1; the Mac and Linux desktop apps and the local CLI get it at their next release, so until then switch on Deeper search there for a plan you will load. The standard-search plans and their checker results are in the downloads.
The Independent Checker
t1_layout_checker.py reads a plan and checks it with whole-millimetre arithmetic:
- every carton is the carton entered, turned in one of its six orientations;
- every carton lies inside the container;
- no two cartons overlap;
- every carton that is not on the floor has its whole base on the tops of cartons directly below it;
- the cartons add up to the reported count, which never exceeds what fits by volume alone.
It does not check weight, crush strength, door clearance or the order a crew would load. Result: 10,000 of 10,000 Deeper-search plans pass.
Head to Head: DimPack3D
DimPack3D is a free browser planner that needs no account. We took the first ten cases of each carton class that it accepts and the flagship 600 x 400 x 350 mm case, 91 cases in all, and ran each in its planner on October 16, 2026, with every orientation allowed. DimPack3D offers fixed container sizes, so both tools used its 40' HQ, 1203 x 235 x 269 cm, and T1 solved each case at that size. DimPack3D accepts at most 2,000 cartons per plan, so the small-carton class, where a container holds more than 2,000, is not in the panel. Five cases run a second time gave the same numbers.
| Carton class | Cases | T1 more | Equal | T1 fewer | Average T1 gain |
|---|---|---|---|---|---|
| Flagship 600 x 400 x 350 mm | 1 | 1 | 0 | 0 | +8.0% |
| medium_carton | 10 | 9 | 1 | 0 | +8.1% |
| large_carton | 10 | 10 | 0 | 0 | +23.6% |
| flat_panel | 10 | 8 | 2 | 0 | +5.0% |
| tall_column | 10 | 10 | 0 | 0 | +8.1% |
| long_case | 10 | 7 | 3 | 0 | +4.1% |
| near_divisor | 10 | 10 | 0 | 0 | +16.4% |
| awkward_remainder | 10 | 9 | 1 | 0 | +9.4% |
| mixed_scale | 10 | 10 | 0 | 0 | +13.3% |
| realistic_carton | 10 | 10 | 0 | 0 | +5.6% |
| All | 91 | 84 | 7 | 0 | +10.4% |
All 91 T1 plans pass the checker. We did not check DimPack3D's plans, whose export asks for an email address. Per-case numbers are in the head-to-head CSV.
Public Tools: One-Case Check
On October 16, 2026 we re-ran June's case, 600 x 400 x 350 mm cartons in a 12032 x 2352 x 2698 mm space, in every public tool we could reach without an account: 2,000 cartons, 1 kg each, every rotation option on. The raw volume bound is 908 cartons. One case is a sample, not a ranking.
| Tool | Access | Container | October 2026 | June 2026 | Note |
|---|---|---|---|---|---|
| SmartPacker T1 (web service) | No account | Exact | 876 standard, 886 Deeper search | 876 standard | Both plans pass the checker. |
| Pier2Pier (DP World) | No account | Exact | 820, 90.2% | 820, 90.2% | Unchanged. |
| DimPack3D | No account | Its 40' HQ, 1203 x 235 x 269 cm | 820, 90.6% | Not listed | T1 at that size: 876 standard, 886 Deeper search. |
| LoadingMCP free planner | No account | Exact | 820, 90% | Not listed | The free planner calls itself a preview packer; its paid optimizer was not tested. |
| CargoesPi (DP World) | No account | Exact | 920, 101.2% | 920, 101.2% | Not a valid result: 920 is more than fit by volume alone. Its own plan stacks 350 mm cartons 300 mm apart. |
| SeaRates | – | – | Retired | 770, 84% (its 40' HC) | The calculator's address now forwards to the DP World home page. |
| ShippingWhale (运鲸) | No account | Its 40' HC, 12030 x 2350 x 2700 mm | No result | Not listed | The server timed out at 920, 1,000 and 2,000 cartons. |
| StackLogic | – | – | Offline | Not listed | The site is a parked domain. |
| Eight other tools | Account or trial | – | Not run | – | 3DPACK.ING, Kubova, 3DLoadCalculator, EasyCargo, Goodloading, Cargo-Planner, ALPHA LOADING and cx7.net each ask for an account before they calculate (3DPACK.ING: full results after a $9 purchase). We do not create accounts for this check. |
Reproduce
Check the published plans without solving anything (unzip the plans and the generator ZIP into one folder):
python t1_layout_checker.py t1_placed_depth3_plans.jsonl
Regenerate the cases and baselines:
python container_loading_benchmark_generator.py --out-dir . --skip-packcli
Solve every case again with the local CLI (Windows), then check the plans; the plans take about an hour on a 24-thread desktop PC:
python container_loading_benchmark_generator.py --out-dir . --packcli PackCli.exe
Deeper search takes from under a second to over a minute per case; small cartons take longest. The T1 desktop app stops it at 26 seconds and the web service at 20 seconds; the CLI runs it to the end.
Key Fields
t1_placed_depth3_count,t1_placed_depth3_check: cartons in the Deeper-search plan, and the checker's verdict (passorfail).t1_placed_depth2_*: the same for the standard search, with_unsupported_cartonsand_min_support_pct, the least supported share of a carton's base.t1_depth0_counttot1_depth3_count: the count-only search, the June headline.single_grid_count,one_cut_count,supported_one_cut_count: transparent baselines, the last with every carton fully supported;upright_*: the same with the carton height kept vertical.
By Carton Class
| Class | Cases | More | Equal | Fewer | Average gain | Average fill |
|---|---|---|---|---|---|---|
| small_dense | 1,000 | 980 | 20 | 0 | +1.651% | 98.915% |
| medium_carton | 1,000 | 864 | 135 | 1 | +2.575% | 95.750% |
| large_carton | 1,000 | 585 | 415 | 0 | +3.268% | 86.144% |
| flat_panel | 1,000 | 895 | 105 | 0 | +3.215% | 94.014% |
| tall_column | 1,000 | 768 | 231 | 1 | +2.842% | 93.175% |
| long_case | 1,000 | 483 | 517 | 0 | +1.633% | 86.573% |
| near_divisor | 1,000 | 735 | 265 | 0 | +1.906% | 96.383% |
| awkward_remainder | 1,000 | 864 | 135 | 1 | +2.974% | 94.768% |
| mixed_scale | 1,000 | 770 | 230 | 0 | +2.450% | 91.870% |
| realistic_carton | 1,000 | 872 | 128 | 0 | +2.608% | 95.979% |
Scope and Caveats
- This is a one-carton-type benchmark. It does not test mixed cartons, pallets, fragile cargo, axle weight, loading order or manual edits.
- The transparent baselines are for reproduction; they do not stand for any commercial product's method.
- The headline allows all six orientations. Against a tool that loads upright only, use the upright baselines as context.
- The public-tool table is one case; the head-to-head covers one free tool. Other tools need an account and were not run.
Questions and comments: zhzx@zhihuo.com.