Skip to main content
On this page▾

2D Panel Cutting

2D Panel Cutting is CutOptim’s primary mode. It solves the classic rectangle bin-packing problem: given a set of large rectangular sheets and a set of smaller rectangular pieces, find the arrangement that uses the fewest sheets with the least waste.

This mode is used for sheet materials including plywood, MDF, particleboard, melamine, glass, aluminium composite panel, steel sheet, foam board, and any other material that comes in flat rectangular stock.


How 2D Optimization Works

CutOptim models your cutting job as a bin-packing problem:

  • Bins are your stock sheets — large rectangles you are cutting from
  • Items are your demand pieces — smaller rectangles you need to produce

Rather than filling in a single greedy pass, the optimizer runs several packing strategies over your whole job — different shelf and column layouts, sort orders and rotations — and keeps the best-scoring result (fewest sheets, least waste). Every strategy uses a guillotine cutting model:

  • Guillotine cutting — Every cut goes edge to edge across the sheet. This mirrors how a panel saw, table saw, or beam saw works, so the resulting cut sequence is practical for manual and semi-automatic cutting. It is the 2D Panel mode’s cutting model; for true-shape (free-form) nesting of irregular parts — for CNC routers, laser, plasma or waterjet — use the separate Nesting mode.

CutOptim also respects kerf width — the material lost as sawdust in every cut. A 3 mm kerf on a 100-piece job can add up to losing an entire sheet. Always enter your kerf accurately. See Settings & Kerf.


Adding Stock Sheets

Stock sheets represent the raw material you have available to cut from. Each stock row defines one sheet size.

Sheet supply — the toggle above the table — decides how the quantities are read. In Unlimited (the default) the optimizer buys as many of each size as the plan needs, so a feasible job never fails for want of a board; the per-row quantity plays no part and its column is hidden. Switch to Limited only when you have a fixed number of boards on hand: each row’s quantity then becomes a hard cap, the optimizer combines your sizes to make everything fit, and the result names any pieces it could not cut. If a plan you know is possible comes back short, check that you are not in Limited mode with too few boards entered.

Several sheet sizes in Unlimited. When two or more sizes are entered, the optimizer also tries mixes of them — for example one large sheet fewer and one to three of a smaller size in its place — and keeps a mix only when every part still fits on less material. So the plan can use more sheets than before, but never more material.

Search harder for less material. When every part fits and two or more sheet sizes are entered, the plan offers Search harder for less material (usually under 15 s, at most 30 s) below How this plan was optimized. A stronger solver on our server looks for a mix of the sizes that uses less material — saw-cuttable layouts, and in CNC mode free layouts too. The plan changes only if every part still fits on less material; it is free and no run is charged. It is not offered with the Min. cost goal, in Material mode or with Grain matching sets.

The stock sheet table showing rows with width, height, price fields, and — in Limited supply mode — a quantity field
Stock table with three different sheet sizes entered.
FeatureTypeDescription
WidthnumberSheet width in the active unit (mm or cm). This is the horizontal dimension on the canvas.
LengthnumberSheet length in the active unit. This is the vertical dimension on the canvas.
QuantityintegerHow many sheets of this size you have. Shown and used only when Sheet supply is set to Limited, where it is a hard cap; in Unlimited (the default) the field is hidden and the optimizer uses as many sheets as needed.
PricenumberCost per sheet. Used to calculate total material cost in the results summary and quotation export. Leave blank if pricing is not needed.
NametextOptional material name for this stock size, e.g. '18mm MDF' or '2400×1200 Structural Ply'. It labels the sheet on the plan and carries into the PDF and Excel exports, so the cut sheet says which board to fetch. Loading from the Material inventory or an offcut fills it in for you.

Entering several sizes lets the optimizer combine them in one plan. If instead you are deciding which single size to buy, press ⚖ Which sheet? in the panel header: it runs your cut list on each size on its own and ranks them by material — see Which sheet? — comparing sheet sizes.

Best practices for stock sheets:

  • Enter the actual usable dimensions of your sheet, not the nominal size. A sheet sold as 2440×1220 mm may actually be 2438×1218 mm after factory edge trimming — measure your sheets.
  • If you have a mix of full sheets and partial offcuts from a previous job, add them as separate stock rows with their actual dimensions and a quantity of 1.
  • Use the price field even for internal jobs. Seeing the cost breakdown helps identify whether a job is priced correctly.

Adding Parts

Parts are the rectangular pieces you need the optimization to produce from your stock. They go in the Parts (2D) table.

FeatureTypeDescription
WidthnumberRequired piece width in the active unit.
LengthnumberRequired piece length in the active unit.
QuantityintegerNumber of identical pieces required.
LabeltextDescriptive name for this piece, e.g. 'Door Panel LH' or 'Shelf 600'. Printed on the cut diagram and in the CSV export.
Grain (icon)iconTurn arrow (the default): the optimizer may turn the piece 90° to save material. Click once for lines across (grain along the Width), again for lines down (grain along the Length): the piece is placed with that side along the sheet's grain. The icon pictures the piece as entered; hover it for the exact side. The ⓘ in the header opens Grain Direction. Available on every plan.

Tips for entering parts:

  • Always enter a label for each piece. On a complex job with 50+ pieces, unlabelled rectangles on the cut diagram are impossible to identify.
  • If you have many identical pieces, enter them once with the correct quantity rather than as separate rows.
  • To add trim allowance (for pieces that need to be cut slightly oversize then trimmed to final size), set Oversize per side under Settings → More → Blade & trim and keep entering finished sizes. For example, a finished 400×800 mm piece with 5 mm oversize per side is packed and cut as 410×810.

CSV Import for Parts

If your cut list already exists in a spreadsheet, you can import it directly:

  1. Open the CSV ⌄ dropdown in the Parts section header (2D, 1D, or Wood) and choose Import CSV
  2. Choose your .csv file — columns are read by position: name, width, length, qty (an optional header row is detected and skipped)
  3. The parts are added to the Parts table straight away

Not sure of the column order? Click the Template button next to the CSV import to download a ready-made CSV with the correct columns and an example row. See Importing data for the full reference.

Parts that must match: grain-matched sets

Under the Parts (2D) table sits the Grain matching strip (hide it with its ✕, and the Grain matching switch that then appears above the table, next to Edge Banding, brings it back). It appears once a part has a grain direction or is named like a door, drawer or front, or after a furniture template with fronts. It groups parts into a set — for example a drawer front over two doors — that is cut as one block: the parts side by side on the sheet, exactly one saw gap apart, with one grain direction, so the veneer figure runs on across them. A part in a set shows an A mark under its row number. Each part keeps its row in the table (sizes are still edited there); the set only says where the parts sit relative to each other. See Grain matching.


How CutOptim Cuts: Guillotine

CNC mode (since 14 October 2026). Everything in this section describes the default saw mode. If you cut on a CNC router, switch on CNC mode (free placement) in Settings: the parts are then placed freely, not on edge-to-edge cut lines — see CNC mode.

CutOptim’s 2D optimizer is guillotine-only — there is no cut-type toggle in Settings. Every cut is a straight line that runs from one edge of the (remaining) sheet to the opposite edge, mirroring the physical operation of a panel saw, table saw, or beam saw.

Why guillotine:

  • The cut sequence can be handed to an operator as a straightforward cut list — or stepped through on screen with the Cutting Sequence player
  • Works on a table saw, panel saw, track saw, or beam saw — no CNC required
  • Cuts remain reproducible when material is flipped or moved between passes

Comparing against other tools: a free-nesting optimizer — one that drops pieces anywhere on the sheet — will usually report a higher yield than a guillotine optimizer on the same list. That gap is the price of cuts you can actually make on a panel saw, not a defect. Compare like with like before judging a number.

True nested (free-form) cutting — where pieces are placed anywhere on the sheet to squeeze out a few extra percent of yield on a CNC router — is not a cut-type toggle inside 2D Panel mode. For irregular polygons (and free-placed rectangles) use the separate Nesting mode; a rectangular free-nesting balanced engine is also available through the Engine API.


Cutting on a Panel Saw

A guillotine plan is only as good as the machine it is cut on, so six controls under Settings → More describe the saw rather than the material — Trim per side in Blade & trim, the other five in Cut plan & machine:

Control What it does Modes Plan
Trim per side Dresses each edge of the board separately — left, right, top, bottom 2D only (1D and Wood get the start / end trim pair instead) Every plan, guests included
First cut direction Forces the first cut on every sheet to run horizontally or vertically 2D only Every plan
Calibration cut Skims a strip off one edge first, so you can measure it and correct the fence before cutting a part Every mode — only the four-side picker is 2D, since a bar has one head Every signed-in plan, Free included
Max. cutting stages Caps how many times the material is turned — panel saws are specified as 2-, 3- or 4-stage 2D only Workshop
Minimise rotation Prefers layouts that turn fewer parts, but only when that costs no extra sheet 2D only Workshop
Cut order Lists the sawing plan per fence setting (panel saw, the default) or per pass (circular or track saw). Redraws the plan only: no new run 2D only Every plan

Each one is documented in full on the Settings page. The finished order of cuts is then available as the Cutting Sequence, which steps through the plan one fence setting at a time — in every mode, not only here.

CutOptim does not produce machine-specific files — there is no .opt or G-code export, and DXF carries geometry only. What it produces is the plan, the numbers behind it and an order you can follow at the saw.


Running the Optimization

Once stock and parts are entered, click Run optimizer at the bottom of the left sidebar, or press Ctrl+Enter. The optimization typically completes in under 2 seconds for jobs with fewer than 500 pieces. Larger jobs take longer, and the page stays unresponsive until the calculation finishes.

What CutOptim checks before running: exactly one thing — that the active mode has at least one stock row and at least one part row. If either table is empty, a short message appears and nothing runs, so an empty run never costs you an optimization from your quota.

There is no other pre-flight validation, and nothing blocks the Run button. In particular, a piece too large for any of your stock will not stop the run: the optimizer simply cannot place it, and tells you afterwards — in limited-stock mode the result summary names every piece that did not fit. Quantity fields accept whole numbers from 1 upward and fall back to 1 if you clear them. (The plan allowance is separate from this check: when a Pro account has used its monthly runs with grain-matched sets and holds no credit, a run with sets stops and offers to run without them.)


Reading Your Results

After a successful run, the canvas shows the layout and the results panel updates:

Results panel showing yield 92.4%, waste 7.6%, 4 sheets used, 3 offcuts
Results summary after a 2D panel optimization.

The sheet diagrams

Every sheet used is drawn one after another down the results panel, each under its own header showing the sheet number, the material name, the size, how many pieces it carries and how much of it is used. Placed pieces are coloured rectangles carrying their label and dimensions; a grain-matched set is outlined with a dashed frame and a SET A badge. The leftover material is listed under the diagrams rather than drawn on them, split into reusable offcuts and waste by your minimum offcut threshold.

The sawing plan on the results page

The results page adds two views of the order the cuts should be made in:

  • The Cutting Sequence bar sits directly above the sheet diagrams it steps through — after the legend, before the first board — so the control and the boards it drives are in the same place on screen. It carries ◀ Previous, the step readout, ▶ Next, ⏮ Restart and ▶ Play.
  • Further down, below the cut list, the whole plan is listed as a Cutting Sequence table: one row per fence setting, with the columns Order, Sheet, Cut direction (horizontal or vertical, plus · Calibration on the calibration step and · N passes where one setting makes cuts across N strips), Position and Result (what the step frees; for a multi-strip step per pass, such as 3a → 27 · 3b → 28). Steps are numbered 1 to n on each sheet, not across the whole job. Clicking a row jumps the player to that step, and the active row is highlighted as you step through. If you saw with a circular or track saw, set Cut order to Per pass under Settings → More → Cut plan & machine and every cut becomes its own row.

See Cutting Sequence for the full guide, including how the plan looks on a bar in 1D and Wood.

Cuts, saw passes and cut length

Alongside yield, waste, sheets and pieces, a 2D result reports what the plan costs the saw. These stats are shown on every plan, guests included:

FeatureTypeDescription
CutsstatFence settings. Collinear cuts at the same coordinate made in the same machine pass count once, because that is one setup on the saw. This is the operator-facing number, and it is also the number of steps in the Cutting Sequence.
saw passessub-lineShown under the Cuts figure when the two differ: every strip crossed separately. This is the number Cost per cut is charged on.
Cut lengthstatThe total distance sawn — metres in mm mode, feet in inch mode.
Edge banding lengthstatTotal running length of edge banding the parts list needs, shown only when at least one part has edges marked. Top and bottom edges run along the part's width, left and right along its height. It is exact geometry with no waste allowance — add your own margin for overlap and trimming — and it is broken down by banding type (a line per type plus an order total). Also printed in the PDF material requirement section and on the Materials tab of the Excel export, with a dedicated 'Edge banding by piece' page in the PDF and a dedicated Edge Banding tab in the Excel export — but never on the layout-diagram piece labels.

The two counts are not alternatives and neither is wrong; they answer different questions. How many times do I set the fence? is the first. How many times does the blade go through material? is the second. On the standard 40-part demo job (2440×1220, kerf 3), the plan takes 30 cuts, 52 saw passes and 32.88 m of sawing across 2 sheets at 83.3% yield.

Cut length is the same figure under either counting convention, so it needs no qualifier. The search already prefers the shortest-cut plan among the layouts that use the same boards, which is why the demo comes out at 30 cuts by default. If your saw limits how many times the material can be turned, cap the Max. cutting stages (Workshop) — CutOptim keeps the plan within that limit where the job allows and warns you where it cannot, rather than handing back a plan the saw can’t execute (the demo job itself needs 3 stages).

Yield and Waste

Metric Formula Target
Yield % (Total demand area) / (Total used sheet area) × 100 > 88%
Waste % (Unusable scrap area) / (Total used sheet area) × 100 < 10%
Offcut % (Saved offcut area) / (Total used sheet area) × 100 Variable

Improving a Low-Yield Result

If yield is below 80%, try these approaches in order:

  1. Check kerf width — An incorrect (too large) kerf wastes space on every cut
  2. Allow rotation — Leave the Grain icon on the turn arrow for pieces where grain direction does not matter
  3. Batch more pieces — Add remaining pieces from future jobs to fill the sheets now
  4. Add smaller stock — If you have offcuts from previous jobs, move them into the stock table from the Offcut Inventory (↑ or All to stock): they are starred automatically and fill first

Stock Priority (★)

When Sheet supply is set to Limited, each row in the Stock table has a star (★) icon on the left — like the quantity, the ★ column appears only in Limited. Starring a stock row tells the optimizer to use that sheet first — before drawing from unstarred stock.

In Unlimited the ★ column is hidden and the star is not used: the optimizer buys as many sheets as the plan needs, so there is no stock to use up first. Your stars stay on their rows and count again when you switch back to Limited. Each row keeps its own star — the 2D, 1D and Wood stock tables are independent.

Off-cut rows. A piece you move into the Stock table from the Offcut Inventory (↑ or All to stock) becomes an off-cut row: it is starred automatically and is used first, never more than its quantity — in Limited and in Unlimited alike. In Unlimited it is filled before any new sheet is bought and is never repeated; a stock table made only of off-cut rows works like Limited, so no extra sheet is invented. The star’s tooltip on an off-cut row says so. An offcut you type in by hand is an ordinary row: to have it used first, switch to Limited and star it.

When to use it:

  • You have a partial sheet left over from a previous job and want to use it up before opening new stock
  • You have expensive or hard-to-source sheets that you want to prioritize
  • You want to clear old stock before it warps or deteriorates

How to use:

  1. Set Sheet supply to Limited — the ★ column appears
  2. Click the ★ icon on any stock row — it turns yellow/gold
  3. Run the optimization — the starred sheet is used first
  4. Click again to remove the priority

Move your offcuts into the job from the Offcut Inventory (↑ or All to stock) instead of typing them in. They arrive starred, and CutOptim consumes them first, only opening new full sheets when the offcuts are exhausted — in either supply mode. With Use off-cuts automatically on, CutOptim reuses saved offcuts without any of these steps, in both modes.


Edge Banding

Edge banding is recorded per piece in the EB column of the Parts table: which sides of a finished panel are banded, and with which banding type. From that, CutOptim totals the linear metres of banding the job consumes, broken down by type.

Showing the EB column. The EB column is hidden until you switch edge banding on. In 2D → Panel mode, open the Settings panel, click More, and turn on the Edge Banding toggle — the EB column then appears in the Parts table and stays visible even after you collapse More again. Edge banding is included on every signed-in plan, Free included; a guest is prompted to create a free account. Edge banding applies only to 2D panels, so there is no EB column in the Nesting sub-tab, in 1D Linear, or in Wood mode.

Edge banding is a metadata/reference feature — it does not affect the optimization algorithm. It records which sides are banded and with which type, then reports the running metres so you can order the right amount of each banding.

Marking edge banding:

  1. Click the button in the EB column of any demand piece row.
  2. The edge banding dialog opens with an All around master control at the top, then the four sides: Top, Right, Bottom, Left.
  3. To band the whole piece at once — a door, say, that is banded on every edge — pick a type in All around and all four sides get it in one action (the master mirrors the sides, so it also shows the shared type when they already match). Otherwise set each side individually below.
  4. For each side, pick from the dropdown: None (not banded), No type (banded, no specific type), or one of your saved banding types.
  5. A visual preview shows the banded sides as a yellow stripe around the piece outline.
  6. Click OK — the EB column shows an abbreviation of the banded sides (T / R / B / L).

EB column abbreviations:

Display Meaning
— No edge banding
T Top banded
TR Top + Right banded
TRBL All four sides banded
BL Bottom + Left banded

Banding types (library)

Click Manage types in the edge banding dialog to open your banding-type library. Each type carries a name (the reference you order by, e.g. ABS oak 22×1), a thickness, a price per metre and a colour — picked from a colour swatch, and used to draw that type’s edges in the per-piece banding diagram. Your types are stored to your account and sync across devices; assign them per edge from the dropdowns.

How the metres are reported

CutOptim measures the banded length exactly — top and bottom edges run the piece width, left and right run the piece height, multiplied by the quantity — with no waste margin (add your own overage at the bench). The per-type total appears in three places:

  • The optimization summary — one figure per banding type.
  • The PDF, in the material-requirement section, as a line per type plus an order total.
  • The Excel export, on the Materials tab, as a row per type plus a total.

Beyond the totals, the banding is shown per piece in two places: the PDF has a dedicated Edge banding by piece page — each banded piece drawn with every edge in its banding-type colour and its length labelled, followed by a per-piece table of the material and length of each edge — and the Excel export has a dedicated Edge Banding tab with the same per-piece table plus a banding-layout picture.

Edge banding is still not drawn on the piece labels inside the layout diagram (the sheet plan) — those show dimensions only. It is printed on the part stickers: Share & Print → Print labels gives every banded piece an outline with the banded edges drawn thick and a line naming the sides and the banding type (since 2026-10-12). Beyond that, banding appears as the per-type totals above, plus the dedicated Edge banding by piece page in the PDF and the dedicated Edge Banding tab in the Excel export.

CSV

The Parts CSV has an EB column. Two forms are accepted:

  • TRBL — those sides banded, no specific type (any order, any case).
  • T:ABS oak 22;L:ABS white 22 — each named side takes that library type by name. Separate pairs with ; (or quote the cell if you use commas). A name that matches no type still bands the edge (as No type), so nothing is lost.

For cabinet carcasses, a common configuration is BL (Bottom + Left) or TR (Top + Right) depending on whether the panel is a side, top, or shelf. Assigning the type once at the demand stage means the metre totals — and your order — are correct without re-checking at the bench.

FAQ

How does CutOptim cut the sheet — guillotine or nested?
By default the 2D Panel optimizer is guillotine: every cut runs edge-to-edge across the remaining material, exactly as a table saw, panel saw or beam saw cuts. For a CNC router, switch on CNC mode (free placement) in Settings: the parts are then placed freely on the sheet, which often fits more of them, but the plan cannot be cut on a panel saw. For irregular polygon shapes use the separate Nesting mode.
Can I mix different sheet sizes in the same optimization?
Yes. Add as many stock sheet rows as you like, each with a different size, and CutOptim uses the most efficient combination to fulfil your demand. If you also need to keep different materials apart — say 18 mm from 12 mm, or oak from MDF — turn on Material-specific mode and tag each row; the optimizer then packs each material only onto stock of the same material, in one run.
How do I tell which sheet size is best to buy?
Press the ⚖ Which sheet? button in the Stock panel header. It runs your cut list on each entered sheet size separately — no mixing, from unlimited stock — and ranks the sizes by how many sheets and how much material each would need, plus estimated cost when every size is priced. That is a different question from a normal run, which may combine sizes. See Which sheet? — comparing sheet sizes.
Can demand pieces be rotated?
By default, CutOptim can rotate pieces 90 degrees to improve packing — the Grain icon at the end of the row shows a turn arrow. To fix a piece, click that icon in the Parts (2D) table until its lines run along the side the grain must follow: the piece is then turned only so its grain follows the sheet's. Available on every plan, guests included.
My sheet shows a large offcut in the corner. Can I split it into two pieces?
Offcuts are not split automatically. The offcut is the remaining material after all demand pieces are placed. You can save it to the Offcut Inventory and use it as stock in a future job.
How many demand pieces can I add on the free plan?
The free plan allows 3 optimizations per month, with any number of demand pieces in each one. Upgrade to Pro for unlimited runs.
Does CutOptim account for edge banding or trimming allowance?
Edge banding can be marked per side on each demand piece, and each side can carry a banding type. CutOptim reports the linear metres per type in the results summary, the PDF material-requirement section and the Excel Materials tab, and shows the banding per piece on a dedicated 'Edge banding by piece' page in the PDF and in a dedicated Edge Banding tab in the Excel export; it does not change dimensions and is not drawn on the layout-diagram piece labels, but the printed part labels (Share & Print → Print labels) mark the banded edges and name the banding type. To dress the edges of the sheet itself, use Trim per side under Settings → More → Blade & trim: separate left, right, top and bottom values, available on every plan. To cut every part larger and trim it to size later, use Oversize per side in the same category — the parts table keeps the finished size.
How many cuts does the plan need, and how far does the saw travel?
Both are shown in the results header after a 2D run, on every plan. The Cuts stat counts fence settings — collinear cuts made in the same pass count once — and the sub-line under it counts saw passes, every strip crossed separately. Cut length is the total distance sawn, in metres in mm mode and in feet in inch mode.
What does the star (★) next to a stock row do?
Starring a stock row marks it as priority material. The optimizer uses starred sheets first before drawing from unstarred stock. This is useful for using up offcuts or leftover sheets from previous jobs before opening new stock. The ★ column appears only when Sheet supply is Limited; in Unlimited it is hidden and the star is not used, because the optimizer buys as many sheets as the plan needs. Off-cut rows moved in from the Offcut Inventory are starred automatically and are used first, never more than their quantity — in Unlimited too.
Can I mark which sides of a panel need edge banding?
Yes. The EB column is hidden until you switch edge banding on: in 2D Panel mode, open the Settings panel, click More, and turn on the Edge Banding toggle — the EB column then appears in the Parts table. It is included on every signed-in plan, Free included (a guest is prompted to create a free account). Each EB cell lets you select which sides (Top, Right, Bottom, Left) are banded and with which type. CutOptim then totals the linear metres per banding type in the results summary, the PDF material-requirement section and the Excel Materials tab, and shows the banding per piece on a dedicated 'Edge banding by piece' page in the PDF and in a dedicated Edge Banding tab in the Excel export. It does not affect the optimization layout, and it is not drawn on the layout-diagram piece labels, but the printed part labels (Share & Print → Print labels) mark the banded edges and name the banding type.

Last updated: October 13, 2026