---
title: "Cutting optimizer benchmarks"
description: "Reproducible benchmark data for the NestingCalc cutting optimizer: how much material the linear and sheet solvers save against sequential hand cutting, with the seed, the method and the raw dataset published."
image: "https://nestingcalc.com/og-default.png"
url: "https://nestingcalc.com/benchmarks/"
locale: "en"
---

# 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)](https://nestingcalc.com/data/benchmark.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 | NestingCalc | CutList Evolution | OptiCutter | SmartCut.pro | CutList Optimizer |
| --- | --- | --- | --- | --- | --- |
| Free tier limit | no limit | 40 | free plan | not published | 5 / 24 h |
| Paid plans | none | 150 – 2000 | €9 – 99 | $2.50 – 779 | tiered |
| Interface languages | 19 | 1 | 11 | 21 | several |
| Linear and sheet cutting | ✓ | ✓ | ✓ | ✓ | ✓ |
| Wood industry calculators (Hoppus, JAS, kiln, EMC, shrinkage) | 16 | 0 | 0 | 0 | 0 |
| 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 published | not published | ✓ |
| Edge banding | ✓ | ✓ | not published | not 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](https://nestingcalc.com/linear-cutting-calculator/) [Open the sheet cutting calculator](https://nestingcalc.com/sheet-cutting-calculator/) [Case studies](https://nestingcalc.com/case-studies/)

```json
[{"@context":"https://schema.org","@type":"Organization","@id":"https://nestingcalc.com/#organization","name":"NestingCalc","url":"https://nestingcalc.com/","description":"Free cutting optimizer & nesting calculators","logo":"https://nestingcalc.com/logo-512.png"},{"@context":"https://schema.org","@type":"WebSite","@id":"https://nestingcalc.com/#website","name":"NestingCalc","url":"https://nestingcalc.com/","inLanguage":"en","publisher":{"@id":"https://nestingcalc.com/#organization"}},{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"NestingCalc","item":"https://nestingcalc.com/"},{"@type":"ListItem","position":2,"name":"Cutting optimizer benchmarks","item":"https://nestingcalc.com/benchmarks/"}]}]
[{"@context":"https://schema.org","@type":"Dataset","name":"Cutting optimizer benchmarks","description":"Reproducible benchmark data for the NestingCalc cutting optimizer: how much material the linear and sheet solvers save against sequential hand cutting, with the seed, the method and the raw dataset published.","inLanguage":"en","dateModified":"2026-08-31","creator":{"@id":"https://nestingcalc.com/#organization"},"license":"https://creativecommons.org/licenses/by/4.0/","distribution":[{"@type":"DataDownload","encodingFormat":"application/json","contentUrl":"https://nestingcalc.com/data/benchmark.json"}],"variableMeasured":[{"@type":"PropertyValue","name":"linear waste ratio","value":0.0785},{"@type":"PropertyValue","name":"sheet waste ratio","value":0.3205},{"@type":"PropertyValue","name":"linear solve time p95 (ms)","value":0.202}]}]
```
