Free tool
COCO JSON to YOLO Converter
Convert COCO JSON bounding boxes into normalized YOLO TXT labels, downloaded as a ZIP for Ultralytics training.
Convert annotation format
Pick the output format, then choose one or more files or a ZIP. Add the images too when the labels do not include image sizes, such as YOLO. The result downloads as soon as it is ready.
Downloads a ZIP with one file per image.
Quick conversions
How COCO to YOLO Conversion Works
COCO JSON Format (Absolute Pixels)
COCO uses absolute pixel coordinates top-left origin:
"bbox": [x_min, y_min, width, height] // Example on 1920x1080 image: "bbox": [480, 270, 960, 540]
YOLO TXT Format (Normalized 0-1)
YOLO requires center coordinates normalized by image size:
<class_id> <x_center> <y_center> <width> <height> // Converted: 0 0.500000 0.500000 0.500000 0.500000
Need to annotate and train in one place?
Label with AI, review with your team, and export or train.
Frequently asked questions
- How are COCO bounding boxes converted to YOLO?
- COCO stores [x_min, y_min, width, height] in pixels. YOLO stores the box center, width, and height divided by the image size, so every value falls between 0 and 1. The converter does this math for every annotation and writes one TXT file per image.
- Does the output work with Ultralytics YOLOv8, YOLO11, and YOLO12?
- Yes. The ZIP contains one normalized label file per image plus a data.yaml file, ready to pair with your images for Ultralytics training.
- How are COCO category IDs mapped to YOLO class IDs?
- YOLO expects class IDs that start at 0 with no gaps. Each COCO category gets the next free ID in the order it first appears, and the ZIP includes classes.txt and data.yaml with the matching names. Segmentation polygons are exported as their bounding boxes.
- Are my files uploaded?
- The files you select are sent to LabelOp servers for processing, and the result comes back as a download. You do not need an account.