Pixeltable + Label Studio
Updated
Which is better, Pixeltable or Label Studio?
It depends. Label Studio belongs when humans have to agree on boxes: taxonomies, reviewer workflows, custom interfaces. Pixeltable belongs after the labels exist. Pixeltable's Label Studio integration is deprecated; v0.6.7 removed the native APIs. Export JSON and insert it. Keep the labeling tool. As of 2026-10-27.
Deprecated: Pixeltable's Label Studio integration is deprecated. 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. Export JSON and insert it.
pip install 'pixeltable[serve]'Different jobs
| Side | Pixeltable | Label Studio |
|---|---|---|
| At a glance |
|
|
Human QA vs the production table
Deprecated: Pixeltable v0.6.7 removed pxt.io.create_label_studio_project and table.sync() (PR #1436). The join is Label Studio's export and a Json column.
| 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
import pixeltable as pxtfrom pixeltable.functions.video import frame_iteratorfrom pixeltable.functions.huggingface import detr_for_object_detectionTableModel = pxt.model_base()class Videos(TableModel, name='videos'):video: pxt.Videoclass 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.Stringframe_url: pxt.Stringannotation: pxt.Jsonreviewed: pxt.Bool# pxt schema update app.py annotation# After the Label Studio JSON export:import jsonlabels = pxt.get_table('annotation.labels')with open('label_studio_export.json') as f:labels.insert([{'task_id': str(t['id']), 'frame_url': t['data']['image'], 'annotation': t, 'reviewed': False}for t in json.load(f)])
Label Studio
from label_studio_sdk import Clientls = 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.# Export the tasks from the Label Studio UI (Project > Export > JSON) to label_studio_export.json.
When each belongs
Use Pixeltable when
- 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.
Use Label Studio when
- 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.
Making the right choice
Deprecated: Pixeltable's Label Studio integration
- Deprecated: Pixeltable's Label Studio integration is deprecated. Pixeltable v0.6.7 removed external stores and Label Studio (PR #1436). pxt.io.create_label_studio_project and table.sync() are not in current Pixeltable.
- Create the project with the Label Studio SDK, export tasks, and insert the JSON into a Pixeltable Json column.
- docs.pixeltable.com may still show the old howto; do not copy it.
- There is no pixeltable[labelstudio] extra. Export JSON. Insert Json.
Frequently asked questions
Is Pixeltable's Label Studio integration still supported?
Does Pixeltable replace Label Studio?
How do I connect them now?
Should I wait for the integration to come back?
More comparisons
- Three-way compare: Pixeltable vs Supabase vs Convex
- 11 free cloud database & compute tiers compared
- Pixeltable vs Neon
- Supabase alternative: Pixeltable vs Supabase
- Pixeltable vs Prisma Postgres
- Pixeltable vs Turso
- Pixeltable vs Convex
- Pixeltable vs Modal
- Pixeltable vs Cloudflare
- Pixeltable vs Railway
- Pixeltable vs Render
- Pixeltable vs Fly.io
- Pixeltable vs Cohesivity
- Pixeltable vs LangChain
- Pixeltable vs LlamaIndex
- Pixeltable vs LanceDB
- Pinecone alternative: Pixeltable vs Pinecone
- Pixeltable vs pgvector
- Pixeltable vs Weaviate
- Pixeltable vs Twelve Labs
- Pixeltable and Mixpeek
- Pixeltable vs Daft
- Pixeltable vs Airflow
- Pixeltable vs Voxel51
Labels from the tool that does labeling.
Declare tables in app.py. Apply with pxt schema update. Insert exported annotations as Json. Do not look for a Pixeltable Label Studio extra.