How to manage large files within n8n cloud

Describe the problem/error/question

I am building a high-volume video automation for a client that processes 4K field footage (approx. 200MB - 500MB per file). My workflow is hosted on n8n Cloud.

When a video is uploaded to Google Drive, I need to send it to AssemblyAI for transcription. However, I am stuck in a “memory vs. quota” loop:

  • The URL Method fails: Because the files are over 100MB, Google Drive serves an HTML virus scan warning page instead of the raw file. AssemblyAI tries to transcribe the HTML, resulting in a “File does not contain audio” error.
  • The Download/Upload Method fails: Attempting to download the binary into n8n to use the AssemblyAI “Upload” operation causes the execution to crash with an “n8n may have run out of memory” error.
  • The HTTP Streaming Method fails: Using an HTTP Request to stream the binary from Google Drive (?alt=media) to AssemblyAI (/v2/upload) results in a Timeout error, even with increased timeout settings.

Question: How can I hand off a 250MB+ file from Google Drive to an external API (AssemblyAI) on n8n Cloud without hitting memory limits or triggering Google’s virus scan HTML intercept?

What is the error message (if any)?

  • AssemblyAI: "Transcoding failed. File does not appear to contain audio. File type is text/html"
  • n8n Node: "n8n may have run out of memory while running this execution."

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: cloud version 2.14.2
  • Database (default: SQLite): SQlite
  • n8n EXECUTIONS_PROCESS setting (default: own, main): default
  • Running n8n via (Docker, npm, n8n cloud, desktop app): -
  • Operating system: Windows 11

Hi @bandsaw.ai Welcome!
Everything you are doing is right, just make sure to either upgrade your n8n cloud to business plan or enterprise, OR consider self hosting and getting yourself the max capacity VPS, as you are gonna move a huge amount of data between flows, so just make you have the most powerful machine.

And make sure to use Sub workflows and so the load gets diluted easily, and also try to not pass binary files directly here and there, pass the URI and then work along with it if possible.

Yeah so n8n Cloud has hard memory limits and 250MB+ files are just going to blow past that every time, theres no setting you can tweak to fix it. Your best bet is to not pull the binary through n8n at all — spin up a small Google Cloud Function or AWS Lambda that takes the Drive file ID, fetches the file directly (you can append &confirm=t to the download URL to bypass that virus scan HTML page) and streams it straight to AssemblyAI’s /v2/upload endpoint, hten just return the upload URL back to n8n so your workflow can continue with the transcription. That way n8n only handles the lightweight API calls and orchestration, not the actual file bytes. If you want to skip the serverless route entirely, self-hosting n8n is the other option since you can bump NODE_OPTIONS=--max-old-space-size and use disk instead of memory.

I initially planned on using Google Drive, but I’ve pivoted to Dropbox for this workflow, and it has solved the memory issues I was seeing earlier.

I switched the logic to a “Pass-through” strategy using Dropbox’s API. Instead of n8n downloading the file, it now just generates a direct “bridge” for AssemblyAI to use.

The Technical Setup:

  • API Call: I’m using the Dropbox files/get_temporary_link endpoint via an HTTP Request node.

  • The Result: This gives me a raw direct download URL.

  • The “Hand-off”: I pass that URL string into the AssemblyAI node. AssemblyAI pulls the 800MB file directly from Dropbox’s servers.

  • The Result: My n8n RAM usage stayed flat even with a massive 800MB file!

A Note on Auth: Since the standard n8n Dropbox node doesn’t allow for custom scopes like sharing.write, I had to use a Generic OAuth2 credential and add token_access_type=offline to ensure the connection stays alive long-term.

I’m still stress-testing the OAuth refresh token to make sure it doesn’t expire, but the memory hurdle is officially cleared!

That pass-through architecture is 100% the right way to handle massive files in n8n. Downloading 800MB binaries into the memory is just asking for a crash, so generating that bridge URL is a massive win.

That custom OAuth2 setup is exactly where things get tricky in production though. Refresh tokens dropping or expiring is one of the most common causes of silent failures I see when people move away from standard nodes to custom HTTP requests. If that token fails to refresh in a couple of weeks, the workflow might just quietly fail to generate the temp link and leave your AssemblyAI jobs hanging.

Since you are running this on a cloud setup, are you routing your error trigger outputs to a dedicated monitoring channel to catch those token drops, or just keeping an eye on the execution logs for now?

Thank you for your warning

It seems useful to advise people to be gentle with AI responses.

I actually use AI daily because I recognize that I don’t know everything, so I use it primarily to learn and to teach.

To give you an idea of ​​my situation, I don’t speak English, so when I see a question, I translate it into Portuguese, then check if I can help immediately. If I can’t, I research the error, check if it makes sense within my knowledge, then translate it into English, and then post it in the community.

I could easily configure a program to make the response more humanized (or appear more human-like), and that would be really useful. If you observe, there are responses that are well-aligned with human formatting, well-punctuated, with impeccable organization in their line of reasoning. Could it be that an AI wrote it? It might be, or it might be that the person really knows how to write excellently.

I can configure the AI ​​to make grammatical errors or misspell words. I can make various configurations to pass through human eyes and even bypass AI-detection algorithms.

I won’t do any of that, because when someone uses AI in their answer, I admire the way they used it. I see that they researched the question that was posted, formatted the answer in a way that the other person understands, and then posted it.

Don’t be bothered if I use AI or how much I use it.

I recommend you be bothered if you notice that someone simply copied the question, pasted it into ChatGPT, took the answer, and pasted it into the community.

I read the community rules. I imagine you read them too.

I copied and pasted the rules below:

Rules
Do not use AI to generate or format your answers (we cannot distinguish the difference, therefore both practices are prohibited).

Participate in a conversation only if you have something substantial to contribute, such as a genuine attempt to solve the problem or a request for clarification when essential information is missing.

Don’t engage in “misappropriation of solutions” - related to the previous point, don’t repeat solutions or add minimal information to try to attribute the solution to yourself.

Play fair. This is subjective, but you know when you’re not playing fair. :wink:

Note that the first point PROHIBITS the use of AI to generate or format answers.

So you see that I haven’t broken any rules, because I don’t use AI simply to generate answers. I’ve been working on it and I use AI to enrich my studies, enrich the possibilities of solving doubts, verify points of conflict, align thoughts, so that I can then have something that I understand to be useful for the community and post it in the community.

I don’t use it to format questions, that is, to take something from a website, ask the AI ​​to make it look nice, and then post it.

And I respect all the other rules, I simply respect all the rules, exactly as the rules ask.

I hope I have clarified your doubts, or those of anyone else who reads and has questions about my posts, to make it clear how I answer questions and the care I take in doing so.

I want to make it clear that I set aside time each day, just as others do, to access the community, see the questions, study, answer them, and be helpful in some way.

Thank you for your time and all the best

.