# Handle Large Payloads

**URL:** <https://community.n8n.io/t/handle-large-payloads/317758>\
**Category:** Questions\
**Tags:** bug:unconfirmed\
**Created:** [September 30, 2026, 10:32am UTC](https://community.n8n.io/t/handle-large-payloads/317758 "2026-09-30T10:32:43Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ethan\_Mitchell](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/ethan_mitchell/32/192585_2.png) [@Ethan\_Mitchell](https://community.n8n.io/u/Ethan_Mitchell)\
**Post date:** [September 30, 2026, 10:32am UTC](https://community.n8n.io/t/handle-large-payloads/317758/1 "2026-09-30T10:32:43Z")

</div>

Hello I have a workflow that receives large JSON payloads from an API, sometimes containing thousands of records with nested objects.  
The workflow works fine with smaller requests, but as the payload grows, memory usage increases significantly and workers can eventually become unstable.  
I’m considering storing the raw payload in PostgreSQL or object storage first, then processing it in smaller chunks instead of keeping everything inside the n8n execution.  
would you normally stream/process the data in batches, or store the payload first and let separate workflows process it?  
Also, how do you decide when a payload is large enough that it shouldn’t be passed through the entire workflow?

## Describe the problem/error/question

## What is the error message (if any)?

## Please share your workflow

```auto
(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

```

## Share the output returned by the last node

## Information on your n8n setup

- **n8n version:**
- **Database (default: SQLite):**
- **n8n EXECUTIONS\_PROCESS setting (default: own, main):**
- **Running n8n via (Docker, npm, n8n cloud, desktop app):**
- **Operating system:**

---

<div class="post-metadata">

**Author:** ![n8n](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/n8n/32/196425_2.png) [@n8n](https://community.n8n.io/u/n8n)\
**Post date:** [September 30, 2026, 10:33am UTC](https://community.n8n.io/t/handle-large-payloads/317758/2 "2026-09-30T10:33:26Z")

</div>

Hey @Ethan_Mitchell, while you wait for a response, here are some things that might help:

> **Suggested resources**
>
> _Automatically matched to your question._
> 
> **Docs:**
> 
> - [Fix memory issues](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#avoiding-out-of-memory-situations)
> 
> **Forum:**
> 
> - [Handle Large Data Sets in n8n Without Slowing Down Workflows](https://community.n8n.io/t/311229)
> - [Workflow Timeouts for Long-Running Processes in n8n](https://community.n8n.io/t/304748)
> - [Way to Handle Large File Processing in n8n Without Memory Issues](https://community.n8n.io/t/296021)

@Niffzy - you’ve helped with similar issues before, can you take a look?

_Automatically suggested by n8n’s community bot. It’s a pilot - [please share feedback here](https://community.n8n.io/t/pilot-forum-helper-bot/304669)._

---

<div class="post-metadata">

**Author:** ![Lopez](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/lopez/32/192785_2.png) [@Lopez](https://community.n8n.io/u/Lopez)\
**Post date:** [September 30, 2026, 10:38am UTC](https://community.n8n.io/t/handle-large-payloads/317758/3 "2026-09-30T10:38:54Z")

</div>

Hi @Ethan_Mitchell Store first, then process in chunks. That’s what n8n’s memory docs recommend.

1. **Intake:** Webhook → save the raw payload to Postgres/S3 → respond 200. Then start the processor with Execute Workflow (“Wait for Sub-Workflow Completion” off), or have a Schedule trigger pick up pending payloads.
2. **Processor:** read 200–500 records at a time and pass each batch to a sub-workflow that returns only a tiny result. Its memory is freed after every batch.

> **[Fix memory issues | Deploy | n8n Docs](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues)**

3. Turn off “Save successful executions” on the processor.

Rule of thumb: over a few MB or a few thousand items, store it and pass an ID instead. Each node keeps its own copy of the data.

---

<div class="post-metadata">

**Author:** ![Anshul\_Namdev](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/anshul_namdev/32/178229_2.png) [@Anshul\_Namdev](https://community.n8n.io/u/Anshul_Namdev)\
**Post date:** [September 30, 2026, 1:26pm UTC](https://community.n8n.io/t/handle-large-payloads/317758/5 "2026-09-30T13:26:45Z")

</div>

Hi @Ethan_Mitchell, the fetch needs to happen inside the batch workflow too. HTTP Request’s built-in pagination collects the pages before returning them, so adding Loop Over Items afterwards doesn’t remove that initial memory cost.

Pass a cursor into a sub-workflow, fetch one page with automatic Pagination off, process/save it, and return only the next cursor and a count. Keep Wait for Sub-Workflow Completion on in the parent loop so batches don’t pile up.

If the API only returns one huge JSON response, split it upstream into smaller objects or database rows. Saving it to S3 after n8n has parsed it won’t prevent that first memory spike.

There’s no universal MB or record-count cutoff. Test representative nested payloads in staging at your expected concurrency, measure peak worker RAM, and choose a batch size that leaves headroom below the worker’s limit.

---

<div class="post-metadata">

**Author:** ![Merrill](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/merrill/32/174822_2.png) [@Merrill](https://community.n8n.io/u/Merrill)\
**Post date:** [September 30, 2026, 4:35pm UTC](https://community.n8n.io/t/handle-large-payloads/317758/6 "2026-09-30T16:35:44Z")

</div>

For large payloads, the safest production pattern is:

**Store first → process in batches**

**Recommended approach**

1. **Webhook / HTTP Request** receives the payload

2. **Immediately store** the raw payload (PostgreSQL jsonb or S3/MinIO/object storage)

3. Return a quick 200 OK to the caller

4. Kick off a **separate processing workflow** (or the same workflow in a **later step) that:**

```
• Reads the payload in chunks

• Processes with **Split In Batches** (e.g. 50–200 records at a time)

• Does the real work

```

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/system/32/195824_2.png) [@system](https://community.n8n.io/u/system)\
**Post date:** [October 7, 2026, 4:35pm UTC](https://community.n8n.io/t/handle-large-payloads/317758/7 "2026-10-07T16:35:54Z")

</div>

Closed on October 7, 2026, 4:35pm UTC

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
