How the STL repair works
- Open the file. STL (binary or ASCII), OBJ or 3MF. Large files are read in chunks in a background thread, with a progress bar and a Cancel button, so the page stays responsive even with millions of triangles. You see the triangle count, the number of separate parts and how much memory the model takes.
- Read the report. Every check is green, amber or red: watertight or not, open edges and holes, non-manifold edges, flipped normals, inside-out parts, degenerate and duplicate triangles, separate parts, size and volume. Problems are coloured on the model.
- Set units and scale. The unit is guessed from the size of the model; pick 1:50 to 1:500, any custom scale, or fit the longest side to a size. Every tolerance is in printed millimetres.
- Repair and merge. Corners closer than the weld tolerance are joined, zero-area, duplicate and internal faces removed, faces turned to agree with their neighbours, inside-out parts turned outwards and holes closed. With “Merge overlapping parts” on, every closed part becomes a solid in the manifold geometry engine and they are unioned in batches into one watertight solid.
- Simplify, check, download. Optionally reduce the triangle count, see thin walls in red, then download a binary STL named after the scale and size – or every loose part as its own STL in a ZIP.
What it fixes
| Problem | What you see in the slicer | The fix |
|---|---|---|
| Holes / open edges | Missing walls, “open edges” warnings, layers with gaps | Each hole is closed with a flat patch of triangles that follows its outline |
| Hundreds of overlapping parts | Slow slicing, walls inside walls, odd infill where parts overlap | Closed parts are unioned into one solid; internal faces disappear |
| Flipped or inconsistent normals | Missing or extra solid areas | Faces are re-oriented so neighbours agree, then each part is turned outwards |
| Inside-out parts | A part that slices as empty, or cuts a hole in its neighbour | Turned the right way out – real internal cavities are kept |
| Coincident and duplicate faces | Non-manifold edge warnings where two boxes touch | Doubles removed; faces shared by two touching solids removed |
| Wrong units | A building 1000× too big, a part 25.4× too small | Units detected; scaled to printed millimetres at 1:50–1:500 or any scale |
| Too many triangles | A 400 MB file that slices for minutes | Simplified to a percentage or count, keeping sharp edges |
| Walls too thin to print | Missing mullions and railings | Reported in red, with the thinnest wall found |
| Too big for the bed | “Object outside the plate” – or one printer busy for days | Split into pinned, labelled pieces that fit your printers, shared out so they finish together |
Split big models across several printers
A print shop with a few mid-size printers can still print a large model – a building at 1:50, a sign, a cosplay prop – in one go: split it into pieces that fit, print them at the same time on every machine, and glue them up. Turn on Split for printing:
- List your printers. Pick presets (Bambu A1 mini, A1 / P1S / X1C, Ender 3, K1, K1 Max, Prusa MK4, MINI, CORE One, XL …) or type the bed size, and say how many you have. The clearance (5 mm by default) is kept free around every piece.
- Check the cuts. The cut planes are drawn on the model. Automatic cuts use the fewest pieces that keep every printer busy and move to thinner sections; or set the number of cuts per axis and drag them.
- Pick a joint. Pin holes with printed pins, 1.75 mm filament pins, peg and socket, or magnet pockets – with your tolerance. Labels and matching marks are added on the bottom and cut faces.
- Look it over. Toggle Exploded to see every piece with its ID, or pick one piece to look at its joints up close. The table shows which printer prints what, and how long each printer runs.
- Download the ZIP. Every piece as an STL named like
A1_Ender-3-2.stl, the pins, the parts list and a printable assembly sheet.
Large architectural STL files
Exports from SketchUp, Revit, ArchiCAD and Rhino are rarely printable as they are: they are built from separate objects that overlap, faces are often flipped or missing, and coplanar faces sit on top of each other where two boxes meet. A building at 1:100 also has walls well under a millimetre thick. This tool is made for that: it streams binary STL files of hundreds of megabytes, merges the overlapping objects into one solid, and shows which walls will be too thin at the chosen scale. Practical limits depend on your computer’s memory – see the FAQ.
Private by design
Many online STL fixers upload your model to a server. This one doesn’t: the repair runs in JavaScript and WebAssembly inside your browser, so client buildings, unreleased designs and paid models never leave your computer. There is no account, and no copy is kept anywhere.
Alternatives
Microsoft’s free 3D Builder app has been retired and removed from the Microsoft Store. Your slicer’s built-in repair (Bambu Studio, OrcaSlicer, PrusaSlicer) handles small problems when it imports a file, but it doesn’t merge overlapping parts or scale buildings to an architectural scale. For heavy mesh surgery – re-sculpting scans, thickening surfaces – use Blender’s free 3D-Print Toolbox add-on or Meshmixer.
Fixed the model? Find out what it will cost to print with the print cost calculator.
Frequently asked questions
Is the STL repair tool free?
Yes. Repairing, merging, scaling, simplifying and downloading are free, with no sign-up, no watermark and no limit on how many files you fix. The only limits are your computer’s memory and the file size (see below).
Is my file uploaded anywhere?
No. Your file is read and repaired by your own browser, on your own device, in a background thread. Nothing is sent to a server – the tool keeps working if you go offline after the page has loaded. We only count that a download happened, never the file or its name.
How big a file can it handle?
Binary STL files up to 600 MB (about 12 million triangles), ASCII STL up to 600 MB, and OBJ or 3MF up to 150 MB. The file is read in chunks, so it isn’t held in memory twice. As a guide, on a desktop computer: a 100 MB STL (2 million triangles) opens in about 1–2 seconds and is repaired, merged and thickness-checked in about 8 seconds; a 400 MB STL (8 million triangles) is repaired and checked in about 20 seconds using over 1 GB of memory. The geometry engine that merges parts and verifies the result handles up to 4 million triangles – above that, turn on Simplify and the model is reduced first, then merged (8 million → 1 million triangles takes over a minute). Phones and tablets have far less memory: expect a few hundred thousand to about a million triangles there. If the browser runs out of memory you get a message, not a crash – export with less detail, or in parts.
Can it fix architectural models from SketchUp, Revit or Rhino?
That is what the merge option is for. Architectural exports are usually hundreds of separate boxes and surfaces – walls, slabs, columns, mullions – that overlap each other, with some faces flipped, some missing and some doubled. The tool welds and closes every part it can, turns inside-out parts the right way, removes coincident and internal faces, then unions all the closed parts into one solid with the manifold geometry engine, so the slicer sees one clean shell instead of a pile of overlapping ones. Surfaces with no thickness at all (a glass pane drawn as a single face, terrain as an open sheet) can’t become solid: they are listed, and you choose whether to keep them as separate surfaces or drop them.
What scale should I print a building at?
Pick the unit it was modelled in (the tool guesses metres, centimetres, millimetres or inches from the size) and a scale: 1:100 is typical for a single building on a normal printer bed, 1:200 or 1:500 for a block or a site, 1:50 for details. “Fit the longest side” scales it to a size you type. The final printed size is always shown in millimetres, and the filename says which scale you chose.
Why does it say my walls are too thin?
At 1:100 a 120 mm brick wall becomes 1.2 mm, a 50 mm mullion half a millimetre and a glass balustrade almost nothing. The thickness check casts rays through a sample of the faces and marks in red every place that is thinner than the limit (1.2 mm by default – about three lines of a 0.4 mm nozzle). It only reports: thicken those parts in the CAD model, print at a bigger scale, or accept that they won’t print.
What does Simplify do?
It reduces the number of triangles (to a percentage or an exact count) by collapsing edges where that changes the shape least, and keeps sharp edges and corners. Dense meshes – terrain, scanned facades, smooth curves exported finely – often have far more triangles than a printer can show; halving them makes a smaller file that slices faster. Very strong reductions round off small details, so compare Before / After.
Can it hollow a model?
Yes, as an experimental option: the solid is turned into a fine grid, the inside is offset by the wall thickness you choose and carved out, and the result is checked by the geometry engine. It needs a merged, closed solid, uses a grid of at most 150 cells across, so walls come out within about one cell of the chosen thickness, and it does not cut drain holes – add those yourself for resin printing. For FDM printing, your slicer’s infill setting is usually the better way to save material.
My SketchUp / Revit building falls apart when I repair it. Why?
Architectural exports draw many walls, floors and windows as single faces with no thickness. A repair can close holes, but a face with no thickness can’t become solid – so “Drop open parts” leaves a skeleton. Tick “Thicken surfaces that have no thickness”: every flat surface becomes a slab of the wall thickness you set (1.2 mm prints well with a 0.4 mm nozzle), and the building stays whole. Leave Merge off for big models: the slabs overlap and every slicer fills overlapping parts; merging them into one solid is possible but slow.
What can’t it fix?
It doesn’t rebuild missing detail – a filled hole is closed with a flat patch – and on its own it can’t give thickness to surfaces that have none – “Thicken surfaces” turns those into slabs of the wall thickness you choose. Badly torn 3D scans, or parts that are open on many sides, may not close; the report says exactly what is left. Self-intersections between closed parts are resolved by the merge. A part that crosses itself is found and shown in amber (models up to 1.5 million triangles); “Rebuild parts whose surface crosses itself” rebuilds just that part as one clean solid on a grid sized to it, rounding off detail smaller than one grid cell; a part too thin for its grid is left as it is and named in the report. For heavy mesh surgery, use Blender’s 3D-Print Toolbox or Meshmixer.
Which files can I open?
Binary and ASCII STL, OBJ (polygons are split into triangles) and 3MF, including 3MF files from Bambu Studio, PrusaSlicer and Windows. You download a binary STL in millimetres that every slicer opens – Bambu Studio, PrusaSlicer, OrcaSlicer, Cura.
Why did my model get split into pieces?
Only if you turned on “Split for printing”. Otherwise the repaired STL keeps everything in one file. “Split into separate STLs” is different again: it saves each loose part that is already separate as its own file, for example to print parts in different colours.
Can it split a model that is bigger than my printer?
Yes. Turn on “Split for printing” and list your printers – bed size and how many of each, for example three Ender 3 (220 × 220 × 250) and one K1 Max (300 × 300 × 300). The tool finds the grid of straight cuts with the fewest pieces that still keeps every printer busy, turns pieces 90° (or onto their side, if you allow it) so they fit, moves each cut within a search window to a thinner section so there is less to glue, and shares the pieces out by estimated print time so the printers finish at about the same time. You can also set the number of cuts yourself and drag each cut plane. Every piece is checked watertight, and each one is checked to fit the bed of the printer it is assigned to, with the clearance you set.
How do the pieces line up when I put them together?
Every cut face gets two to four alignment joints, laid out unevenly so the pieces only go together one way. Choose pin holes on both sides with separately printed pins (4 × 16 mm by default; spares included), holes for 1.75 mm filament offcuts, a peg on one piece with a socket in the other, or pockets for 6 × 3 mm, 8 × 3 mm or other magnets. The tolerance (0.2 mm by default) is added to every hole. Joints are kept inside the solid part of the cut face, with a wall all round, so none breaks through to the outside. On thin architectural walls, where a 4 mm pin has no room, that face falls back to 1.75 mm filament pins. A face too small for any joint is listed so you can glue it flat.
How are the pieces labelled?
Each piece gets an ID – row letter from the front, column number from the left and a level number when stacked, such as A1, B2 or A1.2. It is engraved (or raised) on the bottom that sits on the bed, or on a cut face, never on a visible outside face. Next to the joints, both faces carry a matching mark such as A1|A2. The files in the ZIP are named the same way, with the printer: A1_Ender-3-2.stl. You can switch labels off.
What is in the ZIP and the assembly sheet?
One STL per piece, named with its ID and printer, a pins STL when you use printed pins, a parts list (CSV) and the assembly sheet. The sheet is a printable page with a top view of every level and a front view, coloured by printer, the cut positions, which printer prints which piece, the joint type and how many pins you need, and the size, volume and a rough print time of each piece. Print it, or save it as a PDF from the browser.