Model splitter
Split a model that is too big for your printer into pieces that fit — suggested cuts (fewest pieces, small seams, no slivers, little support, cuts at narrow waists) or your own planes placed with a gizmo — with pins, keys, dovetails, a lip, magnets or bolts on the cut faces, every piece laid flat and numbered, and STL / 3MF plates plus an assembly README.
Added · updated 28 October 2026
Works with
- Mesh repair CNC and 3D printinghands a model to be repaired there, and takes the repaired mesh back
- STEP and IGES viewer CNC and 3D printingtakes parts of a STEP or IGES assembly from its Open in model splitter
How to use it
Load a model that will not fit on your printer. The tool suggests where to cut it, or you place the cutting planes yourself — usually both: take the suggestion, then move or tilt a plane. It cuts the model with a real solid-modelling engine, adds joinery on the cut faces, lays every piece flat for printing and writes the files. Everything runs in your browser; your model is never uploaded.
How to use it
-
Load a model. Drop a file on the view or use Open file: STL, 3MF, OBJ, STEP or IGES (the same readers as the mold maker). STL and OBJ carry no units — set millimetres, inches or centimetres on the Model tab. Or pick a sample (a rocket, a vase, a dumbbell, a diagonal beam, a picture frame, an arch). The mesh is checked and repaired where that is safe; a file that is not a closed solid (holes, open or non-manifold edges, flipped faces, debris, overlapping bodies, or one the strict reader rejects) is repaired automatically — see Automatic repair.
-
Pick your printer in the toolbar: Bambu Lab X1C / P1S / A1 / A1 mini, Prusa MK4 / CORE One / XL / MINI+, Creality Ender-3 and Ender-3 V3, Voron 2.4 (350), Elegoo and Anycubic resin printers, or a custom size. The margin is kept clear round the bed edge and at the top. The box in the view is the usable volume (green when the whole model fits, red when it does not); turn the model on the Model tab if it should stand another way.
-
Suggested splits (Split tab, or ✦ in the toolbar) — see below. Each suggestion shows its pieces, its cuts and a score breakdown; the alternatives and a plain grid (for comparison) are listed with it. Use puts its planes in the editor.
-
Your own planes. Add an X, Y or Z plane; drag a plane in the view to move it along its normal; Shift-drag (or turn on ↻ Rotate) to tilt it about the point you grabbed; type its offset and its azimuth / elevation; snap it back to an axis; or Align to face and click a face of the model — the plane turns parallel to that face through the point you clicked. Snap rounds to 1 mm and 15°. Delete with ✕. Suggested and manual planes mix freely: a suggested cut that only splits one piece (shown as "in +1") keeps that scope until you turn it. The pieces update as you drag, and each gets a fits / doesn’t-fit badge with its print size.
-
Cross-section chart. Under the planes, the area of the model’s cross-section along the selected plane’s normal, with its waists marked. Click the chart to move the plane there (it snaps to a waist).
-
Joinery tab — on every cut face, placed automatically clear of the edges, of other cuts and of thin walls, and deep enough on both sides:
-
alignment pins: holes for 1.75 mm filament, 3 or 4 mm steel pin, 6 / 8 / 10 mm wooden dowels, or printed pins (Ø and length);
-
square printed pins, and printed connector keys (a rectangular tenon in pockets on both sides);
-
a dovetail rail along the face’s long direction (slide the pieces together);
-
a tongue-and-groove lip round the face, set in from the edge;
-
magnet pockets for common neodymium discs (3×2 to 15×3 mm);
-
M3 / M4 / M5 socket-head bolts with a counterbore for the head and a hex nut trap, run in from the surface on each side. Clearance is per side; a glue gap pulls each cut face back half its width. Each piece’s number is engraved on one of its cut faces (0.6 mm deep), so you can tell them apart.
-
-
Pieces view shows the cut pieces with an Explode slider; Print plates shows each piece laid flat on its best face and packed on as many plates as it takes.
-
Export: everything as a ZIP (each piece as an STL in print orientation, one 3MF per plate, all pieces in one 3MF, the assembled pieces as a 3MF, printed pins or keys, a README with the pieces, the hardware to buy and the assembly order, and the project), or any of those alone, or a faceted STEP. Save project keeps the model, its orientation, the planes and the settings.
⛶ Full screen (or F) gives the 3-D view the whole screen — the browser’s full screen where it is
allowed, otherwise a full-window layer (iPhone); ◫ Panels hides the side panel. Escape leaves.
How the suggestion works
-
Fit test. A piece fits when, stood on some face and turned on the bed, its extent is inside the usable volume. The search uses the piece’s extents along the world axes and its principal axes, with the exact condition for a rectangle to fit inside another at an angle (Carver; Wetzel 2000), so a long bar may lie diagonally. The final check projects the piece onto the bed for each candidate "up" (its cut faces first), takes the convex hull and turns it through every hull-edge angle and every 2°.
-
Search. A beam search over cuts (a binary space partition, the same idea as the mold maker’s parting): it repeatedly cuts the piece that needs the most pieces by its extents, trying planes across the world axes and the model’s principal axes, at even spacings, at the longest length that just fits, and at the waists — local minima of the cross-section-area profile along that axis that are at least 12 % below the sections either side. Each candidate is scored by how many pieces its halves still need, its seam area, slivers and weak (thin) joints. The best few partitions where every piece fits are kept.
-
Score (lower is better; shown broken down): 100 per piece, 400 per piece that still does not fit, seam area (relative to the model’s size), 60 per sliver (a piece thinner than the thinnest piece setting, or under 15 % of an average piece), 20 per weak joint (face thinner than about two pin holes with their walls), support area (faces steeper than the overhang angle in the chosen print orientation, relative to the model’s surface), and a small bonus for each cut at a waist.
-
Print orientation. Each piece is laid on the face (cut faces first) that fits and needs the least support area at the overhang angle, preferring a large flat face on the bed.
Cross-section areas come from the section of the mesh by the plane, chained edge by edge and oriented round the material, so holes subtract. Piece volumes come from the divergence theorem over the clipped surface and the cut faces.
Automatic repair
When a loaded file is not a closed solid, the splitter runs the staged repair from mesh repair (weld, clean, remove debris, orient, split non-manifold edges, stitch slits and fill holes, union overlapping shells), stopping as soon as the mesh is a valid solid, and shows a dismissible notice such as Closed 3 holes, welded 412 vertices, removed 2 tiny shells; max deviation 0.02 mm. View details shows the step-by-step report; Open in Mesh repair ↗ takes the original to the repair tool to see the problems and change the settings (and Open in model splitter there brings the repaired model back); Use original anyway appears when the file could also load the old way (holes capped with fans). A voxel remesh, which loses detail, is only done if you agree. Repair broken meshes automatically on the Model tab turns it off.
Large models. Above 400,000 triangles the splitter offers to simplify the model to about 300,000 (edges collapsed within a small tolerance with manifold-3d; the largest deviation is shown) before it searches for cuts — or to keep all triangles. Printed pieces rarely need more.
Limits
-
Cuts are planes. A cut that leaves a piece in two (a U cut across its arms) gives two parts with the same number (2a, 2b).
-
The suggestion is a heuristic search, not a proof of the fewest pieces; it is checked against the plain grid, and for long or diagonal parts it usually needs far fewer.
-
Joinery is placed where the face and the material around it allow; on very thin faces there may be none (the Joinery tab says which). A dovetail rail runs straight across the face, so a strongly concave face may need it moved or another kind. A lip or rail stands proud of its face, so the search leaves room for it, and that piece is not printed on that face.
-
Build volumes are the makers' published figures (October 2026); check yours, and allow for brims and purge towers with the margin. Clearances are starting points — see the print tolerance tool and print a test.
-
Very large meshes (a million triangles) take a while in the browser.
Related: mold maker (same mesh engine), STL viewer, print tolerance, OpenSCAD, lithophane and sign maker, box maker, mesh repair (fix broken STL and 3MF files).
Engines: manifold-3d 3.5.4 (Apache-2.0) for the booleans, occt-import-js 0.0.23 (LGPL-2.1, Open CASCADE Technology) for STEP and IGES, three.js 0.147 for the view — loaded from jsDelivr the first time they are needed.
Linking to an example
Share link copies a URL with your settings and planes — never your model; a link with planes opens
on the sample it names. Written by hand: /tools/model-splitter/?example=vase&printer=prusa-mk4&join=magnets.
| Parameter | Meaning |
|---|---|
|
Sample: |
|
|
|
Custom build volume, mm |
|
Margin mm; overhang angle °; thinnest piece mm |
|
Cutting planes: |
|
|
|
Pin stock |
|
Magnet |
|
Key, dovetail and lip sizes, mm |
|
Clearance per side, glue gap, edge distance (mm); connectors per joint (0 = auto) |
|
Engrave piece numbers; their height mm |
|
|
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.