Cutting optimizer benchmarks

We publish the numbers behind the optimizer instead of asking you to trust a marketing claim. Every job below is generated from a fixed seed, solved by the same engine that runs on this site, and compared against the way that cut list would be worked through by hand.

Dataset generated: 2026-08-31 · Seed: 20260901 · Raw dataset (JSON)

400 cut jobs solved
19,322 parts placed
53% less linear waste than cutting by hand
< 0.32 ms 95th-percentile solve time

Why we publish this

Cutting optimizers all claim to save material. Almost none of them say how much, on what jobs, or against what alternative. That makes the claims impossible to check. This page gives you the job set, the baseline definition, the seed and the raw results, so you can re-run the whole thing yourself and disagree with us in specifics rather than in general.

Method

The job set

Ten stock profiles taken from real supply formats: 6 m softwood, 6.5 m aluminium extrusion, 12 m rebar, 2.44 m skirting, 6 m steel tube, 2440 × 1220 MDF, 2500 × 1250 plywood, 1830 × 920 birch ply, 3000 × 1500 sheet steel and 3210 × 2250 float glass. Each profile gets the same number of generated jobs, each with four to twelve distinct part sizes and realistic quantities, kerf and edge trim.

The baseline: cutting by hand

The comparison is not another optimizer — it is what happens without one. The baseline takes the parts in the order they were written on the list, keeps filling the current bar or sheet, and starts a new one as soon as the next part will not fit. No sorting, no rotation, no looking ahead. That is how a cut list gets worked through at the bench.

The metrics

Waste is the share of consumed stock that ends up as offcut, including the partly used last bar or sheet — counted the same way for both sides. Stock units are the bars or sheets actually consumed. Solve time is wall-clock time for the solver call alone, measured on a normal laptop; the solver runs in your browser, so nothing is queued on a server.

What is excluded

Jobs where the engine cannot place every part are dropped from both sides rather than scored as a win. Generated jobs get generous stock so neither method is starved. Nothing is tuned per profile: the same solver settings run across all ten.

Linear cutting results

Bars, tubes, profiles and mouldings cut to length from stock lengths.

Stock profile Jobs NestingCalc waste Waste cutting by hand Waste removed
Softwood 6 m 40 8.4% 17.7% 52%
Aluminium 6.5 m 40 7.6% 13.9% 45%
Rebar 12 m 40 7.5% 17.8% 58%
Skirting 2.44 m 40 8.7% 16.6% 48%
Steel tube 6 m 40 7.9% 15.3% 48%
All profiles 200 7.9% 16.7% 53%

297 bars saved across the job set (9.1%) · 157/200 jobs solved with fewer stock units

Sheet cutting results

Panels nested on full sheets of board, metal or glass. Sheet packing is a harder problem than linear cutting and the numbers show it — a mixed bag of unrelated rectangle sizes is close to the worst case for any nesting algorithm.

Stock profile Jobs NestingCalc waste Waste cutting by hand Waste removed
MDF 2440 × 1220 40 33.1% 45.9% 28%
Plywood 2500 × 1250 40 33.1% 44.9% 26%
Birch ply 1830 × 920 40 35.1% 47.9% 27%
Steel 3000 × 1500 40 35.0% 46.6% 25%
Float glass 3210 × 2250 40 28.5% 45.3% 37%
All profiles 200 32.1% 45.8% 30%

300 sheets saved across the job set (19.5%) · 171/200 jobs solved with fewer stock units

Speed

The solver runs locally in your browser: nothing is uploaded, nothing is queued, and there is no free-tier rate limit to hit.

Metric Median 95th percentile Slowest job
Linear solve time 0.05 ms 0.20 ms 0.74 ms
Sheet solve time 0.03 ms 0.32 ms 0.66 ms

How NestingCalc compares with other cutting optimizers

Material savings are only part of the decision. Most cutting optimizers are subscription products that cap the free tier by part count or by jobs per day, and none of the four below publish a Markdown version of their pages or an MCP server for AI assistants. Here is where NestingCalc sits.

Feature NestingCalcCutList EvolutionOptiCutterSmartCut.proCutList Optimizer
Free tier limit no limit40free plannot published5 / 24 h
Paid plans none150 – 2000€9 – 99$2.50 – 779tiered
Interface languages 1911121several
Linear and sheet cutting ✓✓✓✓✓
Wood industry calculators (Hoppus, JAS, kiln, EMC, shrinkage) 160000
Markdown version of every page for AI agents ✓————
MCP server for AI assistants ✓ 32————
Published reproducible benchmark data ✓articles only———
Kerf (blade width) setting ✓✓✓✓✓
Grain / rotation lock per part ✓✓not publishednot published✓
Edge banding ✓✓not publishednot published✓
Reusable offcuts (remnant handling) linear only✓not published✓not published
Part labels & PDF cut sheets browser print✓✓✓✓
Saved projects & plan history ✓✓✓✓✓

Competitor details were read from each vendor's own public pages on 31 August and re-checked on 10 September 2026; they describe the entry tier unless stated otherwise. Plans and limits change — check the vendor's page before deciding.

A note on AI assistants

Every page on this site has a Markdown twin at the same address plus /index.md, listed in llms.txt, and all 29 calculators are exposed as tools on a public MCP server. That is deliberate: when someone asks an AI assistant how many boards a job needs, the assistant can read the method and call the calculator instead of guessing. We do not block AI crawlers, and we would rather be quoted with the method attached than not quoted at all.

Reproduce these numbers

The benchmark is a test in the repository, not a slide. Clone it, run the command below, and it regenerates the exact dataset this page renders — same seed, same jobs, same results. The published quality thresholds are asserted in that test, so a regression fails the build rather than quietly changing this page.

BENCH_WRITE=1 pnpm --filter @cutting/engine test

Questions

Is this benchmark independent?

No. We wrote it, we run it, and it measures our own solver. That is exactly why the seed, the generator, the baseline definition and the raw data are all published: you do not have to take our word for any of it, you can re-run it and check. Treat an unaudited number from any vendor — including us — as a claim to verify, not a fact.

Why compare against hand cutting instead of against other optimizers?

Because it is the honest comparison we can actually publish. Running competing subscription products at scale to score them would mean working around their free-tier limits, and any result would be a snapshot of a version we do not control. Hand cutting is the method most people are really replacing, and it can be defined precisely enough for you to reproduce. The feature table above covers the rest of the comparison.

Why is sheet waste so much higher than linear waste?

Two reasons. Nesting unrelated rectangle sizes is close to the worst case for any packing algorithm, and this generator deliberately produces mixed sizes rather than the repeated part sizes of a real cabinet job. On top of that, the partly used last sheet counts fully as waste. Real jobs with repeating parts nest considerably better; the baseline comparison is what matters here, not the absolute figure.

Does the optimizer find the mathematically optimal plan?

No, and neither does anything else you can run instantly in a browser. Cutting stock is NP-hard: proving a plan optimal takes exponential time as parts grow. The engine uses well-established heuristics — largest-part-first with best-fit placement for lengths, shelf packing for sheets — which get close, run in well under a millisecond, and are consistent from run to run.

Open the linear cutting calculator Open the sheet cutting calculator Case studies