---
title: Pallet loading and cartonization software | Stowsmith
description: Cartons per pallet and layer patterns, master data checks, units per tote or bin, and orders in the fewest cartons. Every answer shows when it is proven optimal.
canonical_url: https://stowsmith.com/
last_updated: 2026-10-28
language: en
---

# Stowsmith: know exactly what fits

Stowsmith calculates how goods are best stowed: cartons on pallets, products in totes and bins, and mixed orders in shipping cartons. Every answer comes with a bound, so you can see when no better answer exists.

Built for manufacturers, warehouses, 3PLs, e-commerce and automated storage. This is the Markdown version of [stowsmith.com](https://stowsmith.com/), with the same facts. Every number is a real answer from the engine or a published benchmark result.

To try it on your own data, use the [trial request form](https://stowsmith.com/#trial) or email [hello@stowsmith.com](mailto:hello@stowsmith.com).

## Examples from the animation

<!-- data:pallets -->
- Kitchen towels 12-pack, 410 × 190 × 220 mm: 84 cartons per EUR pallet 1200×800, max height 1 800 mm. Plan 7 layers × 12, 97 % full, proven optimal, solved in 0.05 ms.
- Canned tomatoes 24×400 g, 350 × 260 × 240 mm: 69 cartons per EUR pallet 1200×800, max height 1 800 mm. Plan 4 × 15 on end + 1 × 9 upright, 96 % full, proven optimal, solved in 0.08 ms.
- Tea 10×100 bags, 280 × 210 × 180 mm: 135 cartons per EUR pallet 1200×800, max height 1 800 mm. Plan 9 layers × 15, 92 % full, proven optimal, solved in 0.05 ms.
- Phone cases 10-pack, 170 × 120 × 90 mm: 35 cartons per storage tote 650×450. Plan 1 × 21 on end + 1 × 14 on side, 91 % full, proven optimal, solved in 0.11 ms.
<!-- /data:pallets -->

## What you can ask it

One engine answers the stowing questions that come up everywhere from product design to the packing station.

### Pallets

- **How many cartons fit on a pallet?** Every layer pattern, pinwheels and mixed orientations included, within your height, weight, overhang and layer limits. EUR, FIN, half, quarter, industrial, US or your own pallet. Example: Shampoo 15×250 ml, 302 × 136 × 168 mm: 212 per EUR pallet at 1 800 mm. The master data said 144.
- **Is our master data right?** Check the whole article range in one run. Each article is marked as matching, able to take more, or impossible, with the reason. Example: 1 500 articles checked in 0.02 seconds on a laptop.
- **How high is a pallet of 120?** The lowest pallet that holds a given quantity, with its stacking plan. Useful for order quantities, racking and transport. Example: Dog snacks 6×150 g: 120 cartons fit in 1 664 mm, not the 1 744 mm the master data stacks to.
- **What if we raised the height limit?** Sweep the max height or compare pallet types to see exactly where the next layer fits. Example: 380 × 290 × 260 mm: 48 cartons at 1 800 mm, 56 from 1 964 mm.

### Bins and totes

- **How many fit in a tote?** Any tote, bin or crate: storage totes for automated systems such as cube storage, shuttles and miniloads, shelf bins and returnable crates. Give the inside dimensions and the rated load, and the load stays below the rim. Example: Phone cases 10-pack, 170 × 120 × 90 mm: 35 in a 650 × 450 × 330 mm storage tote, in two orientations, 91 % full.
- **Which tote size suits our range?** Run the article range against each tote you are considering and compare units per tote, fill and weight, article by article. Example: the same phone cases: 35 in the 650 × 450 × 330 mm tote, 28 in a 600 × 400 × 290 mm tote.

### Orders

- **Which boxes does this order need?** Mixed items into the fewest or the cheapest cartons from your own assortment, with weight limits, this-side-up and padding. Every answer has a lower bound on the number of cartons. Example: 2 000 sample orders: over 90 % proven to use the fewest cartons possible.
- **How low can the carton be cut?** For packing machines that cut cartons down to their contents: the height for every carton, to the millimetre. Example: order ORD200007: an XL carton cut from 300 to 162 mm, fill up from 44 % to 81 %.

### Your systems

- **Can it run inside our WMS or ERP?** CSV in and out, a command line, Python and the browser, all from one engine with no runtime dependencies. JSON in, JSON out. Example: a typical pallet is solved in under a tenth of a millisecond.

## Check every article's pallet data at once

Wrong cartons per pallet means half-empty trucks, extra pallet places and pallets that are too tall for the rack. Load your article file and Stowsmith compares each article's master data with the optimum and with what is physically possible. It finds:

- per layer × layers that don't add up to per pallet;
- layer counts that can't fit, or stacks taller than the max height;
- quantities over the weight limit;
- stacking higher than the quantity needs.

Reads CSV exports straight from your ERP or WMS, with comma, semicolon or tab, and decimal point or comma.

Example validation results (EUR pallet, max height 1 800 mm):

<!-- data:md-table -->
| Article | Size (mm) | Master data | Optimum | Status | Note |
|---|---|---:|---:|---|---|
| Butter 24x500g (100000) | 371 × 186 × 147 | 132 | 132 | Matches |  |
| Shampoo 15x250ml (100063) | 302 × 136 × 168 | 144 | 212 | Can increase | Layer fits 20 upright (master data 16) |
| Dish soap 15x500ml (100014) | 482 × 296 × 462 | 12 | 18 | Can increase | Layer fits 6 upright (master data 4) |
| Dry dog food 16x2kg (100021) | 495 × 360 × 310 | 31 | 20 | Impossible | Master data inconsistent: 4 per layer × 5 layers = 20 ≠ 31 per pallet |
| Pizza 6x350g (100056) | 315 × 265 × 200 | 72 | 80 | Can increase | Layer fits 10 upright (master data 9) |
| Cat litter 10x10L (100609) | 358 × 246 × 342 | 76 | 36 | Impossible | 19 per layer is impossible upright (max 9) |
| Pizza 20x350g (100042) | 505 × 360 × 200 | – | 32 | No master data | Optimum ready to fill in |
<!-- /data:md-table -->

## Fewer cartons, less air

Give Stowsmith your order lines and your carton sizes. It picks the mix of cartons that holds the order in the fewest boxes, or at the lowest cost, and shows where each item goes. It handles weight limits per carton, this-side-up, padding, minimum support, and totes as cartons, and gives cut-down heights for machines that build cartons to size.

<!-- data:order -->
Order ORD200007: 13 units on 5 lines (Pasta 1kg × 4, Kitchen scale × 3, Webcam × 3, Puzzle 1000 pcs × 1, Travel guide × 2).

- Cartons: 1 × XL (600 × 400 × 300 mm), chosen from 9 sizes.
- Lower bound: 1 carton, so the count is proven optimal.
- Cut down to its contents: 300 → 162 mm high, fill 44 % → 81 %.
<!-- /data:order -->

## Every pallet and carton in 3D

The web app runs the engine in your browser. Browse thousands of articles or orders, filter by status, and turn any pallet or carton on the turntable.

## Proven, not just good

Most tools give you an answer. Stowsmith also calculates the best any answer could be. When the two meet, the result is optimal and the spec sheet says so. When they don't, you see how close it is.

### Pallet layers

Tested on 196 645 standard instances from the research literature, each with a known optimum.

- Optimum found, Cover I and II: 100 %
- Optimum found, Cover III: 99.8 %
- Bounds below a known optimum: 0

Cover II and III with the exhaustive search option. Standard search finds 99.8–100 % on every set.

### Mixed items into cartons

The standard 3D bin packing benchmark (Martello, Pisinger & Vigo): 240 instances, fixed orientation. Published totals for six methods from the literature against Stowsmith's three effort levels. The lower bound is 6 840 cartons, so fewer cartons above it is better.

<!-- data:benchmark -->
| Method | Cartons in total | Above the lower bound | Time per instance |
|---|---:|---:|---|
| C-EPBFD (Crainic et al. 2008) | 7 434 | 594 | under 0.5 s |
| Stowsmith fast | 7 401 | 561 | 25 ms |
| Stowsmith normal | 7 346 | 506 | 0.16 s |
| TS3 (Lodi et al. 2002) | 7 320 | 480 | – |
| GLS (Faroe et al. 2003) | 7 302 | 462 | 1 000 s |
| TS2PACK (Crainic et al. 2009) | 7 298 | 458 | – |
| Stowsmith thorough | 7 288 | 448 | 3.5 s |
| GVND (Parreño et al. 2010) | 7 286 | 446 | – |
| BRKGA (Gonçalves & Resende 2013) | 7 253 | 413 | 2–90 s |
<!-- /data:benchmark -->

## Runs where your data is

Start with a CSV file in the browser. When it should run every night or inside your own systems, the same engine is there.

- **Web app:** open or drop a file. Nothing is installed and the data stays in the browser.
- **Batch files:** article masters and order files in, one result row per article or order out, ready for Excel.
- **Command line:** for scheduled runs and scripts, on every core.
- **Python:** for analysts and data teams, with pandas.
- **Library:** Rust and WebAssembly with JSON in and out, to embed in a WMS, ERP or packing station.

```sh
# Check an article master against EUR pallets at 1 800 mm
stowsmith batch articles.csv -o results.csv --max-height 1800

# Pack a day's orders into your carton sizes, cut down
stowsmith pack orders.csv --articles articles.csv \
  --carton-file cartons.csv --cut-down -o packed.csv

# Where does the next layer fit?
stowsmith sweep -l 380 -w 290 -H 260 --from 1400 --to 2400 --step 100
```

```python
import stowsmith as sw

r = sw.optimize(400, 300, 250, weight=12, max_height=1800)
r["best"]["total"]            # 48, proven optimal

results = sw.optimize_batch(df.to_dict("records"), pallet="eur")

tote = {"kind": "bin", "length": 570, "width": 370, "height": 10, "innerHeight": 280, "maxLoad": 25}
sw.optimize(170, 120, 90, rotate=True, pallet=tote)["best"]["total"]   # 28

order = sw.pack([(300, 200, 100, 5), (150, 150, 150, 3)],
                cartons=[("M", 300, 200, 150), ("L", 400, 300, 200)])
order["byType"], order["provenOptimal"]
```

```csv
id,name,status,per_pallet,md_per_pallet,upper_bound,notes
100000,Butter 24x500g,OK,132,132,132,
100063,Shampoo 15x250ml,CAN_INCREASE,212,144,212,Layer fits 20 upright (master data 16)
100021,Dry dog food 16x2kg,IMPOSSIBLE,20,31,20,Master data inconsistent: 4 × 5 = 20 ≠ 31
100042,Pizza 20x350g,NO_MASTER_DATA,32,,32,
```

## Questions and answers

### How many cartons fit on a EUR pallet?

It depends on the carton, the height limit and the weight limit. Stowsmith tries every layer pattern, pinwheels and mixed orientations included, and gives the best count with its stacking plan. A 302 × 136 × 168 mm shampoo carton fits 212 per EUR pallet at 1 800 mm, where the master data said 144. FIN, half, quarter, industrial, US and custom pallets work the same way.

### How do we check cartons per layer and layers per pallet (TI × HI) for a whole article range?

Load an article master export as a CSV file. Stowsmith compares each article's cartons per layer, layers and cartons per pallet with the optimum and with what is physically possible, and marks it as matching, able to take more, or impossible, with the reason. 1 500 articles are checked in 0.02 seconds on a laptop.

### Can it calculate units per tote or bin for automated storage?

Yes, for any tote, bin or crate: storage totes for cube storage, shuttles and miniloads, shelf bins and returnable crates. Give the inside dimensions and the rated load, and the load stays below the rim. 35 cartons of phone cases, 170 × 120 × 90 mm, fit in a 650 × 450 × 330 mm storage tote, 91 % full.

### What is cartonization, and how does Stowsmith choose the cartons?

Cartonization is choosing the cartons an order ships in. Stowsmith packs the order's mixed items into the fewest or the cheapest cartons from your own assortment, with weight limits, this-side-up and padding, and shows where each item goes. Of 2 000 sample orders, over 90 % were proven to use the fewest cartons possible.

### Does it work with machines that cut cartons down to their contents?

Yes. Stowsmith gives the cut-down height for every carton, to the millimetre. In order ORD200007 an XL carton is cut from 300 to 162 mm, and its fill goes up from 44 % to 81 %.

### What does proven optimal mean?

Besides the answer, Stowsmith calculates the best any answer could be. When the two meet, no better answer exists and the result is marked proven optimal. When they don't, you see how close it is. On 196 645 standard pallet layer instances from the research literature, it found the known optimum in 100 % of Cover I and II and 99.8 % of Cover III.

### How does Stowsmith connect to a WMS or ERP?

Start with a CSV file in the web app, where the data stays in the browser. The same engine runs as a command line tool for scheduled runs, as a Python package for data teams, and as a Rust and WebAssembly library with JSON in and out, to embed in a WMS, ERP or packing station.

### How can we try Stowsmith?

Send the trial request on this page. We reply with a secure way to share a sample, such as an article master export or a few days of order lines as CSV or Excel, run Stowsmith on it and go through the results with you.

## Try it on your own data

Tell us what you want to solve. We run Stowsmith on a sample of your articles or orders and go through the results with you.

1. **Send the request.** Use the [form on the page](https://stowsmith.com/#trial). It asks for name, work email and company (required), phone (optional), what you want to try (pallet patterns, master data validation, totes and bins, orders into cartons, cut-down cartons, running it in your systems), the number of articles in your range, orders per day, and anything else we should know. Submitting it sends the request to Stowsmith, and we reply by email with how to share a sample file. You can also write to [hello@stowsmith.com](mailto:hello@stowsmith.com) directly.
2. **Share a sample.** An article master export or a few days of order lines, as CSV or Excel. We reply with a secure way to send it.
3. **See the results.** Pallet data that can change, cartons saved, and where the answers are proven.

## Company

Stowsmith is a product of Diteva AB, a limited company registered in Sweden. Contact: [hello@stowsmith.com](mailto:hello@stowsmith.com).
