Skip to content

Transfer Capacity

Lenzeye is built for volume — thousands of files, hundreds of gigabytes, in a single session.


Validated Capacity (Production)

Limit Value Notes
Single session files 2,630+ validated No upper limit enforced
Single session duration 6h 56min No timeout
Single session data 250 GB+ Limited only by storage plan
Single file size No hard limit Tested beyond 50 GB
Part size 10 MB Fixed chunk size for multipart
Concurrent uploads (plain) Browser-dependent No server-side limit for presigned path
Concurrent encrypted uploads 4 simultaneous Bounded by BoundedSemaphore(4)

How Capacity Scales

Lenzeye's architecture is designed so that capacity is limited by storage plan, not by the server:

  • Plain uploads go browser → S3 directly. Server only handles metadata. No server-side bottleneck.
  • Encrypted uploads pass through the server for encryption. The BoundedSemaphore(4) caps concurrent encryption threads at 4 to bound memory, but queues additional requests rather than rejecting them.
  • S3 Multipart supports up to 10,000 parts per object. At 10 MB each, that's 100 GB per file maximum.

Storage Plan Limits

Plan Storage Limit
Free 25 GB
Paid Higher (plan-dependent)

Storage is checked before upload begins — if your storage is full, the upload is blocked before any data is transferred.


Concurrent Users

The Gunicorn configuration (1 worker, 6 threads) supports 6 concurrent HTTP connections. For upload-heavy workloads:

  • Each plain upload thread is lightweight (just generating presigned URLs)
  • Each encrypted upload thread holds 10 MB in memory for the duration of encryption
  • The semaphore ensures at most 4 are encrypting simultaneously, others wait in queue

For higher concurrency (10+ simultaneous heavy users), scaling to a higher Render plan with more RAM is the path.


Theoretical Maximum (Per Session)

With S3 Multipart's 10,000-part limit and 10 MB chunks:

  • Max single file: 100 GB
  • Max session: Limited only by storage plan and time
  • Tested sustained: 2,630 files, 6h 56min, 0 failures