Shape-Aware vs Bounding-Box Packing: Measurements on Real Parts
Updated
Vojtech Dousa
How many more parts fit in a container when you pack by the real part shape instead of the bounding box? Measured results for ten parts in three containers, including the parts that gained nothing.
Short answer: It depends on the part shape. At 5 mm gaps, packing by the real shape fitted 31 % more of an open bracket model, 33 % more of an insulator part and 43 % more of a printer motor holder than packing by bounding boxes. Two slim parts gained 0 to 3 %, and three of six public printer parts gained nothing. Over 12 part and container pairs, the median gain was 9.8 % at 5 mm gaps and 1.0 % at 10 mm gaps.
We measured this to decide whether Optipacker should pack by part shape. This page gives the method, the results and the limits, including the cases where packing by shape gained nothing.
Why bounding boxes leave space
Most packing tools place each part as its bounding box: the smallest rectangular box around the part. For a cube, the box and the part are the same. For an L-shaped bracket, the box includes the empty corner of the L, and no other part can use that space.
We measured this space in the arranged packs stored in Optipacker on 28 August 2026: 144 packs of 98 part models from test and demonstration projects. In the packs where space, not weight, limited the quantity, the median volume inside the part bounding boxes that the parts did not fill was 26.2 % of the container volume. This is an upper limit, because part of that space is enclosed inside the parts.
Method
- Baseline: Optipacker's bounding-box grid count, best of six orientations.
- Shape count: a conservative footprint of each part on a 1 mm grid. The footprint is never smaller than the part, so the counts are lower bounds. A single-layer nester places the footprints, identical layers stack to the container height, and the best up axis is chosen.
- Rotations: half turns. Each layer uses one base rotation and its 180° turn.
- Gaps: 5 mm and 10 mm between parts.
- Containers: three sizes from the Optipacker container library: Utz RAKO, KLT 6040 and ISO Large.
- Metric: the gain in part count over the bounding-box count.
- Control: a 10 mm cube gained 0 % on every row.
Results: four parts at 5 mm gaps
| Part | Utz RAKO | KLT 6040 | ISO Large | Median | Median at 10 mm |
|---|---|---|---|---|---|
| Bracket, 25 × 40 × 25 mm (open model) | +30.8 % | +18.2 % | +35.0 % | +30.8 % | +14.3 % |
| Insulator, 131 × 32 × 119 mm | +16.7 % | +50.0 % | +33.3 % | +33.3 % | +25.0 % |
| Slim part, 93 × 18 × 18 mm | +1.2 % | +0.0 % | +3.0 % | +1.2 % | +1.5 % |
| Slim part, 52 × 9 × 9 mm | +0.0 % | +0.0 % | +0.0 % | +0.0 % | +0.0 % |
The median over all 12 rows is +9.8 % at 5 mm gaps. Six of the 12 rows gain 15 % or more. At 10 mm gaps, the median falls to +1.0 %, and three rows gain 15 % or more.
In the Utz RAKO box, the bracket packs 1,392 parts by shape against 1,064 by bounding box. The gain appears only when the bracket's 40 mm dimension points up. In the orientation of the uploaded file, both counts are equal. The orientation search matters as much as the shape.
The gain follows the empty space that survives the gap
A part gains only if a large share of its bounding box stays empty after the gap is applied. For the two slim parts, most of that space closes at 5 mm.
| Part | Empty share of the bounding box, best axis | Empty share at 5 mm gap | Median gain at 5 mm |
|---|---|---|---|
| Bracket | 61.0 % | 42.4 % | +30.8 % |
| Insulator | 50.7 % | 41.8 % | +33.3 % |
| Slim part, 93 × 18 × 18 mm | 25.6 % | 13.2 % | +1.2 % |
| Slim part, 52 × 9 × 9 mm | 29.4 % | 10.0 % | +0.0 % |
Four parts are too few to set a threshold, but the order is the same in both measurements.
Rotation rules change the comparison
When every part may take any quarter turn, the median gain at 5 mm rises to +17.4 %. Most of that rise comes from mixing orientations, which bounding-box packing can also do. The gain from the shape alone is +5.4 %. Compare packing methods with the same rotation rules, or the comparison credits the shape for what the rotation did.
Results: six public printer parts
To test parts that we did not choose for their shape, we used six unchanged STL files from the Original Prusa i3 repository of Prusa Research (GPL-2.0). We fixed the protocol before we ran the solver. The run used 3 mm layer gaps and 10 mm wall and floor clearance. Each value is the median over the three containers.
| Part | Median gain at 5 mm | Median gain at 10 mm |
|---|---|---|
| Einsy-base | +8.3 % | +27.3 % |
| cable-holder | 0.0 % | +4.8 % |
| fan-shroud | +8.9 % | −5.6 % |
| x-end-idler | 0.0 % | 0.0 % |
| y-motor-holder | +42.9 % | +20.0 % |
| y-rod-holder | 0.0 % | 0.0 % |
| Median of the six parts | +4.2 % | +2.4 % |
The motor holder packs 1,080 parts by shape against 756 by bounding box in the Utz RAKO box. A rectangle control gave the bounding-box count in every container, so this gain comes from the shape and not from mixed orientations. The fan shroud loses 5.6 % at 10 mm gaps, because the nester can trail the exact bounding-box count. A production tool must keep the better of the two results.
Speed
A shape count for one container and all three up axes took 0.16 to 1.32 s with half turns. The slowest browser round trip in the public run took about 1 s. A beam search that we also tested did not scale to larger trays: one run took 25.6 s, and a larger one took more than 60 s.
Limits
- The counts are lower bounds, because the footprints are conservative.
- All layers in a container are identical.
- The gaps are default values. Weight limits, inserts, handling and shipping cost are not part of the count.
- The container sizes are stored inner dimensions from our library.
- The bracket is an open model from Thingiverse (thing 1538314, CC BY). The insulator and the two slim parts are test parts in our system.
- We measured the empty space that other parts can reach on only one pack: 7.6 % of the container. That is too little data to generalize.
What this means for packaging decisions
- Test packing by shape on L-shaped, hollow and angled parts first. Blocky and slim parts gain little.
- Search all up axes. A good orientation can matter as much as the shape.
- Compare methods with the same rotation rules.
- Keep the bounding-box result as a fallback when the shape count is lower.
- Check the gap. A 10 mm gap removed most of the gain in our pooled set.
Status in Optipacker
Optipacker's project packing uses bounding boxes today. Packing by shape is in testing for single-part arranged packing and is not yet available to all customers. Contact us to test it with your parts. The AI Packing Lab shows a public single-layer experiment on synthetic parts. To see which tools pack by shape today, read the comparison of packaging planning software.
Ready to optimize your packaging?
Try Optipacker today and see the difference.