Skip to content

Limits and performance

Capture limits stop unbounded browser and document work. Choose values from the page workload and host budget, then measure the resulting receipt timings and resource counts.

Default capture limits

LimitDefaultWhat it counts
duration120 secondsComplete capture deadline, including readiness delay and verification
redirects20Accepted navigation redirects
frames256Captured frames including the top-level document
nodes1,000,000Captured document nodes, also the compiled maximum
resources10,000Resource references, not unique URLs
resource_bytes64 MiBOne decoded resource body
total_resource_bytes512 MiBBytes admitted before content-digest deduplication
collector_chunk_bytes1 MiBOne collector protocol chunk
concurrent_resources8Simultaneous resource streams
artifact_bytes64 MiBFinal HTML or memory delivery and aggregate frame-observation payload
resource_recursion_depth64Recursive CSS and SVG resource traversal
frame_depth64Frame and recursively embedded HTML depth

Every limit except redirects must be greater than zero. Zero redirects rejects the first redirect. total_resource_bytes must be at least resource_bytes.

The receipt's embeddedBytes counts unique content digests, so it can be lower than total received bytes. A declared HTTP content length is an early rejection hint. Enforcement uses bytes actually received and decoded.

Concurrency

One service defaults to four browser contexts and eight resource streams per capture. Batch and crawl default to four concurrent captures.

Lower these values when file descriptors, memory, CPU, or remote-browser capacity are constrained. Browser process memory and Rust process memory should be measured separately.

Measure a service workload

CaptureReceipt.timings reports validation, browser acquisition, navigation, readiness, collection, resource, transform, encoding, verification, commit, and total durations. Compare those values beside the receipt's resource and byte counts and the artifact manifest's frame count.

Use one shared Offprint service when measuring repeated captures. Record the browser source and version, capture profile, host, concurrency, and input set so another run can reproduce the conditions.

Maintainers can use the repository benchmark and repeated-capture harnesses in Performance evidence.