# How to export/share labels for annotation?

**URL:** <https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817>\
**Category:** Ultraltyics Platform\
**Tags:** question, support\
**Created:** [February 20, 2026, 2:50am UTC](https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817 "2026-02-20T02:50:50Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![dtzx](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/dtzx/32/1320_2.png) [@dtzx](https://community.ultralytics.com/u/dtzx)\
**Post date:** [February 20, 2026, 2:50am UTC](https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817/1 "2026-02-20T02:50:50Z")

</div>

I have an unlabeled dataset for an oriented bounding box model with 11 labels. I’ve partitioned it into k pieces, each to be sent to a different annotator. I can distribute a zip file and follow [the documented YAML structure](https://docs.ultralytics.com/datasets/obb/#dataset-yaml-format).

I passed along instructions to create a dataset and upload the zip file. It works, except the labels aren’t included. If possible, I’d like to keep the label indices and colors consistent for all annotators. Is there a way to facilitate this?

Thanks!

---

<div class="post-metadata">

**Author:** ![Toxite](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/toxite/32/123_2.png) [@Toxite](https://community.ultralytics.com/u/Toxite)\
**Post date:** [February 20, 2026, 5:17am UTC](https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817/2 "2026-02-20T05:17:11Z")

</div>

Are you referring to uploading on Ultralytics Platform?

You can upload the zip file with the proper structure and data YAML file and it will import the labels.

The data YAML should be at the root of the zip file along with train and val folders.

---

<div class="post-metadata">

**Author:** ![dtzx](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/dtzx/32/1320_2.png) [@dtzx](https://community.ultralytics.com/u/dtzx)\
**Post date:** [February 21, 2026, 12:52am UTC](https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817/3 "2026-02-21T00:52:47Z")

</div>

Yes, I mean uploading on the Ultralytics Platform.

I have a ZIP file with this structure:

```
data.zip
├── README.md
├── pilot-obb.yaml
└─┬ pilot-obb/
  ├─┬ train/
  │ ├── train-001.png
  │ └── ...
  ├─┬ val/
  │ ├── val-001.png
  │ └── ...
  └─┬ test/
  │ ├── test-001.png
  │ └── ...
```

Where `pilot-obb.yaml` is:

```auto
path: pilot-obb
train: train
val: val
test: test

names:
  0: rostral
  # ...
  10: artifact

```

When I upload it, the images are correctly assigned to train, val, or test. But the “Classes” tab shows:

| # | Name | Labels | Images |
| --- | --- | --- | --- |
| 0 | pilot-obb-01 | 0 | 0 |

Also, the linked documentation for the YAML format doesn’t show how to set the color of a class label, if that’s possible.

---

<div class="post-metadata">

**Author:** ![pderrenger](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/pderrenger/32/73_2.png) [@pderrenger](https://community.ultralytics.com/u/pderrenger)\
**Post date:** [February 21, 2026, 1:32pm UTC](https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817/4 "2026-02-21T13:32:39Z")

</div>

Your ZIP is being split correctly, but Ultralytics Platform isn’t picking up your class list because the uploaded layout doesn’t match the “YOLO dataset structure” it expects (i.e. `data.yaml` at the ZIP root plus per-split `images/` + `labels/` folders). The structure shown in the [Ultralytics Platform quickstart dataset example](https://docs.ultralytics.com/platform/quickstart/#yolo-dataset-structure) is what the importer is built around.

Try repackaging like this (and **name the file `data.yaml`** at the ZIP root):

```plaintext
data.zip
├── data.yaml
├── train/
│ ├── images/
│ │ ├── train-001.png
│ │ └── ...
│ └── labels/
│ ├── train-001.txt # (optional for now if unlabeled)
│ └── ...
├── val/
│ ├── images/
│ └── labels/
└── test/
    ├── images/
    └── labels/

```

A couple notes:

- If the dataset is truly unlabeled, you can omit the `labels/` folders initially, but the `names:` in `data.yaml` should still be detected and populate the Classes tab once the YAML is found.
- For OBB later, the Platform parses YOLO-format label `.txt` files during upload as described in the [Platform dataset processing docs](https://docs.ultralytics.com/platform/data/datasets/#what-label-formats-are-supported).

On colors: there’s currently no YAML field to set class colors on upload. Colors are edited in the UI by clicking the color swatch next to each class name in the Classes tab (see “Edit class colors” in the [Datasets page docs](https://docs.ultralytics.com/platform/data/datasets/#classes-tab)).

If you want, share your ZIP (or just confirm whether `pilot-obb.yaml` is at the root and whether you have any `labels/*.txt` present), and I can tell you exactly why it’s falling back to that single auto-generated class.

---

<div class="post-metadata">

**Author:** ![Toxite](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/toxite/32/123_2.png) [@Toxite](https://community.ultralytics.com/u/Toxite)\
**Post date:** [February 21, 2026, 3:26pm UTC](https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817/5 "2026-02-21T15:26:14Z")

</div>

The YAML file needs to be called `data.yaml`. You jeed to rename it. And remove `path` from the YAML.

---

<div class="post-metadata">

**Author:** ![dtzx](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/dtzx/32/1320_2.png) [@dtzx](https://community.ultralytics.com/u/dtzx)\
**Post date:** [February 24, 2026, 5:37am UTC](https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817/6 "2026-02-24T05:37:24Z")

</div>

@pderrenger @Toxite Thanks for your replies.

It looks like the platform is parsing YAML incorrectly, specifically for the string `?`. I verified this with a toy dataset of 1 image and `data.yaml`.

I do **not** get class labels with this:

```auto
train: train
names:
  0: x
  1: ?

```

But the following works – I finally got class labels. (@Toxite Interestingly, the platform seems happy to use even `some-random-name.yaml`.)

```auto
train: train
names:
  0: x
  1: '?' # it's fine if quoted

```

So, I think it’s just breaking on `?`. And, unfortunately, the platform gives no feedback for errors, even for a nonsense `data.yaml` I tried. This was actually why I wasn’t getting class labels earlier. In my real dataset, I used a class label `?` to mean _unknown_. Just quoting that fixed the problem.

Note that `?` is a valid string literal in YAML 1.1 and 1.2. _(Granted, YAML’s a nightmare of a format with a literal hundred-page spec. [ruudvanasseldonk: the-yaml-document-from-hell](https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell).)_

I am still unclear on the expected YAML structure. I could be misreading, but the docs [/datasets/obb/#dataset-yaml-format](https://docs.ultralytics.com/datasets/obb/#yolo-obb-format) and /platform/data/datasets/#preparing-your-dataset uses `images/train`, not `train/images`.

The OBB page also names the file `dota.yaml` and specifies a `path`. Is there a normative document describing the format that I should refer to?

Thanks again for your help.

---

<div class="post-metadata">

**Author:** ![Toxite](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/toxite/32/123_2.png) [@Toxite](https://community.ultralytics.com/u/Toxite)\
**Post date:** [February 24, 2026, 6:48am UTC](https://community.ultralytics.com/t/how-to-export-share-labels-for-annotation/1817/7 "2026-02-24T06:48:44Z")

</div>

> [@dtzx](#):
>
> I am still unclear on the expected YAML structure. I could be misreading, but the docs [/datasets/obb/#dataset-yaml-format](https://docs.ultralytics.com/datasets/obb/#yolo-obb-format) and /platform/data/datasets/#preparing-your-dataset uses `images/train`, not `train/images`.

Both works. Ultralytics currently uses `images/train`. `train/images` is legacy way for backwards compatibility with YOLOv5.

> [@dtzx](#):
>
> The OBB page also names the file `dota.yaml` and specifies a `path`. Is there a normative document describing the format that I should refer to?

`path` is only required if your YAML is in a different location than the `images` and `labels` folders. If the YAML is alongside the `images` and `labels` folder, it’s unnecessary.
