How to upload and download files on RunPod

To download files from a RunPod pod, open JupyterLab on port 8888, find the file in the file browser, right-click it and choose Download. On our templates 3 places matter: output/datasets/ for the Dataset Maker zip, AI Toolkit’s New Dataset screen on port 8675 for her training photos, and output/<job>/ for finished LoRAs. Do it before you terminate the pod; our RunPod for AI images guide explains why.

On this page
  1. Where are your files on the pod?
  2. How do you download files with JupyterLab?
  3. How do you upload files to a pod?
  4. Is there a faster way for big files?
  5. When do you have to download before it’s too late?
  6. What can go wrong?

Where are your files on the pod?

Each of our templates keeps its work on the pod’s volume disk at /workspace, so a stop and start doesn’t lose it. The table lists where every file you’ll upload or download actually lives and which port to open for it. Paths match the templates’ READMEs as of October 2026.

Template File Where it lives Open
Dataset Maker Your face photo (in) Uploaded in the Your face box in ComfyUI Port 8188
Dataset Maker Finished dataset (out) output/datasets/<name>.zip in ComfyUI’s folder Port 8888
LoRA trainer Her dataset (in) AI Toolkit’s New Dataset screen, from the unzipped folder. Or the zip in datasets/ inside /workspace/aitk; it unzips itself Port 8675 (or 8888 for the zip)
LoRA trainer Checkpoints and final LoRA (out) The job page in AI Toolkit (Queue → View all); on disk, output/<job>/ inside /workspace/aitk Port 8675, or 8888
LoRA trainer Helper log /workspace/aitk/aiempire.log Port 8888

AI Toolkit saves a checkpoint every 250 steps, named like <job>_000002500.safetensors, plus the final <job>.safetensors. The course’s 3000-step job sets Max Step Saves to Keep to 12 (AI Toolkit’s default keeps 4). You don’t need them all on your computer: video 3 downloads three, the final file, 2500 and 2000, and compares them. How is in how to test a LoRA.

The AI Empire Dataset Maker in ComfyUI: face upload, body type, trigger word, hair and eyes, engine, and a test photo of the result.
The Dataset Maker in ComfyUI. The finished 50-image zip lands in output/datasets/, ready to download from JupyterLab.

How do you download files with JupyterLab?

Connect to port 8888, browse to the file, right-click, Download. JupyterLab’s own docs say any file can be downloaded that way. Folders are the catch: download works on files. So for a folder of outputs, make a zip in the terminal first, then download that one file.

  1. Open JupyterLab. On the Pods page, click Connect, then the HTTP link for port 8888. The address looks like https://<pod-id>-8888.proxy.runpod.net.
  2. Log in. Use the JUPYTER_PASSWORD you set when you deployed. If you get a “Token authentication is enabled” screen instead, open the web terminal, run jupyter server list and paste the part after token= (RunPod docs).
  3. Browse to the file in the left file browser, using the table above.
  4. Right-click it and choose Download. Your browser saves it like any other download.
  5. For a folder, zip it first. Open a terminal from the JupyterLab launcher, cd into the folder above it, and run:
python3 -m zipfile -c results.zip yourfolder/

That uses Python’s built-in zip tool, so you don’t need to install anything. Then download results.zip.

The Dataset Maker does the zipping for you: the whole 50-image set with its caption files is one <name>.zip. Its README also gives a direct link through ComfyUI, which on RunPod looks like https://<pod-id>-8188.proxy.runpod.net/view?filename=<name>.zip&subfolder=datasets&type=output.

How do you upload files to a pod?

Most files go in by dragging them onto JupyterLab’s file browser, or with the Upload Files button at the top of it. They land in whichever folder is open. Her training dataset is the exception: video 3 of our course uploads it in AI Toolkit’s own New Dataset screen, straight from the unzipped folder.

  1. Unzip the Dataset Maker zip on your computer.
  2. Open AI Toolkit from the pod’s Connect menu (port 8675).
  3. Click New Dataset, give it a name and click Create.
  4. Drag in everything from the unzipped folder: the photos and their .txt captions, in one go.
  5. Look through it. Every photo should be her. Then set up the training job.

The alternative: in JupyterLab, open datasets/ inside /workspace/aitk and drop the zip there. The template unzips it.

A few other uploads have their own way in:

  • Your face photo for the Dataset Maker goes in through the Your face box in ComfyUI on port 8188, not JupyterLab.
  • Her LoRA files for a generator go into models/loras in JupyterLab. Three files are about 1.5 GB, so stay on the tab until the upload finishes, then press R in ComfyUI.
  • Model files for ComfyUI go into the matching folder under ComfyUI/models/, then refresh ComfyUI. If a workflow still can’t find them, see ComfyUI missing models.

The checkpoints folder trap. JupyterLab can’t open any folder named exactly checkpoints: clicking it does nothing, because Jupyter treats the name as reserved. ComfyUI has one at models/checkpoints. RunPod’s docs give three ways round it: drop files onto the folder anyway (it accepts them), rename it in the terminal with mv checkpoints checkpoint and back again when you’re done, or copy files in from the terminal with cp.

Is there a faster way for big files?

Yes, but you rarely need it for this work. A 50-image dataset and a LoRA file move fine through JupyterLab. When you’re moving many gigabytes, or syncing the same folder often, RunPod supports four other methods, and two of them need SSH set up first. Pick by file size and how often you transfer.

Method Good for Setup
runpodctl send / receive Quick small to medium files, with a one-time code Preinstalled on pods; install it on your computer
SCP Single files and folders, any size SSH access to the pod
rsync Large folders, repeat syncs (only sends what changed) SSH, plus rsync on both ends (Linux or WSL)
Cloud Sync Backups to S3, Google Cloud, Azure, Backblaze or Dropbox Your cloud account

Source: RunPod’s transfer files docs, checked 2 Oct 2026.

When do you have to download before it’s too late?

Before you terminate, and before your balance runs out. Terminating deletes everything that isn’t on a network volume. If your RunPod balance hits $0, RunPod terminates pods without a network volume and the data can’t be recovered (RunPod billing docs, checked 2 Oct 2026).

After every session: download the dataset zip or the LoRA files, make sure they open on your computer, then stop and terminate. Why terminate rather than just stop is covered in the stop vs terminate section of our RunPod guide. What happens at $0, and how to get a warning first, is in how RunPod billing works.

What can go wrong?

  • The dataset zip has fewer than 50 photos. With a paid engine, RunPod’s API may have refused some photos: the Dataset Maker skips refused photos after one retry at the end. Open the zip and count: images and .txt captions should match. Run Whole dataset again; it skips the photos already done.
  • You downloaded a folder and got nothing. JupyterLab downloads files. Zip the folder first.
  • A stopped pod comes back with 0 GPUs. Your files are still there. Start it with zero GPUs and copy them off through the terminal or Cloud Sync; the JupyterLab button won’t work without a GPU attached (RunPod docs).
  • JupyterLab is open to anyone. You skipped JUPYTER_PASSWORD. Anyone with your pod’s URL can browse and download your files. Set it before you deploy.

Questions people ask

How do I download a whole folder from RunPod?
Zip it first. Open a terminal in JupyterLab, run python3 -m zipfile -c results.zip yourfolder/ and download the zip with right-click, Download. For very large folders, use runpodctl, SCP or rsync instead.
Where is my LoRA after training on RunPod?
In AI Toolkit on port 8675: Queue, View all, open the finished job and download from there. On disk it's in output// inside /workspace/aitk. The course's job saves every 250 steps and keeps 12, plus the final file. Video 3 downloads three: the final file, 2500 and 2000.
Why can't I open the checkpoints folder in JupyterLab?
JupyterLab treats the name checkpoints as reserved, so clicking the folder does nothing. You can still drag files onto it, rename it from the terminal while you work, or copy files in with the terminal.
Do I need SSH to move files to RunPod?
No. JupyterLab's upload and download buttons are enough for datasets and LoRA files. SSH, SCP and rsync help when you move many gigabytes or sync folders often.

Read next