Algorithms

Cylinder Packing: Why Your Bin Packing Software Ships Air

Bounding-box packing quietly wastes a fifth of every pallet of rolls, drums and reels. Here is the geometry, and what it takes to do it properly.

By Dennis Mosch · · 7 min read

In short

  • A cylinder occupies only π/4 ≈ 78.5% of its bounding box, so a cuboid solver over-books volume by 21.5% on every round item.
  • The error never cancels out — it always makes you buy more transport than you need.
  • Staggering rows is not universally better: it wins at small diameters and loses at large ones, which is why this needs a solver rather than a rule of thumb.
  • Orientation, stacking limits and consolidation rules matter more in practice than raw density.

The Bounding Box Tax

When a cuboid solver is handed a cylinder, the standard workaround is to wrap it in its bounding box: the smallest rectangular box the cylinder fits inside. A roll with a diameter of 0.5 m and a height of 0.2 m becomes a 0.5 × 0.5 × 0.2 m box.

The problem is that the cylinder does not fill its own bounding box. It never has and it never will. The ratio is fixed by geometry:

Cylinder volume ÷ bounding box volume

π / 4 ≈ 78.54%

Every cylinder is 21.46% air the moment you put it in a box.

Concretely, for that 0.5 m roll: the true volume is π × 0.25² × 0.2 = 0.0393 m³, while the bounding box reserves 0.05 m³. Load fifty of those onto a trailer and your solver has invented 0.54 m³ of cargo that does not exist.

This error does not cancel out. It compounds in one direction only — you always book more transport than you need. And because the number the solver reports back looks perfectly reasonable, nobody in the chain ever notices.

Nesting: Where the Volume Comes Back

The reason the bounding box tax is worth attacking is that cylinders nest. Shift every second row by half a diameter and the rolls settle into the gaps of the row below. This is hexagonal packing, and in the infinite plane it reaches 90.69% area utilisation against 78.54% for a plain square grid — roughly 15% more rolls per layer.

Here is where most people stop reading and conclude they should always stagger their rows. That conclusion is wrong, and it is wrong in an expensive way. The 90.69% figure holds for an infinitely large surface. A pallet is not infinitely large, and edge effects dominate at realistic diameters:

Roll diameter Square grid Staggered rows Difference
100 mm 96 104 +8.3%
150 mm 40 45 +12.5%
200 mm 24 22 −8.3%
300 mm 8 7 −12.5%

Rolls per single layer on a 1200 × 800 mm EUR pallet, no overhang, upright orientation.

At 100 and 150 mm the stagger pays. At 200 and 300 mm it costs you rolls, because the extra row you gain vertically does not make up for the rolls you lose at the ends of every offset row. Swap in a 1200 × 1000 mm pallet and all four answers change again.

This is the real argument for a solver rather than a rule of thumb. There is no pattern that is always right. The optimum depends on the diameter, the pallet footprint, the mix of diameters in the order, and where the load is allowed to overhang. A human with a spreadsheet cannot hold that in their head, and a cuboid solver cannot even see the question.

Interested in packing optimization?

Integrate Packing Optimizer into your IT environment to instantly access a range of advanced packing algorithms that drive business success.

The Constraints That Actually Bite

Geometry is only the first layer. In practice, cylinder loads carry a set of constraints that cuboid loads simply do not have.

Orientation is a real decision

A box on its side is still a box. A roll on its side is a rolling hazard that needs chocks, a cradle or a nested valley to sit in. Upright ("on end") rolls stack cleanly and use the full pallet height; rolls on their side often carry less and load slower, but may be the only option when the core cannot take axial load. The right answer differs per product family, which means it has to be an input, not an assumption.

Stacking is not free

Wound material deforms under load. A roll that carries three of its siblings on top will arrive out-of-round and be rejected at goods-in. Any usable engine has to accept per-item stacking limits rather than treating vertical space as uniformly available. In our API this is the stackingStyle parameter.

Consolidation beats density

The mathematically densest load is frequently the operationally worst one, because it mixes six customers across four pallets and forces a re-sort at the cross-dock. Real optimisation means finding the densest load subject to keeping an order, a customer or a delivery date together — the consolidationKey in our request body.

The bins are not all boxes either

Cylinders often go into cylindrical containers: drums, tubes, cores, kegs. A packing engine that can only model rectangular bins has to fall back to a bounding box a second time, on the container side, and the errors multiply. Our Cylinder Pack endpoint accepts a mixture of cylindrical and cuboid bins in the same request.

What You Get Back

The output is not a summary statistic. It is a full placement plan: how many bins of which type, the utilisation of each, and the exact coordinates of every item inside them — enough to drive a picking instruction or a 3D visualisation without any further calculation.

{
  "requiredNrOfBins": 3,
  "totalVolumeUtil": 63.99728,
  "totalWeightUtil": 22.15385,
  "packedBins": [
    {
      "id": 1,
      "type": "pallet-type-1",
      "width": 1.2,
      "depth": 0.8,
      "height": 1.65,
      "actualVolumeUtil": 57.31515,
      "nrOfItems": 2,
      "fittedItems": [
        {
          "id": "DTM001",
          "diameter": 0.5,
          "height": 0.2,
          "volume": 0.03926,
          "weight": 10,
          "xCoordinate": 0.5,
          "yCoordinate": 0.6830,
          "zCoordinate": 1.2
        }
      ]
    }
  ]
}

Note the volume field: 0.03926 m³ for that roll, not the 0.05 m³ a bounding box would have charged you.

A Note From the Field

We built and hardened this endpoint alongside a manufacturer of coated roll materials, where every outbound shipment is cylindrical and the diameter mix changes from order to order. Three things surprised us in that work, and they have held up everywhere since:

  1. The savings were not mostly geometric. The largest single gain came from choosing the right pallet type per order out of the available mix, not from packing any one pallet more tightly.
  2. Planners did not trust a number without a picture. Coordinate-level output that could be rendered as a load diagram was what actually got the tool adopted on the floor.
  3. The constraints were the hard part, not the packing. Stacking limits and consolidation rules were the difference between a plan that looked good and a plan the warehouse would run.

Should You Care?

A quick test. If a meaningful share of what you ship is round, take one recent outbound order and work out two numbers: the total volume your system booked, and the sum of πr²h across the items. If the first is more than about 25% larger than the second, you are paying the bounding box tax on every load, and it is very likely the largest unexamined line in your freight spend.

It is also the kind of problem that stays invisible indefinitely, because nothing ever breaks. The trucks leave, the goods arrive, the invoices get paid. There is just consistently less on each truck than there could have been.

Try it against your own numbers.

Cylinder Pack is a single REST call. Send us one real order line and we will run it for you, or read the documentation and run it yourself.

Cylinder Pack API documentation  ·  Feature overview  ·  Visualisation

Frequently Asked Questions

Can I use a normal 3D bin packing algorithm for cylinders?

You can, by wrapping each cylinder in a bounding box, and many teams do. The result is arithmetically correct but systematically pessimistic: you reserve 27% more volume than the item actually occupies (0.05 m³ instead of 0.0393 m³ in the example above), and you lose the ability to nest rows. For occasional round items it is tolerable. If round items are a meaningful share of your volume, it is a permanent tax.

What is the most efficient way to pack cylinders on a pallet?

There is no single answer, which is the point of the table above. Hexagonal (staggered) nesting reaches 90.69% area utilisation in theory, but on a finite pallet the edge losses can outweigh the gain. On a 1200 × 800 mm pallet, staggering gains 8–13% at 100–150 mm diameters and loses 8–13% at 200–300 mm. The optimum depends on diameter, pallet footprint, the diameter mix in the order and the allowed overhang.

How much can cylinder packing optimization actually save?

It depends on your starting point, but the two recurring sources are the bounding-box error (a fixed 21.5% per item on volume-based calculations) and choosing the right bin or pallet type per order. In our experience the second is usually larger than the first, and neither is visible until you measure.

Should rolls be shipped upright or on their side?

Upright ("on end") rolls stack cleanly and use the full pallet height. Rolls on their side need chocks, a cradle or a nested valley, and often load slower — but may be the only option when the core cannot take axial load. It differs per product family, so it belongs in your data as a per-item constraint rather than a global assumption.

Does Packing Optimizer support cylindrical containers as well as cylindrical items?

Yes. The Cylinder Pack endpoint accepts a mixture of cylindrical and cuboid bins in the same request, so drums, tubes and cores can be modelled directly rather than approximated by a box.

Have any questions?

Tell us about your packing problem and we will come back to you, usually the same day.

Send us a message.