Relative packing volume — exact gain depends on box and container geometry.
Single orientation, uniform grid
Tries every allowed box orientation and picks the one with the highest count via floor(L/l) × floor(W/w) × floor(H/h). The minimum you should expect to fit — a sanity check.
When it matters: as the floor (if a smarter tier reports fewer boxes than Basic, something's wrong). Also when stack stability matters more than peak utilization — Basic's single-orientation packs are easier to build manually and more stable in transit.
Layer-by-layer 2D guillotine + brute force
Builds the container one horizontal layer at a time. All boxes in a layer share the same 3D orientation, but in-plane rotations may mix within a layer. For layers with up to 25 boxes, BoxFit additionally runs an exhaustive brute-force search to find mixed-rotation tilings the guillotine misses (e.g. 4 boxes lengthwise + 2 perpendicular).
When it matters: shipments where you want consistent layers for easy unloading, or where layer pads are used. Each layer can be built as a repeating pattern, which is more stable in transit than a fully mixed-orientation pack.
Full 3D guillotine + layer brute force
Extends the guillotine to three dimensions and lets different sub-volumes use different orientations. Columns can reach the full container height with different rotations at each level. For small enough layers, the same brute-force optimization as the Intermediate tier kicks in.
Typically 5–20% more boxes than Basic. On geometries where uniform layers tile the space cleanly, Intermediate can match or beat it — both are worth checking.
When it matters: most of the time. Higher utilization comes from mixing orientations, which trades buildability and stability for volume — see What BoxFit optimizes for below.
When the total box count is under 20 (and orientations aren't constrained), a Find Optimal Solution button appears. This places boxes one at a time at every candidate corner and recursively explores every possible continuation, pruning branches that can't beat the best found so far. For small cases this finds the provably optimal arrangement.
About the "search terminated early" banner
The search has a 2.5-second time budget. If it runs out, we show the best arrangement found so far, labeled "Best Packing Found" rather than "Optimal Packing Found". In practice this only happens at the edge of the 20-box gate.
Quotes and capacity planning
Take whichever of Efficient or Intermediate is higher. Efficient's mixed orientations can be hard to reproduce by hand — if you pack manually, Intermediate's uniform layers are the more realistic target.
Conservative commitments
Basic — achievable with zero planning effort.
Uniform-layer operations
Intermediate — each layer is self-contained with one orientation. Matters for robotic unloading, conveyor systems, and stack stability in transit.
Tight verification on small loads
Click Find Optimal Solution. If the "Best Packing Found" caveat is absent, the arrangement is provably optimal.
Single orientation, uniform grid
Tries every allowed box orientation and picks the one with the highest count via floor(L/l) × floor(W/w) × floor(H/h). One orientation throughout the entire pallet — stable and easy to build by hand.
When it matters: as the guaranteed floor, and whenever stack stability or buildability matters more than squeezing out extra cartons.
Full 3D guillotine + layer brute force
Applies a 3D guillotine algorithm within the pallet height, letting different sub-volumes use different orientations. For small enough layers, an exhaustive brute-force search finds mixed-rotation tilings the guillotine misses.
Typically 5–20% more cartons than Basic. Higher utilization comes from mixing orientations, which trades buildability and stability for volume.
When it matters: automated palletization or when maximizing cartons per pallet is the priority. For manual packing, check whether the extra cartons are worth the more complex build pattern.
Load height is the height of the stacked boxes only, measured from the top of the pallet deck. Total height adds the pallet's tare height. Match total height against warehouse door clearances, truck height limits, and stacking rules. The Max Load Height input is a ceiling for total height — the pallet tare is subtracted internally.
Quotes and capacity planning
Efficient — typically the highest count. Expect 5–15% lower in manual operations.
Manual packing or stability-critical shipments
Basic — one orientation throughout, easier to build repeatably and more stable in transit.
The "Place on pallets in container" toggle runs a two-step calculation:
- Step 1 — cartons per pallet (pallet mode). Runs Basic and Efficient side by side (see above).
- Step 2 — pallets on the container floor. A single shared step that fits loaded pallets into the container floor in one layer. It depends only on the pallet footprint, so it's identical for both tiers — which is why pallet count is the same in both columns. Only the cartons-per-pallet figure differs.
Assumptions
- Pallets sit in a single floor layer — never stacked on pallets.
- Default pallet is EPAL (1200×800 mm, 144 mm base). US GMA, Industrial, and custom dimensions also available.
- Floor space that doesn't fit a full pallet is left unused.
- Pallets aren't mixed between orientations within a single layout — i.e. every pallet on the floor faces the same way; BoxFit won't combine, say, some pallets placed lengthwise with others placed crosswise in the same container.
Stability warning
If any layer of the per-pallet pack has fewer than two cartons, BoxFit shows an amber warning on that tier's card. Single-box layers are geometrically valid but mechanically risky. Switch to Basic if the warning appears on Efficient and your shipment will see significant handling.
Shipping cost is the priority
Efficient — more cartons per pallet, same pallet count.
Manual packing, long transits and mode changes or stability warning fires
Basic — uniform stack, easier to build and more stable. Pallet count is identical.
Weight constraints
Toggle Weight constraints on the calculator to layer payload limits on top of the geometric pack. When weight becomes the binding constraint, the result, 3D view, stacking instructions, and CSV export all show the shippable load rather than the geometric maximum, and an amber banner tells you weight is what's stopping you from loading more.
Fields
- Box weight (kg) — required. Weight of one loaded carton in kilograms. Without this, the calculator can't compute total load weight and the other fields are ignored.
- Pallet tare (kg) — optional, defaults to 25 kg. Empty weight of one pallet. Only used in pallet mode and pallet-in-container mode. 25 kg matches a standard EPAL. Set to 0 if your payload limit already accounts for pallet weight.
- Max pallet weight (kg) — optional. Gross weight cap per pallet (boxes + tare). Applies in pallet mode and pallet-in-container mode. The cartons-per-pallet count is reduced until each pallet stays at or under this gross weight.
- Max container payload (kg) — optional. Total cargo weight a container can carry — boxes plus pallet tare if palletized. Excludes the container's own empty weight. Applies in container mode. The calculator jointly optimises pallet count and cartons-per-pallet to maximise total cartons within this limit.
Which fields apply in which mode
- Container mode (no pallets): Box weight, Max container payload
- Pallet mode: Box weight, Pallet tare, Max pallet weight
- Pallet-in-container mode: Box weight, Pallet tare, Max pallet weight, Max container payload
All weights are kilograms.
What the numbers mean
(number of boxes × box volume) / available volume × 100
90%+ is excellent for most geometries. 95%+ usually requires box and space dimensions to share common factors. 100% is only possible when box dimensions divide the available space exactly in all three axes. The percentage is calculated against the full available volume, including air above the stack.
The same formula applies in every mode — only the denominator changes. In container mode it's the container's internal volume; in pallet mode it's the pallet's load envelope (footprint × stack height); in pallet-in-container mode it's the container volume, with the loaded pallets treated as the cargo being placed.
Six orientations grouped into three pairs by which original dimension points up:
- Flat — original height axis points up.
- Side — box tipped onto its side; original width axis points up.
- Upright — box stood on end; original length axis points up.
"Rotated" means the footprint is turned 90° on the floor plane. For "this side up" constraints, use the Allowed Orientations dropdown.
What BoxFit optimizes for (and what it doesn't)
BoxFit optimizes for maximum volume utilization. For high-value cargo, expensive freight, or automated palletization, the densest pack is the right answer. But density isn't the only thing that matters:
Buildability
A pallet with five different orientations on one layer is dense but requires per-box instructions rather than a repeatable pattern. Manual operations build pallets from a small number of repeated layer types. The Basic tier's uniform output is usually closer to what gets built by hand.
Stack stability
The algorithm doesn't model mechanical stability under transit. Layers with very few boxes, mixed orientations, layer-to-layer center-of-gravity shifts, and heavy weight on small carton faces are all geometrically valid but may need dunnage, strapping, or stretch-wrap. Long ocean shipments and multi-handling routes amplify this. BoxFit flags single-box layers in PIC mode with an in-app warning.
Pick and unload patterns
BoxFit doesn't model unload sequencing. If your operation needs LIFO by destination or FIFO by SKU, you may need to manually re-order or accept a less dense pack.
None of this means BoxFit's output is wrong — the dense pack is right for some users, wrong for others. The algorithm tells you what's geometrically possible; you decide whether it matches your operational reality.
Batch processing (CSV upload)
The Batch page accepts a CSV of shipment configurations and returns calculations for each row. Useful for freight forwarders evaluating multiple quotes, planners running scenario comparisons, or anyone processing more than a handful of shipments at once.
Each row in the CSV defines one shipment: container or pallet mode, dimensions or preset names, allowed orientations, and pallet configuration when relevant. A downloadable template documents the exact column schema. Each row runs through the same algorithm pipeline as the single-job UI — same tiers, same brute-force optimization for small layers, same orientation handling.
Validation is per-row. A CSV with 20 rows where row 7 has invalid dimensions returns 19 successful results plus row 7 with a clear error message. The output CSV echoes input columns plus calculation results (totals, utilization, errors), so you can map results back to the configurations that produced them.
Privacy: processing runs entirely in your browser. The CSV never leaves your device.
Note: large batches with brute-force-eligible cases may take longer than single-job calculations. Most batches complete in seconds; the timeout is set to 90 seconds for safety.
What BoxFit doesn't (yet) model
Honesty matters more than marketing. BoxFit doesn't currently handle:
- Center of gravity / mass distribution. Weight limits cap the total load (see "Weight constraints" above), but BoxFit doesn't optimize for CoG, axle weight, or balanced mass distribution across a pallet or container. Check those separately.
- Per-box stacking rules. "Fragile, no stacking on top" and per-box max stack counts aren't modeled. "This side up" is partially handled via Allowed Orientations, but assumes every box shares the same rule.
- Mixed box types. Algorithms assume one uniform box. Heterogeneous bin packing is a future addition.
- Load-bearing geometry. Every box rests fully on the floor or boxes below — no overhangs. This is geometric support only, not a mechanical-load analysis. If you ever see a box visually unsupported in the 3D viewer, please report it.
- Mechanical stability under transit. See What BoxFit optimizes for above. Layers with few boxes, mixed orientations, or shifting CoG are geometrically valid but may need additional stabilization in practice.
- Box-size tolerances. Calculates against entered dimensions; doesn't add buffer for production variance, bulging under load, or transit damage. Skilled packers typically allow 1–2% slack.
Always sanity-check results against real-world constraints, and verify the 3D arrangement visually for high-stakes shipments before committing.
How much can I trust the numbers?
Different tiers warrant different confidence. Basic is a triple-nested loop placing identical boxes at fixed coordinates — straightforward to verify. Intermediate, Efficient, and Optimal use recursion, memoization, and brute-force search. Those algorithms are designed to produce non-overlapping arrangements by construction, and every result passes through a runtime sanitizer that walks every pair of boxes and removes any geometry failing validation.
We can't guarantee zero bugs and don't claim to. The sanitizer specifically validates one thing: no two displayed boxes overlap. Other properties — boxes inside the container, count matches displayed boxes, well-formed dimensions — rely on the algorithms producing them correctly. For high-stakes shipments, manually verify the 3D arrangement visually and cross-check totals against another tool before committing.
Shareable links
The Share button on the calculator encodes all current inputs — dimensions, unit, mode, orientation constraint, and weight fields — into the page URL. Anyone opening the link sees the exact same setup and can recalculate immediately. No account required; the state lives entirely in the URL.