Skip to content
KrateianPublic

About

Watertight STL/3MF/OBJ mesh repair for 3D printing. 19 ranked repair methods (Tamponade inside-out plug, Flap, Graft shell wrap, Coaptation seam union, opt-in Splint, fTetWild and more) on a native Rust core with no PyMeshLab, and a reload-honest watertight verdict. CLI + Qt GUI for Linux and macOS.

Topics

Resources

Contributing

Security policy

Stars

14 stars

Watchers

1 watching

Forks

Latest commit

 

History

351 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sutura

Sutura

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.

Latest release Downloads Platforms Rust core Python 3.11+
CI CodeQL AppImage build macOS build
License Commercial license Last commit GitHub stars

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.

Sutura main window

Highlights

  • 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.

Install

Linux — one line (installs the latest main; re-running updates it):

curl -fsSL https://raw.githubusercontent.com/Krateian/Sutura/main/install.sh | bash

A self-contained AppImage is attached to every release:

chmod +x Sutura-x86_64.AppImage && ./Sutura-x86_64.AppImage

macOS — 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.sh

Requirements, the fTetWild tier, updates and uninstalling are covered in Install and requirements.

Use

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|ftetwild chooses the rebuild used when everything else failed (also under Options → Repair and inherited by the integrations). The default stays fTetWild; cdt is 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.

How it works

A broken model is treated like damaged skin: the repair works on the wound and leaves healthy skin alone. In short:

  1. Hole closing plugs holes from the inside (Tamponade) or follows the surrounding surface across them (Flap).
  2. Clean-up (Stage 1) fixes the wiring of the surface — duplicate and degenerate triangles, wrongly joined edges, flipped faces — and closes what is left.
  3. 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.
  4. 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.

Documentation

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 —

A note from the maintainer

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.

Contributing

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.

Sponsors

If Sutura has saved time or a print, development can be sponsored on GitHub.

License

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.

About

Watertight STL/3MF/OBJ mesh repair for 3D printing. 19 ranked repair methods (Tamponade inside-out plug, Flap, Graft shell wrap, Coaptation seam union, opt-in Splint, fTetWild and more) on a native Rust core with no PyMeshLab, and a reload-honest watertight verdict. CLI + Qt GUI for Linux and macOS.

Topics

Resources

Contributing

Security policy

Stars

14 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages