---
title: "Pixeltable + Label Studio: annotation UI vs the production table"
description: "Use Label Studio for annotators and QA. Use Pixeltable for versioned multimodal pipelines. Native pxt.io Label Studio APIs were removed in v0.6.7; export JSON and insert it."
keywords:
  - Pixeltable and Label Studio
  - Label Studio integration
  - data annotation workflow
  - computer vision data
  - multimodal AI data
url: "https://pixeltable.com/compare/pixeltable-vs-labelstudio"
---

# Pixeltable vs Label Studio

Label Studio is the annotator UI, QA, and reviewer workflow. Pixeltable is the versioned multimodal pipeline those labels feed. They do not replace each other. There is no Pixeltable Label Studio package anymore; export JSON and insert it.

## Summary

### Pixeltable

- Video, frames, detections, and labels as tables
- Computed columns run models on insert
- Versioned rows you can query after review
- No annotator UI, consensus, or project roles

### Label Studio

- Custom labeling UI and taxonomies
- Annotators, reviewers, and QA workflows
- ML-assisted pre-labels you already use
- Not a compute engine or embedding index

## Comparison

| Feature | Pixeltable | Label Studio |
| --- | --- | --- |
| Job | Store media, run models, version the result | Collect and QA human labels |
| Annotator UI | None — dashboard is for tables, not labeling tasks | Configurable views, hotkeys, and project UX |
| QA and roles | Data versioning; not annotator consensus | Reviewers, agreement, and project permissions |
| Downstream compute | Iterators, UDFs, indexes on the labeled rows | Export; processing happens in something else |
| How they join now | Insert exported JSON into a Json column | Projects, tasks, and export APIs |

## Export, then insert

Label Studio owns the project and the XML config. Pixeltable owns frames and the Json those tasks become. Apply Pixeltable with pxt schema update app.py annotation.

### Pixeltable

```python
import pixeltable as pxt
from pixeltable.functions.video import frame_iterator
from pixeltable.functions.huggingface import detr_for_object_detection

TableModel = pxt.model_base()

class Videos(TableModel, name='videos'):
    video: pxt.Video

class Frames(
    TableModel,
    name='frames',
    base=Videos,
    iterator=frame_iterator(Videos.video, fps=1),
):
    detections = detr_for_object_detection(
        frame, model_id='facebook/detr-resnet-50'
    )

class Labels(TableModel, name='labels'):
    task_id: pxt.String
    frame_url: pxt.String
    annotation: pxt.Json
    reviewed: pxt.Bool

# pxt schema update app.py annotation
# After Label Studio export:
labels = pxt.get_table('annotation.labels')
labels.insert(exported_tasks)
```

### Label Studio

```python
from label_studio_sdk import Client

ls = Client(url='http://localhost:8080', api_key=API_KEY)
label_config = '''
<View>
  <Image name="image" value="$image"/>
  <RectangleLabels name="label" toName="image">
    <Label value="Person"/>
  </RectangleLabels>
</View>
'''
project = ls.start_project(title='Video frames', label_config=label_config)
project.import_tasks([{'image': url} for url in frame_urls])
# Annotators and reviewers work in the Label Studio UI.
exported_tasks = project.export_tasks()
# Pixeltable has no create_label_studio_project; insert this JSON.
```

## When to choose Pixeltable

- **After the labels exist**: Frames, pre-detections, embedding indexes, and training export. Incremental recompute when a new export lands.
- **You already have a labeling tool**: Keep it. Pixeltable is the system of record downstream, not a second labeling UI.

## When to choose Label Studio

- **Humans have to agree on boxes**: Taxonomies, reviewer workflows, custom interfaces. Pixeltable will not do this.
- **ML-assisted labeling in that UI**: Pre-annotation backends and active learning inside Label Studio. Send model output in; do not expect Pixeltable to host the annotators.

## FAQ

### Does Pixeltable replace Label Studio?

No. Label Studio is human annotation and QA. Pixeltable stores media and runs the pipeline those labels feed.

### How do I connect them now?

Create the Label Studio project with its SDK and XML config. Export tasks. Insert into a Pixeltable table with a Json column. Older blogs that call pxt.io.sync_label_studio_project are wrong — that symbol never shipped.

### Should I wait for the integration to come back?

Do not block a workflow on it. Export/import is the supported join on current Pixeltable.

