---
title: "S3 limitations"
sidebar_label: "Limitations"
sidebar_position: 4
description: "What API entity and request limitations exist in S3"
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import {CustomTable} from '@selectel/docux/components'
import {TabItemLabel} from '@selectel/docux/components'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'

# S3 limitations

We recommend uploading objects larger than 1 GB using [segmented upload](/s3/objects/upload-object.mdx#segmented-upload) via [S3 API](/api/object-storage-s3/) or [Swift API](/api/object-storage-swift/).

[Storage limits](/s3/manage/limit.mdx) and [bucket limits](/s3/buckets/limits.mdx) are set by you.

## S3 entity limitations \{#s3-entity-limits}

<Tabs queryString="entity">
  <TabItem value="buckets" default>
    <TabItemLabel>
      Buckets
    </TabItemLabel>

    <CustomTable>
      <table data-layout-fixed>
        <tbody>
          <tr>
            <th>Maximum number of buckets in a project</th><td>2 000 `*`</td>
          </tr>

          <tr>
            <th>Maximum number of buckets with Virtual-Hosted addressing in a project</th><td>100 ` **` (within 2 000)</td>
          </tr>

          <tr>
            <th>Maximum bucket name length</th><td>128 UTF-8 characters</td>
          </tr>

          <tr>
            <th>Maximum Bucket Policy size</th><td>20 KB</td>
          </tr>

          <tr>
            <th>Maximum number of objects in a bucket</th><td>Unlimited</td>
          </tr>
        </tbody>
      </table>
    </CustomTable>

    `*` The control panel displays the first 1000 buckets. If there are more buckets, you can view the full list via API.

    ` **` Can be increased upon request.
  </TabItem>

  <TabItem value="objects">
    <TabItemLabel>
      Objects
    </TabItemLabel>

    <CustomTable>
      <table data-layout-fixed>
        <tbody>
          <tr>
            <th>Maximum object size</th><td>50 TB</td>
          </tr>

          <tr>
            <th>Maximum object name length</th><td>1024 UTF-8 characters</td>
          </tr>

          <tr>
            <th>Minimum data size for a single upload request</th><td>0 bytes</td>
          </tr>

          <tr>
            <th>Maximum data size for a single upload request</th><td>5 GB</td>
          </tr>

          <tr>
            <th>Minimum part size for multi-part upload</th><td>1 byte</td>
          </tr>

          <tr>
            <th>Maximum number of parts for multi-part upload</th><td>10 000</td>
          </tr>
        </tbody>
      </table>
    </CustomTable>
  </TabItem>

  <TabItem value="headers">
    <TabItemLabel>
      Headers
    </TabItemLabel>

    <CustomTable>
      <table data-layout-fixed>
        <tbody>
          <tr>
            <th>Maximum size of all headers/metadata per account/bucket/object in the request body</th><td>8 KB</td>
          </tr>

          <tr>
            <th>Maximum size of all headers/metadata of the type `X-Account-Meta-$Name`, `X-Container-Meta-$Name`, `X-Object-Meta-$Name`</th><td>4 KB</td>
          </tr>

          <tr>
            <th>Maximum number of headers per account, bucket, or object</th><td>90</td>
          </tr>

          <tr>
            <th>Maximum header name length</th><td>64 UTF-8 characters</td>
          </tr>

          <tr>
            <th>Maximum number of characters in a header value</th><td>256 UTF-8 characters</td>
          </tr>

          <tr>
            <th>Maximum total header size</th><td>320 UTF-8 characters (64 characters + 256 characters)</td>
          </tr>
        </tbody>
      </table>
    </CustomTable>
  </TabItem>
</Tabs>

## API request limitations \{#api-requests-limits}

The limits are specified for a single bucket. If your load profile exceeds these limits, we recommend distributing the load across multiple buckets at a rate of no more than 250 requests per second (RPS) per bucket.

If you exceed the limit, the server will return a response with the `429 Too Many Requests` status code and the `Rate Limit exceeded.` message.

<Tabs queryString="api">
  <TabItem value="S3 API" default>
    <TabItemLabel>
      S3 API
    </TabItemLabel>

    <CustomTable>
      <table>
        <thead>
          <tr>
            <th>Request type</th><th>Limit (requests per second)</th><th>Server message</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <th>All requests</th><td>2 000</td><td>Too many authorized requests</td>
          </tr>

          <tr>
            <th>GET + HEAD</th><td>1 000</td><td>Too many GET requests</td>
          </tr>

          <tr>
            <th>POST</th><td>200</td><td>Too many POST requests</td>
          </tr>

          <tr>
            <th>PUT</th><td>300</td><td>Too many PUT requests</td>
          </tr>

          <tr>
            <th>DELETE</th><td>300</td><td>Too many DELETE requests</td>
          </tr>
        </tbody>
      </table>
    </CustomTable>
  </TabItem>

  <TabItem value="Swift API">
    <TabItemLabel>
      Swift API
    </TabItemLabel>

    <CustomTable>
      <table data-sticky>
        <thead>
          <tr>
            <th>Request type</th><th>Limit (requests per second)</th><th>Server message</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <th>All requests</th><td>2 000</td><td>Too many authorized requests</td>
          </tr>

          <tr>
            <th>GET + HEAD</th><td>1 000</td><td>Too many GET requests</td>
          </tr>

          <tr>
            <th>POST</th><td>300</td><td>Too many POST requests</td>
          </tr>

          <tr>
            <th>PUT (without X-Copy-Form)</th><td>300</td><td>Too many PUT requests</td>
          </tr>

          <tr>
            <th>PUT (with X-Copy-Form)</th><td>200</td><td>Too many PUT requests</td>
          </tr>

          <tr>
            <th>COPY</th><td>200</td><td>Too many COPY requests</td>
          </tr>

          <tr>
            <th>DELETE</th><td>300</td><td>Too many DELETE requests</td>
          </tr>
        </tbody>
      </table>
    </CustomTable>
  </TabItem>
</Tabs>

<Formbricks />
