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.
- Carton
- 410 × 190 × 220 mm
- On
- EUR pallet 1200×800
- Plan
- 7 layers × 12
- Fill
- 97 %
- Solved in
- 0.05 ms
What you can ask it
One engine answers the stowing questions that come up everywhere from product design to the packing station. The examples are real answers from the engine.
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.
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.
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.
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.
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.
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.
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.
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.
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.
A typical pallet is solved in under a tenth of a millisecond.
On the pallet
Layer patterns and pallet heights for every article in the range.
At the packing station
The right carton for each order, and how low it can be cut.
In the tote
Units per tote for automated storage, shelf bins and crates.
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.
- 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.
| Article | Master data | Optimum | Status |
|---|---|---|---|
| Butter 24x500g | 132 | 132 | Matches |
| Shampoo 15x250ml | 144 | 212 | Can increaseLayer fits 20 upright (master data 16) |
| Dish soap 15x500ml | 12 | 18 | Can increaseLayer fits 6 upright (master data 4) |
| Dry dog food 16x2kg | 31 | 20 | ImpossibleMaster data inconsistent: 4 per layer × 5 layers = 20 ≠ 31 per pallet |
| Pizza 6x350g | 72 | 80 | Can increaseLayer fits 10 upright (master data 9) |
| Cat litter 10x10L | 76 | 36 | Impossible19 per layer is impossible upright (max 9) |
| Pizza 20x350g | – | 32 | No master dataOptimum ready to fill in |
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.
- Cartons
- 1 × XL
- Chosen from
- 9 sizes
- Carton height
- 300 mm
- Fill
- 44 %
13 units on 5 lines. Lower bound 1 carton, so the count is proven optimal.
- Pasta 1kg × 4
- Kitchen scale × 3
- Webcam × 3
- Puzzle 1000 pcs × 1
- Travel guide × 2
Weight limits per carton, this-side-up, padding, minimum support, and totes as cartons. Cut-down heights for machines that build cartons to size.
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. Bars show cartons used above the lower bound, so shorter is better.
Published totals for six methods from the literature against Stowsmith's three effort levels. Times are per instance; the lower bound is 6 840 cartons.
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.
# 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
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"]
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
Short answers to what people ask first, with the same real examples as above.
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.
- Send the request. It takes a minute.
- 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.
- See the results. Pallet data that can change, cartons saved, and where the answers are proven.