YOLO Dataset Converter
Converts an entire YOLO dataset to COCO or Pascal VOC in one pass, using the same already-tested serializers as the single-file Bounding Box Format Converter rather than a separate implementation. Genuinely lossless in this direction — YOLO only has one shape (an axis-aligned box), and both target formats represent that exactly, so nothing is dropped or approximated because of what the target format can hold; only annotations that were already malformed or had an out-of-range class ID in the source are skipped, and counted rather than hidden. Decodes every image to convert YOLO's normalized coordinates into real pixel coordinates — the one genuinely new cost this tool has that the rest of the CV Workbench doesn't. Preserves an existing train/val/test structure in the output (one instances_<split>.json per split for COCO, split subfolders for Pascal VOC) rather than flattening it. After conversion, the exported file's actual annotation count is independently re-counted from its bytes and checked against the preview. Only ever produces a new downloadable .zip; your original dataset is read, never modified.
Nothing is uploaded — every file is read directly in your browser. Pick a .zip and it's unzipped automatically; pick image/label files directly and they're used as-is. Folder selection can't be combined into the same picker — your browser shows a genuinely different, folder-only dialog for it.
About this tool
This tool converts an entire YOLO dataset to COCO or Pascal VOC in one pass — the dataset-scale sibling of the single-file Bounding Box Format Converter, built on the exact same, already-tested serializers rather than a separate implementation. Worth being upfront about the direction this converts: YOLO only ever has one shape (an axis-aligned box), and both COCO and Pascal VOC can represent that exactly, so this specific conversion is genuinely lossless as far as geometry goes — unlike converting a richer format down to YOLO, nothing here gets flattened or approximated because of what the target format can hold. The only annotations that don't survive are ones that were already malformed or referenced an out-of-range class ID in the source data (which the YOLO Dataset Health Checker is built to find), never something dropped because this tool couldn't represent it. YOLO's coordinates are normalized 0-1, so converting to a pixel-coordinate format needs every image's real dimensions — this tool decodes every image to get that, which is a genuinely new cost the rest of the CV Workbench doesn't have, and it's why this is slower than the Health Checker or Class Manager on the same dataset. If your dataset already has a train/val/test structure, the output preserves it — one instances_train.json alongside instances_val.json for COCO, or split subfolders for Pascal VOC — rather than merging everything into one file. After conversion, the exported file's actual annotation count is independently re-counted from its real bytes and checked against the preview, so a mismatch would be caught and shown rather than trusted silently. Only ever produces a new downloadable .zip; your original dataset is read, never modified.
What you can do
- Convert a whole YOLO dataset to COCO or Pascal VOC in one pass — not one file at a time
- Preserves an existing train/val/test structure — one output file per split, not one flat file
- Verifies the exported file's annotation count against the preview before you download
- Nothing is uploaded — every image is decoded and converted entirely in your browser
How to use
Step 1
Load your dataset
Same folder/.zip/files picker as the other CV Workbench tools.
Step 2
Review the preview
Total images and annotations, broken down by split if your dataset has one, before anything is converted.
Step 3
Convert, verify, export
Pick COCO or Pascal VOC — the exported file's annotation count is checked against the preview automatically.
Example
A converted dataset with an existing train/val split produces:
COCO output
annotations/instances_train.json annotations/instances_val.json images/train/... images/val/...
Each instances_<split>.json is a complete, standalone COCO annotation file for that split — exactly the layout most COCO-based training and evaluation tooling expects.
How your data is handled
This tool is labeled 🟢 Browser: every file you pick (folder, .zip, or individual files) is read directly via your browser's File API, every image is decoded locally to read its pixel dimensions, and the converted copy is assembled and downloaded entirely client-side. Nothing is uploaded, and there's no server involved anywhere in this tool. No AI model is used; conversion is a deterministic coordinate transform plus the same serializers the single-file Bounding Box Format Converter uses.
Frequently asked questions
Does this modify my original dataset?+
No — it only ever produces a new .zip download with the converted files. Every original file is read, never written to, moved, or deleted.
Why does this need to decode every image? The other CV Workbench tools don't.+
YOLO's box coordinates are normalized to 0-1 relative to the image's own size — converting them into COCO or Pascal VOC's absolute pixel coordinates needs to know that real size, which means actually decoding each image rather than just reading its label file as text. That's the one meaningfully new cost this tool has that the Health Checker, Class Manager, and Splitter don't.
What happens to annotations with an out-of-range or malformed class ID?+
They're skipped and counted, not guessed at or silently dropped — the total is shown in the preview before you export. Run the YOLO Dataset Health Checker first if you want to find and understand exactly which files and lines they're in.
Why COCO and Pascal VOC, but not YOLO or VIA CSV?+
The source is already YOLO, so converting back to it isn't useful here — that's what the Class Manager and Splitter are for if you need to change a YOLO dataset without leaving the format. VIA CSV may be added later; COCO and Pascal VOC were the two formats worth shipping first.
What does "Verified" actually check?+
After building the COCO JSON or Pascal VOC XML files, this tool independently re-counts the annotations from those files' actual bytes — not by re-deriving the number from the source data — and compares that against the preview's total. A mismatch would mean a real bug in the conversion, and would be shown rather than hidden.