{"slug": "how-to-nest-laser-cut-parts-for-free-in-your-browser", "title": "How to nest laser-cut parts for free in your browser", "summary": "A developer demonstrated Nestbolt, a free MIT-licensed nesting tool that runs its layout engine locally in the browser via WebAssembly, arranging 91 laser-cut parts across a 600 x 400 mm sheet at 64.6% utilisation in a 30-second search. The tool imports SVG, DXF and LightBurn files, validates layouts with Clipper2 so invalid results are never returned, and exports sheets as SVG or DXF with curves preserved rather than re-polygonised. The project states that files are never uploaded and that the last sheet is compressed toward one end to leave a usable offcut.", "body_md": "*Written with AI help (Claude), checked against the project's docs. Disclosure: this account belongs to the small project that makes Nestbolt.*\n\nNesting means arranging the parts of a drawing on your sheet before you cut, so they use less material. [Nestbolt](https://github.com/skulitom/Nestbolt) is a free, MIT-licensed nesting tool for fixed sheets (laser, CNC, plasma, waterjet, fabric). Its [browser app](https://skulitom.github.io/Nestbolt/) runs the nesting engine on your own computer in WebAssembly, and the page says it plainly: \"Everything runs in this browser; files are never uploaded.\"\n\nBelow is one real run, step by step, with the numbers the app showed. I ran it on 20 October 2026 in desktop Chrome on the hosted app.\n\nGo to [skulitom.github.io/Nestbolt](https://skulitom.github.io/Nestbolt/). There is nothing to install and no account. If you just want to see how it behaves, it has five one-click examples: finger-jointed boxes, letters inside letters, a mechanical kit, a sewing pattern and interlocking gears.\n\nClick **Import SVG, DXF or LightBurn** (or drop files on it). The importer treats each closed outline as a part and any outline inside it as a hole, so small parts can later sit inside larger ones.\n\nMy file was a 420 x 70 mm SVG with six outlines: a cat ornament, a star, a coaster, a gear, a heart keyring and a name tag. The app listed them as six parts with their areas (26.1, 8.4, 17.8, 14.1, 14.1 and 16.9 cm²) and showed what its cleanup did:\n\n```\nlaser-parts.svg: cleanup removed 0 exact duplicate segment(s), 1 zero-length segment(s); merged 0 overlapping collinear segment(s)\n```\n\nGaps up to 0.005 mm are joined automatically; larger repairs are listed with their positions. The import panel also shows which layers and colours it picked as cut lines, which is worth a look if your drawing has engraving or guide layers.\n\nEach part gets a **Qty** box, a **Rotation** choice and a **Mirror** tick box. Rotation options are 0/90/180/270° (the default), 0/180° (grain), Fixed 0°, Every 15° and Free. Use 0/180° when the grain or pattern direction matters.\n\nI typed 12 cats, 20 stars, 8 coasters, 16 gears, 20 hearts and 15 tags: 91 parts, default rotations, no mirroring.\n\nThe default sheet is 600 x 400 mm with a 5 mm margin, and the preset list has Diode laser 300×200, CO2 bed 600×400, Plywood 1220×2440, two sheet-metal sizes and a 1500 mm fabric roll. You can add more sheet sizes, a count limit per size, a remnant outline (an odd-shaped leftover piece) and defects to avoid.\n\nUnder **Settings**: part spacing and edge spacing (1 mm each by default), the goal (** Place every part**, **Fill the sheets (most area)** or **Fill by priority**) and the time budget (** Time**, 30 s by default). I left all of these at their defaults.\n\nThe best layout found so far is drawn while the search runs. After the 30 seconds, my result read:\n\n| Sheets | Utilisation | Placed | Check | \n|---|---|---|---|\n| 1 | 64.6% | 91/91 | valid | \n\nAll 91 parts fit on one sheet, and the unused material was left as one clear strip, labelled **offcut 600 × 49 mm**, along the top. The project's README says the last sheet is compressed towards one end so that the offcut stays usable.\n\n**Check: valid** comes from an independent validator (Clipper2) that tests overlap, spacing, containment, rotations and quantities. According to the README, invalid layouts are never returned.\n\nThe search is time-based, so results vary a little between runs: the same file and quantities gave 65.0% on 17 October, on an older build of the app.\n\nEach sheet has **SVG** and **DXF** buttons, and **Download all sheets (ZIP)** gets them all at once. My `sheet-0.svg` was 600 mm x 400 mm with all 91 parts as paths in one `CUT` group. The name tags' rounded corners were still SVG arcs (`A 6 6 ...`), not chains of short lines: the README says export is \"transformed from the original curves rather than re-polygonised\".\n\nOpen the file in your laser or CAM software and check it there before cutting. **Save** keeps the project in the browser, and **Project ZIP** saves it as a file.\n\n`main` branch. The stable release (v0.1.0) is a `.lbrn2` and `.lbrn`) and lead-in allowances are preview features.\nThe same engine also comes as command-line tools for Windows, Linux and macOS (Apple silicon), and as an MCP server, so an AI agent can import, nest, validate and export a job ([agent interface](https://github.com/skulitom/Nestbolt/blob/main/docs/AGENT_INTERFACE.md)). The engine builds on [jagua-rs](https://github.com/JeroenGar/jagua-rs) and [sparrow](https://github.com/JeroenGar/sparrow) by Jeroen Gardeyn and collaborators.\n\nMore guides on the project site: [free nesting for laser cutting](https://skulitom.github.io/Nestbolt/free-nesting-software-laser-cutting/), [nesting SVG and DXF in the browser](https://skulitom.github.io/Nestbolt/nest-svg-dxf-in-browser/), [the five examples](https://skulitom.github.io/Nestbolt/nesting-examples/) and [the benchmark results](https://skulitom.github.io/Nestbolt/results/).", "url": "https://wpnews.pro/news/how-to-nest-laser-cut-parts-for-free-in-your-browser", "canonical_source": "https://dev.to/rivskiy_skulitom_af400ad1/how-to-nest-laser-cut-parts-for-free-in-your-browser-1epc", "published_at": "2026-10-20 13:13:59+00:00", "updated_at": "2026-10-20 13:19:51.176337+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Nestbolt", "Clipper2", "LightBurn", "GitHub", "Claude"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/how-to-nest-laser-cut-parts-for-free-in-your-browser", "markdown": "https://wpnews.pro/news/how-to-nest-laser-cut-parts-for-free-in-your-browser.md", "text": "https://wpnews.pro/news/how-to-nest-laser-cut-parts-for-free-in-your-browser.txt", "jsonld": "https://wpnews.pro/news/how-to-nest-laser-cut-parts-for-free-in-your-browser.jsonld"}}