# wrangler r2 object put failed: entity too large

## TL;DR

The object exceeds the single-put size limit. Use multipart upload for large objects: initiate, upload parts, complete. Single PUT is for small objects; multipart is the large-object path.

```text
wrangler r2 object put failed: entity too large
```

## Steps

1. Check the object size against the single-put limit.
   Expected: The object is too big for one PUT.

2. Switch to multipart: create the upload, send parts (5MB+ each except the last), complete it.
   Expected: The parts assemble server-side.

3. Verify the assembled object's size and etag.
   Expected: The object is whole.

4. For wrangler CLI uploads, check if the version supports multipart or switch to the API/SDK.
   Expected: The tooling matches the need.

5. Stream uploads instead of buffering the whole object in memory.
   Expected: Memory stays flat.

## When to use

- R2 puts fail with entity too large
- uploading large files
- single PUT of big objects

## When not to use

- the object is small (check the actual size sent)
- the error is on metadata (different limit)
- using presigned URLs (the same limits apply)

## Tool compatibility

- wrangler
- Cloudflare R2
- S3-compatible multipart

## Variant phrasings

- "r2 entity too large"
- "r2 object put too large"
- "r2 multipart upload"

## Why it happens

Single PUTs have a size cap; large objects must go multipart. The cap exists because a single request cannot reliably carry gigabytes. Multipart also gives resume: a failed part retries without re-sending the whole object.

## Edge cases

- parts have a minimum size (except the last); tiny parts fail
- aborted multipart uploads leave parts billed; clean them up
- the completion call assembles in part-number order; number correctly

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_ZEgESk4SAm9ad2-K1l-VkQ
