Troubleshooting

Why large file conversions fail in mobile browsers

Understand why large image, PDF, audio, and video jobs can stall or close a mobile browser tab, and how memory copies, decoding, and main-thread work affect reliability.

If small files work but a large job closes the mobile tab, memory and computation are useful first checks. Selecting a 300MB file does not limit working memory to 300MB: source bytes, decoded data, intermediate images and outputs can coexist.

A progress indicator that pauses, a page that stops responding to touch, and a tab that reloads or closes without an error are different symptoms. Instead of repeatedly retrying the same workload, first identify the likely stage and reduce the amount processed at once.

Why a 300MB file can require much more than 300MB of memory

When the browser reads a file, it first creates a continuous block of working data called an ArrayBuffer. A WebAssembly engine—the technology that runs conversion code inside the browser—or a compression library may copy that data into its own workspace, while the source and output remain alive for part of the operation.

For images, decoded pixel count matters more than compressed size. A 4000×3000 image contains 12 million pixels; one simple RGBA buffer is about 48MB. A canvas, resize intermediate, and output Blob can overlap, so a small JPG may still create a large working set.

Different jobs multiply memory in different places

One source-size limit cannot describe every workload. The same 100MB input can behave very differently depending on decoding and the number of outputs retained.

JobAdditional dataReduce the load
Image compression or conversionDecoded pixels, canvas, output BlobLower dimensions and batch count
PDF to imagesRender canvas, page images, ZIPSplit page ranges and lower scale
Images to PDFMultiple decoded images and PDF dataUse smaller batches and lower quality
Audio or videoInput copy, Wasm memory, decode, outputSplit long sources or use desktop
Batch ZIP downloadIndividual outputs, compressed data, final ZIPDownload several smaller groups

A stalled progress bar is different from a terminated tab

Much JavaScript work shares the main thread—the browser's primary path for updating the screen and handling input. A long computation can delay progress updates and touch response while the job continues. web.dev defines tasks over 50ms as long tasks and recommends breaking work into smaller pieces so rendering and input get opportunities to run.

A tab that reloads or is terminated without an application error points more strongly toward memory pressure or operating-system resource recovery. A web app cannot reliably know the usable memory of every phone, so a published maximum is not a guarantee that every device can finish that workload.

How to split work effectively

For PDF conversion, reduce page range and output scale before focusing only on the PDF file size. Rendering 100 pages as 2× PNG and retaining them for one ZIP can be far heavier than converting 10–20 pages at a time or starting with 1× JPG.

For image batches, consider both count and dimensions. High-resolution PNG outputs can use large decoded buffers even when the original HEIC or JPG total looks modest. Long audio and video transcoding keeps CPU and engine memory busy for longer, making smaller segments or a desktop browser the more reliable option.

  • Reload before retrying so temporary data from the previous attempt can be released.
  • Try JPG or WEBP instead of PNG, or 1× instead of 2× output, to reduce result size.
  • If half the batch succeeds, keep future groups at or below that size on the device.
  • Thermal throttling and battery-saving modes can also slow long jobs; let the device cool before another attempt.

Official documentation used for this analysis

Use a stable working size, not the published maximum, as your limit

Local browser processing avoids uploading file contents, but the visitor’s device must provide the computation and memory. A limit such as 150 pages is an input ceiling, not a promise that every phone can finish the largest allowed job.

Confirm support with a small sample, then increase page count, batch size, and output resolution gradually. If the same source works on desktop but fails only on mobile, consider device resources before concluding that the file itself is invalid.