# Usage Limits
Source: https://www.inngest.com/docs/usage-limits/inngest

We have put some limits on the service to make sure we provide you a good default to start with, while also keeping it a good experience for all other users using Inngest.

Some of these limits are customizable, so if you need more than what the current limits provide, please [contact us][contact] and we can update the limits for you.

## Functions

The following applies to `step` usage.

### Sleep duration

Sleep (with `step.sleep()` and `step.sleepUntil()`) up to a year, and for free plan up to seven days. Check the [pricing page](/pricing) for more information.

### Timeout

Each step has a timeout depending on the hosting provider of your choice ([see more info][provider-docs]), but Inngest supports up to `2 hours` at the maximum.

### Concurrency <Tag>Upgradable</Tag>

Check your concurrency limits on the [billing page](https://app.inngest.com/billing). See the [pricing page](https://www.inngest.com/pricing) for more info about the concurrency limits in all plans.

### Payload Size

The limit for data returned by a step is `4MB`.

### Function run state size

Function run state cannot exceed `32MB`. Its state includes:
- Event data (multiple events if using batching)
- Step-returned data
- Function-returned data
- Internal metadata (_small - around a few bytes_)

### Number of Steps per Function

The maximum number of steps allowed per function is `1000`.

<Callout>
  ⚠️
  This limit is easily reached if you're using `step` on each item in a loop.
  Instead we recommend one or both of the following:
  - Process the loop within a `step` and return that data
  - Utilize the [fan out][fanout-guide] feature to process each item in a separate function
</Callout>

## Events

### Name length

The maximum length allowed for an event name is `256` characters.

### Request Body Size <Tag>Upgradable</Tag>

The maximum event payload size is dependent on your billing plan. The default on the Free Tier is `256KB` and is upgradable to `3MB`. See [the pricing page](/pricing?ref=docs-usage-limits) for additional detail.

### Number of events per request <Tag>Customizable</Tag>

Maximum number of events you can send in one request is `5000`.
If you're doing fan out, you'll need to be aware of this limitation when you run `step.sendEvent(events)`.

<CodeGroup>
```ts {{ title: "TypeScript" }}
// this `events` list will need to be <= 5000
[{name: "<event-name>", data: {}}, ...];

await step.sendEvent("send-example-events", events);
// or
await inngest.send(events);
```

```go {{ title: "Go" }}
// this `events` list will need to be <= 5000
events := []inngestgo.Event{{Name: "<event-name>", Data: {}}}

ids, err := client.SendMany(ctx, events)
```

```python {{ title: "Python" }}