The universal annotation converter
If you’ve ever written a one-off Python script to wrangle COCO annotations into YOLO format (or vice versa), Panlabel is here to save you the trouble. It’s a fast, single-binary CLI that converts between common object detection annotation formats — with built-in validation, clear lossiness warnings, and no Python dependencies to manage. Panlabel is also available as a Rust library if you want to integrate format conversion into your own tools.Panlabel is in active development (v0.2.x). The CLI and library APIs may change between versions, so pin to a specific version if you’re using it in production.
Get started quickly
Installation
Install Panlabel on macOS, Linux, or Windows
Quickstart
Get started with Panlabel in minutes
CLI Commands
Explore all available commands and options
Format Reference
Learn about supported annotation formats
Key features
Format Conversion
Convert between COCO, YOLO, Pascal VOC, CVAT, Label Studio, TensorFlow Object Detection, and Panlabel’s own IR format
Auto-detection
Automatically detect input format from file extension, content, or directory layout
Dataset Validation
Check datasets for common problems — duplicate IDs, missing references, invalid bounding boxes
Rich Statistics
Generate detailed dataset statistics in text, JSON, or HTML format
Dataset Comparison
Compare two datasets semantically with summary or detailed output
Smart Sampling
Create subset datasets with random or stratified sampling, plus category filtering
Lossiness Warnings
Get clear warnings about what data (if any) gets lost during conversion
Zero Dependencies
Single binary with no Python dependencies to manage
What can Panlabel do?
| Command | What it does |
|---|---|
convert | Convert between annotation formats, with clear warnings about what (if anything) gets lost |
validate | Check your dataset for common problems — duplicate IDs, missing references, invalid bounding boxes |
stats | Show rich dataset statistics in text, JSON, or HTML |
diff | Compare two datasets semantically (summary or detailed output) |
sample | Create subset datasets (random or stratified), with optional category filtering |
list-formats | Show which formats are supported and their read/write/lossiness capabilities |
Supported formats
| Format | Extension / Layout | Description | Lossiness | |--------|--------------------|-------------|-----------|| |ir-json | .json | Panlabel’s own intermediate representation | Lossless |
| coco | .json | COCO object detection format | Conditional |
| cvat | .xml / annotations.xml export | CVAT for images XML annotation export | Lossy |
| label-studio | .json | Label Studio task export JSON (rectanglelabels) | Lossy |
| tfod | .csv | TensorFlow Object Detection | Lossy |
| yolo | images/ + labels/ directory | Ultralytics YOLO .txt labels | Lossy |
| voc | Annotations/ + JPEGImages/ directory | Pascal VOC XML | Lossy |
Next steps
Install Panlabel
Choose your preferred installation method
Quick Start Guide
Convert your first dataset in minutes