# wrangler versions upload failed: version already exists

## TL;DR

The version id was already uploaded; versions are immutable. Bump the version (or let wrangler generate one) and re-upload. Re-uploading the same version is never allowed.

```text
wrangler versions upload failed: version already exists
```

## Steps

1. Check how the version id is generated: hardcoded, from git, or auto.
   Expected: The collision source is found.

2. Bump or regenerate the version id.
   Expected: It is unique.

3. Re-run the upload.
   Expected: It succeeds.

4. Make version ids unique by construction (timestamp, commit SHA).
   Expected: Collisions stop.

5. List existing versions to confirm the namespace state.
   Expected: No surprises remain.

## When to use

- version upload fails as already exists
- version ids are hardcoded
- re-running a failed pipeline

## When not to use

- the version genuinely is new (check for a quoting/whitespace issue)
- using plain deploy (versions are a separate feature)
- the error is on a different resource (read it)

## Tool compatibility

- wrangler
- Workers Versions

## Variant phrasings

- "wrangler versions upload already exists"
- "version already exists workers"
- "duplicate version upload"

## Why it happens

Versions are immutable snapshots; the id is the identity. Re-running a pipeline that hardcodes the version re-uploads the same id and fails. Unique-by-construction ids (commit SHA, timestamp) make re-runs safe.

## Edge cases

- the immutability is the point; do not work around it by deleting versions
- failed pipeline re-runs are the usual collision source; make ids re-run-safe
- gradual rollouts reference versions; keep the mapping

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst__stHfmMefliQ0fGzgCr5pQ
