Way to Handle Large File Processing in n8n Without Memory Issues

Hi everyone,
I’m building a workflow in n8n that processes large files (CSV, PDFs, images), and I’m starting to hit memory/performance problems when the files get big.
Current flow:Webhook → Download File → Extract/Transform → Upload Result
Problems I’m seeing:
• High memory usage during execution
• Workflow slows down or crashes on large files
• Binary data stays in memory too long
• Retries reprocess the whole file again
I have try to:
• Splitting files into chunks
• Streaming instead of loading entire files
• Saving temporary files externally (S3/R2/local storage)
• Breaking the workflow into smaller stages

For people handling large files in production with n8n:

•	What’s the best architecture to avoid memory issues?
•	Is it better to store files externally and only pass references/URLs between workflows?
•	Any recommended patterns for chunking or resumable processing?

What is the error message (if any)?

Please share your workflow

(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:

Hi @Greg_John For large files, the best approach is usually to avoid keeping the whole file in memory during the workflow.

Upload/Download File → Store externally → Process in chunks → Save result

Try this: Store files in S3/R2/local storage and pass only the file URL/path between nodes
Process large files in small chunks/batches instead of all at once
Split long workflows into smaller stages
Save progress/checkpoints so retries don’t restart everything

This will help you to Lower memory usage
More stable workflows
Easier retries
Better performance with large files

Thanks @Niffzy