LabelIt is a desktop application for building object detection and segmentation datasets. It runs entirely on your machine. Images are never uploaded, no account is required, and no network connection is needed for any annotation feature.
The application covers the full dataset lifecycle in one place: importing existing labeled data, drawing and refining annotations, reviewing quality, splitting into train, validation and test sets, generating augmented dataset versions, and exporting to standard training formats.
Each project is stored as a single SQLite file (project.lbl) alongside your
images. Source images are referenced by path and are never modified.
Draw bounding boxes, polygons, polylines and keypoints. Overlapping objects can be cycled through by repeated clicking, and a selected shape keeps its handles on top so corners stay easy to grab. A dashed crosshair follows the cursor to make precise placement straightforward.
The left panel lists every image with its status, split assignment and annotation count. The right panel manages label classes and shows live dataset statistics.
Smart Polygon runs Segment Anything locally to convert a few clicks into an accurate polygon. Left click adds a positive point, right click adds a negative point, and the mask updates after each click. Both SAM 2.1 and SAM 3 are selectable, and inference runs on a CUDA GPU when one is available.
In the capture above, three positive points produced a complete tree mask in 67 ms on an NVIDIA RTX 3060.
The Finish workspace reports which images are ready for export and which still have unresolved issues, such as missing annotations or unassigned splits. Split health shows the current train, validation and test distribution at a glance.
Create reproducible dataset versions on top of the same source annotations. A version records its preprocessing steps and its augmentation recipe, so the same configuration can be exported again at any time. Augmentations are applied to the training split only, while preprocessing applies to every split.
Preprocessing includes auto orientation, resizing, tiling, contrast adjustment and grayscale conversion. Augmentation includes flips, rotation, shear, brightness, exposure, saturation, hue and blur.
Export the raw dataset or any saved version to YOLO, COCO, Pascal VOC or CSV. Formats that cannot represent the annotation types present in your project are disabled rather than silently dropping data. Each export is written to its own folder, and a folder is never overwritten.
| Format | Bounding box | Polygon | Polyline | Keypoint |
|---|---|---|---|---|
| YOLO | Yes | Yes | No | No |
| COCO | Yes | Yes | No | No |
| Pascal VOC | Yes | Yes | No | No |
| CSV | Yes | Yes | Yes | Yes |
Class balance, status breakdown and split distribution are always visible while annotating, so problems are caught before export rather than after training starts.
Annotation
- Bounding box, polygon, polyline and keypoint tools
- Smart Polygon segmentation powered by SAM 2.1 and SAM 3
- YOLO automatic labeling with a review queue
- Vertex level editing, including insertion and deletion
- Multi select in the image list with batch status and split changes
Dataset management
- Import existing labels from YOLO, COCO, Pascal VOC and CSV with automatic format detection
- Train, validation and test splits with configurable auto split
- Image status workflow covering unlabeled, labeled, reviewed and excluded
- Excluded images stay in the project with their labels but are omitted from split, export and augmentation
Output
- Export to YOLO, COCO, Pascal VOC and CSV
- Reproducible dataset versions with augmentation recipes
- Collision safe export folders
Platform
- Runs fully offline, with no telemetry and no account
- When a network connection is available, the app checks GitHub Releases once per session for a newer version and shows a download notice. Nothing is installed automatically, no user data is sent, and the check fails silently when offline
- CUDA GPU acceleration with automatic CPU fallback
- Dark and light themes
- English and Korean interface
Current release: v1.5.4. All builds are 64 bit. Click a file to download it directly, or browse every version on the releases page.
| Platform | Download | Notes |
|---|---|---|
| Windows 10/11 | LabelIt-1.5.4-Setup.exe | Standard installer |
| macOS (Apple Silicon) | LabelIt-1.5.4-mac-arm64.dmg | M1 and newer |
| macOS (Intel) | LabelIt-1.5.4-mac-x64.dmg | Intel based Macs |
| Linux (AppImage) | LabelIt-1.5.4-linux-x86_64.AppImage | Portable, no installation |
| Linux (Debian, Ubuntu) | LabelIt-1.5.4-linux-amd64.deb | System package |
Run the installer and follow the prompts. Windows SmartScreen may warn that the publisher is unrecognized because the build is not signed with a commercial certificate. Choose More info and then Run anyway.
Open the disk image, drag LabelIt to Applications, and eject the image. The builds carry an ad-hoc signature but are not notarized by Apple, so Gatekeeper warns about an unidentified developer on first launch. Right click the app in Applications, choose Open, then confirm in the dialog. macOS remembers the decision, so later launches open normally. If the prompt does not offer an Open button, allow the app under System Settings > Privacy & Security, where it appears shortly after the blocked launch attempt.
Running the app directly from the mounted disk image can fail; copy it to Applications first.
For the AppImage, mark it executable and run it:
chmod +x LabelIt-*.AppImage
./LabelIt-*.AppImageFor the Debian package:
sudo dpkg -i LabelIt-*-linux-amd64.deb
sudo apt-get install -fManual annotation, import and export work immediately after installation. Smart Polygon and YOLO automatic labeling additionally require Python, which powers a local inference service that the application starts and stops automatically.
Requirements
- Python 3.10, 3.11 or 3.12 (3.13 is not yet supported by all dependencies)
- Roughly 5 GB of free disk space for PyTorch and the model weights
- An NVIDIA GPU with CUDA is optional and significantly faster than CPU
Open AI Setup inside the application and follow the guided installation. The wizard creates an isolated virtual environment and downloads the model weights. No data leaves your machine at any point, during setup or during inference.
Model weights are downloaded once and cached locally. The first Smart Polygon request on a new image spends a moment computing the image embedding, and every subsequent click reuses it.
- Choose New Project and select a folder. If the folder already contains images and label files, both are imported automatically.
- Create label classes in the Classes panel on the right.
- Select a tool from the rail on the right edge of the canvas and begin annotating.
- Press Space to mark an image complete and jump to the next unlabeled one.
- Open Finish to review dataset readiness, assign splits and export.
To attach labels to images that are already in a project, place the label files next to the images and import the folder again. Existing annotations are never overwritten, and only images without annotations receive the imported labels.
| Action | Shortcut |
|---|---|
| Next / previous image | Tab / Shift+Tab, or arrow keys |
| Next unlabeled image | N |
| Mark complete and continue | Space |
| Select tool | V |
| Bounding box | W |
| Polygon | E |
| Smart Polygon | S |
| Polyline | L |
| Keypoint | K |
| Assign class 1 to 9 | 1 to 9 |
| Undo / redo | Ctrl+Z / Ctrl+Y |
| Duplicate selection | Ctrl+D |
| Delete selection | Delete |
| Finish polygon | Enter or double click |
| Cancel current drawing | Esc |
| Fit image to view | F or 0 |
| Pan vertically / horizontally | Mouse wheel / Shift+wheel |
| Zoom | Ctrl+wheel |
| Pan by dragging | Middle drag, right drag, or Alt+left drag |
| Shortcut reference | ? |
Prerequisites
- Node.js 20 or newer
- A C++ toolchain for the native dependencies (Visual Studio Build Tools on
Windows, Xcode Command Line Tools on macOS,
build-essentialon Linux)
git clone https://github.com/th00tames1/LabelIt.git
cd LabelIt
npm install
# Run in development
npm run dev
# Build an installer for the current platform
npm run build:win # Windows
npm run build:mac # macOS
npm run build:linux # LinuxInstallers are written to dist/.
Native modules such as better-sqlite3 and sharp are compiled per platform and
architecture, so an installer must be produced on the platform it targets. The
repository includes a GitHub Actions workflow that builds all four targets on
matching runners and attaches them to a release. Push a version tag to trigger it:
git tag v1.5.0
git push origin v1.5.0| Layer | Technology |
|---|---|
| Application shell | Electron 33, electron-vite |
| Interface | React 19, TypeScript, Zustand |
| Canvas | Konva |
| Storage | SQLite via better-sqlite3 |
| Image processing | sharp |
| Inference service | Python, FastAPI, Ultralytics, PyTorch |
All coordinates are stored normalized to the range 0 to 1, which keeps annotations correct across resizing and augmentation. Database access is confined to the main process, and the renderer communicates through a typed IPC bridge with context isolation enabled.
Copyright (c) 2026 Heechan Jeong, Advanced Forestry Systems Lab, Oregon State University. All rights reserved.
This software is licensed for personal and commercial use. Redistribution, sublicensing, or resale of this software, in whole or in part, without prior written permission from the copyright holder is prohibited. See resources/LICENSE.txt for the full text.






