superlabel is a lightweight desktop annotation tool for object detection datasets. It is built with Tauri, SolidJS, Konva, and Rust, with a focus on fast manual labeling, local-first workflows, and ONNX-assisted pre-labeling.
- Local image and label folder workflow.
- Workspace memory: reopen a recent project and resume from the last labeled image.
- Manual annotation tools:
- Rectangle
- Polygon
- Point
- Circle
- Line
- Polygon snapping to existing vertices and edges.
- Resize rectangle annotations by dragging corners or edges.
- Canvas zoom and pan with mouse wheel.
- Class management:
- Add classes
- Rename classes
- Switch selected annotation class from the annotation list
- Switch class with number keys:
1-9,0
- Undo and redo for annotation edits.
- Autosave toggle.
- Language switch: English and Chinese.
- Export format switch: YOLO and COCO.
- ONNX-assisted labeling:
- Load a user-provided ONNX model
- Download preset YOLOv8 ONNX models
- Run pre-labeling on current image
- Run pre-labeling on all images
- Filter ONNX suggestions by class range
- Show download and inference progress
- Project statistics panel:
- Per-class sample distribution
- Unannotated image count
- Average bbox width, height, area, and aspect ratio
- Aspect-ratio distribution
- Estimated remaining labeling time
Rectangle annotations are saved as YOLO txt files in the selected label folder:
class_id cx cy width heightAll values except class_id are normalized to [0, 1].
Example:
0 0.512000 0.438000 0.210000 0.184000Non-rectangle shapes are saved in sidecar files next to YOLO labels:
image_name.superlabel.jsonThis keeps YOLO compatibility while allowing superlabel to store polygons, points, circles, and lines.
Class names are saved in:
classes.txtWhen output format is set to COCO, superlabel writes:
annotations.jsonCurrent COCO export is based on rectangle annotations.
superlabel supports YOLO-style ONNX detection outputs through the Rust backend.
Preset models include:
- YOLOv8n/s/m/l/x COCO detection
- YOLOv8n segmentation ONNX
- YOLOv8x OIV7
- YOLOv8s World v2
Notes:
- Segmentation mask decoding is not implemented yet.
- Custom text prompts for world/open-vocabulary models are not implemented yet.
- Preset downloads are restricted to the configured X-AnyLabeling release URLs.
- Tauri 2
- Rust
- SolidJS
- Konva
- Vite
- tract-onnx
- image
Install dependencies:
pnpm installRun the Tauri app in development:
pnpm tauri devIf the Linux desktop window crashes on Wayland with a Gdk-Message protocol error, run the X11 fallback:
pnpm tauri:dev:x11Linux builds disable WebKitGTK DMABUF rendering and compositing by default to avoid blank windows on some Wayland, NVIDIA, AMD, and Intel driver combinations. Packaged builds also default to XWayland when they detect a Wayland session. To force the app through XWayland manually, run:
SUPERLABEL_FORCE_X11=1 superlabelTo keep native Wayland enabled on a machine where it is stable, run:
SUPERLABEL_USE_WAYLAND=1 superlabelRun only the frontend dev server:
pnpm devBuild the frontend:
pnpm buildBuild the desktop app:
pnpm tauri buildLinux release builds generate AppImage and deb packages. Use the AppImage on Arch Linux and CachyOS.
Check Rust code:
cd src-tauri
cargo checkCheck TypeScript:
npx tsc --noEmit.
├── src
│ ├── components # UI components and canvas interaction
│ ├── stores # SolidJS app state
│ ├── utils # file APIs, i18n, YOLO helpers, workspaces
│ └── types # shared TypeScript types
├── src-tauri
│ └── src # Rust backend commands
├── index.html
├── package.json
└── vite.config.tsThe Rust backend handles the parts that benefit from native performance and file-system access:
- Reading image folders and label files
- Writing labels, classes, shape sidecars, and COCO exports
- Image dimension detection
- ONNX model download
- ONNX model caching and inference
- Project statistics calculation
superlabel remembers recently opened projects locally. A workspace records:
- Image folder path
- Label folder path
- Last opened image
- Autosave setting
- Output format
- Language
Recent workspaces are stored in browser local storage inside the app runtime. They are not written as project files yet.
- COCO export currently covers rectangle annotations.
- YOLO txt files only represent rectangle annotations.
- Segmentation mask decoding is not implemented.
- Open-vocabulary prompt configuration is not implemented.
- Workspace records are local app state, not portable workspace files.
- Portable
.superlabel-workspacefiles. - COCO export for polygons and other shapes.
- Segmentation mask decoding for YOLOv8-seg.
- Configurable ONNX model profiles with preprocessing/output schema presets.
- Dataset quality warnings for class imbalance, tiny boxes, and unusual aspect ratios.
- Keyboard shortcut customization.