Watertight, printable repairs for broken STL, OBJ and 3MF meshes — on Linux and macOS.
Repairs the damage, leaves healthy geometry alone, and keeps the original file untouched.
Install · Use · How it works · Documentation · Changelog · Türkçe
Linux has no direct equivalent of Windows' right-click Fix model (3D Builder, Netfabb), and Bambu Studio's Fix model button does not work on Linux. Sutura fills that gap: pick a mesh, repair it, and get a repaired copy that slicers accept — from a GUI, the command line, a file-manager right-click or an OrcaSlicer plugin.
- Repairs only what is broken. Holes, wrongly joined edges, flipped faces, overlapping or self-intersecting parts and loose debris are treated; a clean model passes through unchanged.
- Never worse than the input. Every repair step is adopted only when its result is at least as good as what the repair already had; otherwise it is discarded.
- Honest verdict. The result is reloaded and re-checked before it is called watertight, and a report shows what was fixed, what remains and how much the shape moved.
- Many tools, one button. Nineteen ranked repair methods sit behind a single Repair button; the triage engine picks what a model needs.
- Native and offline. A Rust core (
sutura_geom) does the geometry; no network access is needed after installation. - Fits the workflow. Dolphin service menu on KDE, Finder Quick Action on macOS, an experimental OrcaSlicer plugin, batch repair and multi-object 3MF.
Linux — one line (installs the latest main; re-running updates it):
curl -fsSL https://raw.githubusercontent.com/Krateian/Sutura/main/install.sh | bashA self-contained AppImage is attached to every release:
chmod +x Sutura-x86_64.AppImage && ./Sutura-x86_64.AppImagemacOS — download Sutura-vX.Y.Z.dmg from the
latest release (unsigned:
open it with right-click → Open the first time), or install from source:
git clone https://github.com/Krateian/Sutura.git && cd Sutura && ./install-macos.shRequirements, the fTetWild tier, updates and uninstalling are covered in Install and requirements.
sutura model.stl # writes model_fixed.stl
sutura model.3mf -o fixed.3mf # choose the output name
sutura model.stl --human # readable report of what was fixed
sutura validate model.stl # analyse only, change nothing
sutura a.stl b.stl c.3mf # batch- GUI: launch Sutura from the application menu or Spotlight, add files (or drag and drop) and press Repair.
- KDE Dolphin: right-click a model → Repair with Sutura.
- macOS Finder: right-click → Quick Actions → Sutura — Repair.
- Last-resort solid engine (experimental):
--solid-engine cdt|ftetwildchooses the rebuild used when everything else failed (also under Options → Repair and inherited by the integrations). The default stays fTetWild;cdtis an experimental exact rebuild that runs after Coaptation and before fTetWild, and falls back to fTetWild on failure or timeout. For now it is slow: on many models, even ones with a few thousand faces, it does not finish within its time limit, and Sutura falls back to fTetWild automatically. Use it on small or simple models, or when you want the original surface kept exactly.
Every option, report field and integration is described in Usage.
A broken model is treated like damaged skin: the repair works on the wound and leaves healthy skin alone. In short:
- Hole closing plugs holes from the inside (Tamponade) or follows the surrounding surface across them (Flap).
- Clean-up (Stage 1) fixes the wiring of the surface — duplicate and degenerate triangles, wrongly joined edges, flipped faces — and closes what is left.
- Deeper steps run only when needed: Graft rebuilds just the damaged region, Coaptation welds and joins folded or overlapping bodies, and the fallback tiers (Splint, Dressing, fTetWild) handle the hardest cases.
- Stage 2 produces one closed, printable solid, and the result is reloaded and checked before it is reported.
The full walk-through is in How Sutura works.
| Topic | English | Türkçe |
|---|---|---|
| How Sutura works, step by step | How it works | Nasıl çalışır |
| Repair methods, intensity presets and external engines | Methods | Yöntemler |
| Install, requirements, updates and removal | Install | Kurulum |
| CLI, GUI, reports, Dolphin, Quick Action, OrcaSlicer | Usage | Kullanım |
| Common problems and fixes | Troubleshooting | Sorun giderme |
| Maturity of each area | Feature status | Özellik durumu |
| Robustness and known limitations | Limitations | Sınırlamalar |
| Mesh-type detection (mechanical / organic) | Mesh classifier | Sınıflandırıcı |
| Architecture and libraries | Architecture | Mimari |
| Anonymous usage history (opt-out) | Privacy | Gizlilik |
| Tests and benchmarks (developers) | Testing | Test |
| Feature releases at a glance | Version history | Sürüm geçmişi |
| Every change in detail | CHANGELOG.md | — |
Sutura is developed by a single maintainer alongside a full-time role in
aircraft maintenance. Releases do not follow a fixed schedule: work is merged
into main continuously and a release is cut when a batch of it is ready, so a
regular release cadence should not be expected. The project is actively
developed; the Linux one-line installer always tracks main.
Bug reports, unclear documentation, meshes that will not repair and pull
requests are all welcome — small contributions matter as much as big features.
When reporting a mesh, please include the sutura <file> --human output (or the
JSON report), the command that was run and, if known, how the mesh was produced
(slicer, scanner, CAD export). The issue template is in
.github/ISSUE_TEMPLATE/bug_report.md; see also CONTRIBUTING.md.
If Sutura has saved time or a print, development can be sponsored on GitHub.
Since v0.2.0 Sutura is licensed under the PolyForm Noncommercial 1.0.0. Personal, non-commercial use — hobby, research, education, personal 3D printing — is and will remain free; this is a permanent commitment. Commercial use requires a separate agreement: fill in the Commercial License Request form (answers are private). Versions v0.1.0–v0.1.9 remain permanently available under Apache 2.0.
Why the change: Sutura started as a personal need, and the AI tooling used to develop it is paid for by the maintainer. Free commercial use would not be fair to the project. Should the maintainer one day be unable to continue, the plan is to release Sutura fully open source and hand it to the community.
