Importing previous annotations on images from local storage

Hi! I have a project for image annotations (polygons and markers). I have annotated locally several images on one computer and exported the annotations using the UI into a json file. Now I want to load this file from another computer and continue the annotations. All the data was uploaded from a local directory using the UI (in both computers).

As I know, when you upload images through the Label Studio UI, they get stored with internal upload IDs. Those IDs won’t match on a second machine, so your exported JSON still points at old upload IDs and the images won’t appear. The reliable way to migrate both images and annotations is to host your media in a Source Storage (Local or Cloud) and import your JSON against that.

  1. Export your annotations
  • In your original project, go to Data Manager → Export and save the Label Studio JSON.
  • This file will contain your polygon and marker annotations under "annotations" (or "predictions").
  1. Gather your images from the old instance
  • If you already uploaded via UI, Label Studio stores them under ~/.local/share/label-studio/media/upload/<project-id>/.
  • Copy that entire folder (or all image files) to your new machine.
  1. Choose and configure a Source Storage on the new machineLocal file storage
  • Place the images in a directory, e.g. /home/user/images/myproject/.
  • In Label Studio, open Project Settings → Cloud Storage and add a Local files storage:
    • Storage Title: e.g. images
    • Absolute local path: /home/user/images/myproject
    • Disable Treat every bucket object as a source file
    • (Optionally) enable Use pre-signed URLs
    • Click Check ConnectionSaveCloud storage (S3, GCS, Azure)
  • Upload the images into your bucket under a prefix (e.g. s3://my-bucket/myproject/).
  • In Label Studio, add that bucket as a Source Storage, disable “Treat every bucket object…,” enable pre-signed URLs, and save.
  1. Fix the JSON to reference your storage-hosted images
  • Open the exported JSON and remove any "file_upload" fields.
  • Under each task, replace the data reference with your storage URL.
    • For Local storage, use:
"data": {
  "image": "/data/local-files/?d=path/to/image.jpg"
},
"annotations": [ … ]

where path/to/image.jpg is the path relative to your Absolute local path.
• For S3/cloud, use the s3://… URL your JSON already contains (Label Studio will swap it for a pre-signed link).
5. Import the modified JSON

  • In your new project go to Data Manager → Import, select the edited JSON, and upload.
  • Label Studio will create tasks that pull images from your Source Storage and pre-fill all polygon/marker annotations.
  1. Resume annotation
  • Open any task in the labeling stream—you’ll see your shapes and markers exactly as before, and you can continue.

Tip: If you ever need Local Storage to serve files, start Label Studio with:

export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/home/user/images
label-studio start

By switching from UI uploads to Source Storage references and adjusting your JSON accordingly, you ensure your annotations and images stay in sync across machines.