Cut List Optimizer, Explained

Read this to understand how a cut list optimizer packs your parts onto the fewest boards or bars, why the saw kerf matters, and how to read the waste and utilization numbers so you buy the right amount of stock.

What the tool does and one quick example

You have a list of parts to cut from long stock: framing timber, aluminum extrusion, steel bar, pipe, trim. Each part has a length and a quantity. The stock comes in fixed lengths. The question is simple to ask and hard to answer well: how do you assign parts to stock pieces so you use as few pieces as possible?

Here is the trap. Say you need six parts of 800 mm from 2400 mm stock. Naively, three parts fit per board (3 × 800 = 2400), so two boards seem enough. But every cut turns a strip of material to dust. With a 3 mm kerf, two cuts inside a board consume 6 mm, so three 800 mm parts actually need 2406 mm. They do not fit. You get two parts per board and need three boards, not two. The optimizer accounts for this automatically. Doing it by eye is where money leaks.

When to use it, and when not

This tool solves the one-dimensional cutting stock problem. Use it whenever your parts are defined by a single length and your stock is a straight run: dimensional lumber, metal bar and tube, PVC pipe, extrusion, cable, edge banding, skirting.

Do not use it when width matters. Cutting rectangles out of a plywood or MDF sheet is a two-dimensional nesting problem, because a part occupies both a length and a width and the offcuts are areas, not lengths. For that, use the Sheet Goods Cut Optimizer. If your cuts are angled rafters, the Roof Pitch & Rafter Calculator gives lengths and cut angles first, then you can feed those lengths in here.

Any consistent unit works. Enter everything in millimeters, or everything in inches, or everything in centimeters. The tool never converts; it just packs numbers. Mixing units silently is the fastest way to a wrong plan.

The math, built from the cut itself

Start with what a single board can hold. Put n parts on one stock piece of length L. Between each pair of parts sits one saw cut of width k (the kerf). With n parts there are n-1 internal cuts. So the parts fit only if:

\sum_{i=1}^{n} p_i + (n-1)\,k \le L

Here p_i is the length of the i-th part on that board, k is the kerf, and L is the stock length. The term (n-1)k is the material lost to blade width. Rearrange to find the leftover on a board:

\text{offcut} = L - \sum_{i=1}^{n} p_i - (n-1)\,k

The offcut is the usable remnant at the end of the board. Total waste across the job is the sum of all offcuts plus all the kerf material. Utilization is the fraction of purchased stock that ends up as finished parts:

U = \frac{\sum_{\text{all parts}} p_i}{L \times B}

B is the number of stock pieces used. If you cut 7100 mm of parts and buy three 2400 mm boards, U = 7100 / 7200 = 0.986, or 98.6 percent. Note that utilization can never reach 100 percent once any kerf exists, because every internal cut removes material that no part keeps.

Why finding the true optimum is hard

The obvious approach is to try every way of grouping parts onto boards and keep the best. That works for four parts. It collapses for forty: the number of groupings grows faster than any polynomial, and the problem is formally NP-hard. There is no known method that is both fast and guaranteed optimal for large lists.

So the tool uses a heuristic called first-fit decreasing (FFD), then improves it. FFD is easy to picture:

  1. Sort all parts from longest to shortest.
  2. Take the next part. Place it on the first open board where it still fits (remember to add a kerf if the board already holds a part).
  3. If it fits nowhere, start a new board.
  4. Repeat until every part is placed.

Sorting longest-first matters. Big parts are the hard ones to seat; placing them while boards are empty leaves room for small parts to fill gaps later. After FFD, the tool runs repacking and pairwise-swap passes that shuffle parts between boards to see whether waste can shrink or consolidate. For workshop-sized lists this lands on the true optimum or within one extra stock piece of it.

A worked example with the demo data

Twelve parts, 2400 mm stock, 3 mm kerf

Load the demo: stock 2400, kerf 3, and the parts list below.

The parts list from the demo button
Length (mm)QuantitySubtotal (mm)
200024000
70042800
45041800
4002800

Total part length is 4000 + 2800 + 1800 + 800 = 9400 mm. Divide by stock length: 9400 / 2400 = 3.92, so at least four boards are needed on length alone, before kerf. Now pack, longest first.

  1. Board 1: one 2000. Remaining 2400 − 2000 = 400. Add a 400 mm part? That needs 2000 + 3 + 400 = 2403 > 2400. It does not fit. Board 1 holds just the 2000, offcut 400.
  2. Board 2: the second 2000, same story, offcut 400.
  3. Board 3: a 700. Add another 700: 700 + 3 + 700 = 1403, fits. Add a third 700: 1403 + 3 + 700 = 2106, fits. Add a 450: 2106 + 3 + 450 = 2559 > 2400, no. Add a 400: 2106 + 3 + 400 = 2509 > 2400, no. Board 3 holds three 700s, offcut 2400 − 2106 = 294.
  4. Board 4: the last 700, then 450: 700 + 3 + 450 = 1153. Another 450: 1606. Another 450: 2059. Last 450: 2059 + 3 + 450 = 2512 > 2400, no. Add a 400: 2059 + 3 + 400 = 2462 > 2400, no. Board 4 holds one 700 and three 450, offcut 2400 − 2059 = 341.
  5. Board 5: the last 450 and two 400: 450 + 3 + 400 + 3 + 400 = 1256. Offcut 2400 − 1256 = 1144.

Five boards. Purchased length 5 × 2400 = 12000 mm. Utilization = 9400 / 12000 = 78.3 percent. Total offcut = 400 + 400 + 294 + 341 + 1144 = 2579 mm; kerf loss = 12000 − 9400 − 2579 = 21 mm (seven internal cuts × 3 mm). The improvement pass will not drop below five boards here (four is impossible: the two 2000s each waste a whole board), but it can move offcuts around so one board keeps a long reusable remnant.

Each bar reaches 2400 mm of stock. The lower segment is finished parts, the upper segment is the leftover offcut. Board 5 carries most of the waste.

Reading and interpreting the results

Boards used
The count you buy. This is the number that costs money. Everything else is diagnostic.
Utilization
Finished part length divided by purchased length. Above 90 percent is efficient. The 78.3 percent in the demo is low because the two 2000 mm parts strand 400 mm each; that is a property of your part mix, not a fault in the plan.
Offcut
The usable remnant per board. A single long offcut is worth keeping; several short ones usually are not.
Kerf loss
Material the blade destroyed. Small per cut, but it is what pushes "exactly fits" down to "does not fit".

The pairwise-swap pass does not reduce total waste. It concentrates the same waste into one long offcut you can reuse on the next job, instead of five stubs you throw away. Watch board 5 grow its remnant while the board count stays fixed.

See how kerf changes the count

Kerf feels tiny, so people ignore it. On tight packs it decides the board count. The widget below lets you slide the kerf and watch parts spill onto an extra board.

With the demo list and 2400 mm stock, a 0 mm kerf still needs five boards because the two 2000 mm parts each dominate a board. But if you change the list to six parts of 800 mm, a 0 mm kerf packs three per board into two boards, while any kerf of 1 mm or more forces two per board and three boards: the extra 6 mm of blade material breaks the 3 × 800 fit.

Common mistakes

Forgetting the finishing cut. The formula counts one kerf between consecutive parts. If you also trim the free end of a board (a clean-up cut), the last offcut shrinks by one more kerf. On a plan with many boards that is a few extra millimeters per board, rarely enough to change the count but worth knowing when a part fits with 1 mm to spare.

Assuming parts add up to boards. The demo needs 9400 mm, which is 3.92 boards, yet it takes 5. The gap is stranded space: a 400 mm remnant behind a 2000 mm part can hold nothing in your list. Buying "4 boards because 9400 fits in 9600" leaves you one short.

Mixing units. Stock in millimeters, one part typed in inches, and the plan is garbage with no warning. Pick one unit and stay in it.

Ignoring grain, defects and squareness. The plan assumes every board is perfect for its full length. Real timber has knots and split ends; real bar has bent tips. Add a small allowance to each part if your stock is rough, or the plan that fits on paper will not fit in the shop.

Related tools

For rectangular parts on sheet material, switch to the Sheet Goods Cut Optimizer. If you are cutting stair parts, the Stair Calculator gives riser and tread sizes to feed in. When the same job moves to a CNC router, the CNC Feeds & Speeds Calculator sets RPM and feed rate, and the 3D Print Cost & Time Calculator covers the additive side of a mixed build.

Frequently asked questions

Why does the tool use more boards than my part total suggests?

Because leftover space is only useful if a part fits in it. A 400 mm remnant is wasted if your shortest part is 450 mm. Sum the parts to find the floor on board count, then expect the real plan to sit above it whenever your part sizes do not tile the stock neatly.

Is the plan guaranteed to use the fewest possible boards?

Not guaranteed, but close. The one-dimensional cutting stock problem is NP-hard, so no fast method promises the true minimum for every list. First-fit decreasing plus the swap and repack passes lands on the optimum or within one board of it for typical workshop lists.

How do I include an end-trim on every board?

Add the trim length as a tiny extra "part" on each board, or shorten your stock length by the trim amount before entering it. If you trim 5 mm off a 2400 mm board, enter 2395 as the stock length.

Can I keep offcuts for a future job?

Yes, and that is the point of the swap pass concentrating waste. Note the longest offcut from the results (in the demo, 1144 mm on board 5) and treat it as free stock next time by pricing that board at zero.

What kerf should I enter?

Measure it if you can: cut a scrap, the removed width is your kerf. Most circular saw and chop saw blades sit at 2 to 4 mm; a thin bandsaw blade can be under 1 mm; a plasma or abrasive cut on metal can exceed 4 mm. Enter the real number, because it decides borderline fits.