© 2026 José Carrillo
Performance & Limits
How Zefer detects your device capabilities and how to optimize your browser for maximum encryption performance.
Your device
How is the limit calculated?
heapLimit = performance.memory.jsHeapSizeLimit
available = heapLimit × 50%
maxFile = (available ÷ 3) × 80%
The limit is tiered by the RAM the browser reports and the CPU core count. The JavaScript heap is capped at ~4 GB on any machine (which is why it is not used as the reference), but file data lives outside that heap: with 16 MB chunked encryption, peak memory is ~1.2× the file size (~2.2× with compression). A workstation (20+ threads or 64+ GB RAM) reaches 10 GB per file; mid-range machines, 2–8 GB; mobile devices, 256 MB–1.5 GB.
Data sources
| API | Browsers | Data obtained |
|---|---|---|
| performance.memory | Chrome, Edge | JS heap limit (most accurate) |
| navigator.deviceMemory | Chrome, Edge, Opera | Total device RAM (rounded) |
| navigator.hardwareConcurrency | All | Number of CPU cores |
| WEBGL_debug_renderer_info | Most | GPU model (via WebGL) |
| crypto.subtle.deriveBits | All | Actual PBKDF2 speed on the device |
How to optimize your browser?
Chrome / Edge
- Close unnecessary tabs and extensions to free memory
- Open chrome://flags and search for 'Experimental Web Platform features' to enable advanced APIs
- Use the 64-bit version to access more than 4 GB of heap
- Launch Chrome with --max-old-space-size=8192 to increase V8 heap
Firefox
- Firefox does not expose performance.memory or navigator.deviceMemory for privacy
- The limit is estimated from the number of CPU cores
- Open about:config and adjust dom.ipc.processCount for more processes
- Close unnecessary tabs: Firefox uses separate processes per tab
Safari
- Safari does not expose browser memory APIs
- The limit is estimated from the number of cores and platform
- Safari on macOS has a generous heap (up to ~4 GB on devices with 8+ GB RAM)
- On iOS the heap is more limited (~1.4 GB on modern iPhones)
General recommendations
- Use a Chromium-based browser (Chrome, Edge, Brave) for better hardware detection
- Close other heavy applications before encrypting large files
- Use the 64-bit version of your browser
- Make sure you have enough disk space for the .zefer file download
- Disable browser extensions that consume a lot of memory
Why do some values show as 'N/A'?
Some browsers (Firefox, Safari) do not expose memory APIs for privacy reasons. In those cases, Zefer estimates the limit from the number of CPU cores and the platform. For the most accurate detection, use Chrome or Edge, which expose performance.memory and navigator.deviceMemory.