Annotation

Bounding Box Annotator

Drop a folder of images, define your classes, and draw boxes with the mouse while the number keys switch class. Every label is saved in your browser as you go, so you can close the tab and come back. Export produces the exact files a detector expects: one YOLO text file per image with a data.yaml, a single COCO JSON, VOC XML per image, or a flat CSV.

Loading the tool…

How it works

01

Load images and classes

Drop images (or a folder). Type class names once; they are remembered with the project. Import existing YOLO, COCO or VOC labels if you are continuing someone else's work.

02

Draw

Click-drag to draw, drag a box to move it, drag a corner to resize, Delete removes. Keys 1-9 pick the class, arrows change image, Z undoes, Ctrl+wheel zooms.

03

Export

YOLO gives labels/<image>.txt plus data.yaml; COCO gives annotations.json with image sizes; VOC gives one XML per image; CSV gives one row per box in pixels.

Formats, limits and the numbers that matter

YOLO format

Each line is class x_center y_center width height, all normalised to 0-1. Class ids follow the order of your class list, which is written to data.yaml so training uses the same ids.

COCO format

Boxes are [x, y, width, height] in pixels with an area field; categories are numbered from 1; image width and height come from the file itself.

Where labels live

In IndexedDB in this browser, keyed by image file name and size. Clearing site data deletes them, so export when a session ends.

Limits

Tested with 2,000 images of 4 MB each. Very large images are drawn at screen resolution, but exported coordinates are in the original pixels.

Common questions

Can two people label the same set?

Export from one browser and import the file in the other; the importer merges by image name and keeps both sets of boxes.

Which format for Ultralytics YOLOv8/11?

YOLO. Unzip so images/ and labels/ sit side by side, point data.yaml at them, and run yolo detect train.

Are my images uploaded?

No. Files are read by the page and never leave the device; there is no server behind this site.