A small desktop editor for YOLO annotation files, written in Rust with eframe/egui.
LabelRS is intended for quickly reviewing and editing a folder of images and YOLO labels, then copying selected samples into an Ultralytics-style training or validation split.
- Open image and label folders independently, or use a single shared folder.
- Read and write YOLO detection, segmentation, and pose annotations.
- Draw, select, move, and resize boxes; edit polygon vertices and pose keypoints.
- Navigate image folders with the keyboard or sidebar search.
- Copy the current image and label to training or validation splits.
- Reveal images and labels in the system file manager.
- Copy image paths, label paths, and filenames from context menus.
- Choose system, light, or dark theme.
Supported image formats: JPEG, PNG, BMP, GIF, TIFF, and WebP.
- A recent stable Rust toolchain (the project uses Rust edition 2024).
- Linux, macOS, or Windows.
cd labelrs
cargo run --release- Start the application and select Open images....
- Select Open labels... if labels are stored in a different directory. Labels are matched by image stem, for example
frame_001.jpgusesframe_001.txt. - Select an annotation on the canvas or add one from the right sidebar.
- Save with
Ctrl+S, or move to another image to save pending changes. - Press
Tto add the current image and label to the training split, orYfor validation. The editor advances to the next image after a successful export.
Images without a label file can still be exported; LabelRS creates an empty .txt label file for them.
| Action | Control |
|---|---|
| Previous / next image | Left / Right arrow |
| Save labels | Ctrl+S |
| Delete selected annotation | Delete |
| Add current sample to training set | T |
| Add current sample to validation set | Y |
| Zoom | Zoom slider, or mouse wheel over the canvas when enabled |
| Pan a zoomed image | Drag empty canvas space |
| Image / label actions | Right-click the canvas |
| Copy an image filename | Right-click an item in the image list |
When an image has unsaved changes, arrow-key navigation asks whether to save, discard, or cancel. View → Auto-save before arrow navigation skips the prompt for the current session; it is disabled each time the application starts.
Mouse-wheel zoom can be toggled in View.
By default, exported samples are placed under ./extracts. Change this from the Dataset menu.
extracts/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
This directory structure matches the image/label layout expected by Ultralytics YOLO datasets. Create your own dataset YAML file with class names and any project-specific training settings.
LabelRS stores the most recently selected image folder, label folder, export root, theme, and mouse-wheel zoom preference in the platform configuration directory:
- Linux:
$XDG_CONFIG_HOME/labelrs/last_folders.txtor~/.config/labelrs/last_folders.txt - Windows:
%USERPROFILE%/labelrs/last_folders.txt - macOS:
~/.config/labelrs/last_folders.txt