tuliq
Runs in your browser

YOLO Class Manager

Remaps classes across an entire YOLO dataset in one pass — rename a class, merge several into one (car + truck + bus → vehicle), or remove a class's annotations entirely — then exports a corrected copy. The natural next step after the YOLO Dataset Health Checker: that tool finds class problems, this one fixes them dataset-wide instead of hand-editing hundreds of label files. Classes are read from data.yaml when present, or inferred directly from the annotations when it's missing. Every plan is validated (a merge target must be a class that's actually kept, not itself removed or merged elsewhere) and previewed — exact before/after class counts and how many annotations are unchanged, changed, or removed — before anything is exported. 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 remaps classes across an entire YOLO dataset in one pass — rename a class, merge several classes into one (car + truck + bus → vehicle), or remove a class's annotations entirely, then export a corrected copy. It's the natural next step after the YOLO Dataset Health Checker: that tool can tell you a class ID is out of range, inconsistent, or barely used — this tool is how you actually fix it, dataset-wide, instead of hand-editing hundreds of label files. Classes are read from data.yaml when it's present and parses cleanly; when it isn't, they're inferred directly from whatever class IDs actually appear in the annotations (named generically, since there's no real name to recover in that case). Every plan is validated before export — a merge target has to be a class that's actually being kept, not one that's itself being removed or merged elsewhere — and the impact preview (classes before/after, and exactly how many annotations are unchanged, changed, or removed) is computed before you commit to anything. This only ever produces a new downloadable .zip; your original files are read, never modified, moved, or deleted.

What you can do

  • Rename, merge, or remove classes across a whole YOLO dataset at once
  • Live impact preview — see affected annotation counts before exporting anything
  • Exports a corrected copy as a .zip — your original dataset is never touched
  • Nothing is uploaded — every file is read and rewritten entirely in your browser

How to use

Step 1

Load your dataset

Same folder/.zip/files picker as the Health Checker — classes are read from data.yaml, or inferred from the annotations if it's missing.

Step 2

Decide what happens to each class

Keep (optionally renamed), merge into another class, or remove — the impact preview updates live as you go.

Step 3

Export the corrected copy

Downloads a new .zip with annotation files rewritten and data.yaml updated. Nothing in your original dataset changes.

Example

A plan that merges car, truck, and bus into one "vehicle" class looks like this once resolved:

Mapping

0 person → 0 person
1 car → 1 vehicle
2 bicycle → removed
3 truck → 1 vehicle
4 bus → 1 vehicle

5 original classes become 2 — every annotation that referenced car, truck, or bus is rewritten to the new "vehicle" ID; every bicycle annotation is dropped; person is untouched.

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, and the corrected 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; class remapping is a deterministic rewrite based on the plan you build.

Frequently asked questions

Does this modify my original dataset?+

No — it only ever produces a new .zip download with the corrected files. Every original file is read, never written to, moved, or deleted. If you want to replace your working copy, that's a manual step you take afterward.

What happens to images?+

Nothing — images are copied into the exported .zip completely unchanged. Only label files (rewritten with the new class IDs) and data.yaml (updated with the new class list) are actually modified.

Can I merge a class into another class that's also being renamed?+

Yes — merging targets the class's new identity, not its original name. If you rename "car" to "vehicle" and merge "truck" into it, every former car and truck annotation ends up under "vehicle".

Can I merge into a class that's itself merging into something else?+

Not directly — a merge target always has to be a class that's being kept, not one that's itself being removed or merged elsewhere. This avoids chained merges resolving in a confusing or ambiguous order; merge everything you want combined directly into the one class that actually survives.

What if my dataset doesn't have a data.yaml, or it won't parse?+

Classes are inferred directly from whichever class IDs actually appear in the annotations, named generically ("class 0", "class 1", ...) since there's no real name to recover in that case. You can still rename, merge, and remove them exactly the same way.

Does this catch malformed annotation lines or out-of-range class IDs?+

No — a line this tool doesn't recognize (malformed, or referencing a class ID outside the dataset's declared range) is passed through completely unchanged rather than guessed at or dropped. Run the YOLO Dataset Health Checker first to find and understand those; this tool is for classes you've already decided what to do with.

Related tools