Performance & correctness

Browser-local text deduplication benchmark

A dated, reproducible account of three deterministic 10,000,000-byte workloads on one controlled machine. These results describe the tested build, not every device or every text distribution.

Test snapshot

Tested 2026-07-13 UTC. Completion starts when a real temporary file is selected through the browser file-input path and ends when the first result row is visible and processing has finished.

3 deterministic fixtures

Lines near unique, Words high cardinality, and one single long line; every input is exactly 10,000,000 bytes.

20 cold + 20 warm runs

Each accepted fixture was measured in isolated Desktop Chromium and Mobile WebKit frame and memory cohorts.

480 accepted-file measurements

Four cohorts produced 16 validated artifacts with one worker, serial execution, and zero retries.

Independent output oracle

Final full-output length and SHA-256 were checked against independently generated expectations for every fixture.

End-to-end completion results

Nearest-rank p95 values from 20 runs. Cold and warm are shown in that order for each browser profile.

10 MB end-to-end completion results
WorkloadInput shapeDesktop Chromium cold / warm p95Mobile WebKit cold / warm p95
Lines, near unique625,000 generated line units922.2 / 892.8 ms961.2 / 895.2 ms
Words, high cardinality625,000 generated ASCII word units1,933.6 / 1,920.2 ms1,926.8 / 1,923.2 ms
Single long lineOne 10,000,000-byte ASCII row144.4 / 120.5 ms152.4 / 124.9 ms

Responsiveness and completion actions

Frame monitoring and process-level memory sampling ran in separate cohorts so the instruments did not distort the same run.

Responsiveness and completion action p95
MeasurementDesktop Chromium p95Mobile WebKit p95
Highest per-run worst frame gap p9533.3 ms75 ms
Cancel acknowledgement43 ms46.3 ms
Copy full result55.2 ms63 ms
Copy with counts100.7 ms138 ms
Start plain-text download69.6 ms70.4 ms

Deterministic fixtures and correctness evidence

Each final full-output length and SHA-256 was checked against an independently generated expected result. Input transfer also confirmed that the transferred buffer detached from the main thread.

Lines, near unique

625,000 sixteen-byte units made from item-, a zero-padded 10-digit index, and a newline. The final generated value repeats the first; the terminal newline creates a valid empty line under the tested defaults.

Input SHA-256
9b94e00788544162aebf9c572e18bb25a5fb4c7bcc955a1f68bfe3b65f0518ec
Expected full output
9,999,984 bytes
Expected output SHA-256
17cd4992175c90e8b8a221dd32c33820ff89b5ac64388d170dd0bd9a8427281b
Expected counts
625,001 occurrences; 625,000 distinct; 624,999 once-only; 1 repeated value kind; 1 extra occurrence removed.

Words, high cardinality

625,000 sixteen-byte units made from w, a zero-padded 14-digit index, and one space. The final generated value repeats the first.

Input SHA-256
7baa0deb0a605e7cc12acece8c2997b825b4c84d8ef583ce9b7debd0cf92c779
Expected full output
9,999,983 bytes
Expected output SHA-256
942bbb91e0c38061c455d1e5c28970b73fa3ad79df5426d0de741aba8570ffdf
Expected counts
625,000 occurrences; 624,999 distinct; 624,998 once-only; 1 repeated value kind; 1 extra occurrence removed.

Single long line

Exactly 10,000,000 ASCII a bytes in one row.

Input SHA-256
01f4a87c04b40af59aadc0e812293509709c9a8763a60b7f9e19303322f8b03c
Expected full output
10,000,000 bytes
Expected output SHA-256
01f4a87c04b40af59aadc0e812293509709c9a8763a60b7f9e19303322f8b03c
Expected counts
1 occurrence; 1 distinct; 1 once-only; 0 repeated value kinds; 0 extra occurrences removed.

Test environment

Benchmark test environment
ItemValue
Tested source1bcb726b8c0f9a84d4cf65cf04d1e2e46610adca
Production build IDnwPqPW-iNgIVBeM73cXfb
Source treeClean
Build modeProduction Next.js server
HostApple M3 Pro, 11 logical CPUs, 18 GiB memory
PlatformDarwin 24.3.0 arm64
DesktopChromium 140.0.7339.186 at 1280 × 720
Mobile profilePlaywright WebKit 26.0 at 390 × 664
RuntimeNode.js 22.22.2; pnpm 9.10.0
Execution1 worker; 0 retries; 30-second watchdog

Memory method and results

Memory figures are deltas from a per-run baseline. p95 summaries and the largest individual observation are both disclosed so outliers are not hidden.

Memory benchmark results
BoundaryHighest p95 across fixtures and temperaturesLargest individual observation
Desktop Chromium main-thread heap30,666,413 bytes / 29.25 MiB59,801,421 bytes / 57.03 MiB absolute heap
Desktop Chromium browser-tree RSS250,478,592 bytes / 238.88 MiB523,436,032 bytes / 499.19 MiB peak delta
Mobile WebKit launch-generation RSS131,055,616 bytes / 124.98 MiB433,537,024 bytes / 413.45 MiB peak delta

Additional 300 KB input checks

A separate cohort exercised the current 300,000-byte manual-input boundary.

300 KB input acknowledgement results
Input pathDesktop p95Mobile p95
Manual text input46.8 ms49 ms
Paste-path harness57.2 ms54 ms
Delimiter-mode manual input34.9 ms44 ms

One Desktop paste-path run retained a 716.7 ms frame-gap outlier. It was not removed and remained below the fixed 1,000 ms worst-case gate. The paste harness excludes operating-system clipboard latency.

A defect the benchmark found

Known limitations

  • One Apple M3 Pro machine was tested.
  • Mobile WebKit ran on the desktop host with a 390 × 664 viewport; this was not a physical iPhone benchmark.
  • The deterministic ASCII fixtures do not represent every language, encoding, delimiter pattern, or real-world distribution.
  • Frame and memory results come from separate cohorts and must not be correlated as if captured in the same run.
  • Cold runs reset page, React, and Worker state, not the browser process, operating-system disk cache, or machine.
  • Copy used a synthetic clipboard capture and excludes operating-system clipboard latency.
  • Download ends at the browser download event and excludes final storage-write time.
  • The 25 MB and 50 MB checks only verified quick rejection; those sizes are not supported inputs.
  • CSV content was treated as plain text, not as structured CSV.
  • This is a product benchmark, not a third-party certification, security audit, or privacy audit.
  • Results stay tied to the tested source and should be rerun after a material processing change.

Frequently asked questions

Does every 10 MB file finish in under two seconds?

No. About 0.12–1.94 seconds was the p95 range for these three synthetic fixtures on the documented machine and browsers. Other devices, distributions, browsers, and background load can differ.

Was Mobile WebKit tested on an iPhone?

No. It was Playwright WebKit 26.0 on the Apple M3 Pro host with a mobile viewport. It exercises WebKit and the mobile layout profile, but it is not a physical-device benchmark.

Does the tool support files larger than 10 MB?

No. The supported boundary is 10,000,000 bytes per file and for the complete accepted batch. Larger fixtures were used only to verify quick rejection.

Does Copy timing include the system clipboard?

No. The benchmark captured output through a synthetic clipboard implementation so it could measure product-side output construction without operating-system clipboard variance.

Does the benchmark cover structured CSV files?

No. CSV content is read as plain text. The tool does not parse headers, select columns, interpret quoted delimiters, unescape quotes, or reconstruct multiline fields.

Is this a fully independent reproducibility package?

No. Fixture recipes, hashes, environment, run counts, percentile method, and sanitized summaries are public here. The complete internal harness and raw process-level artifacts are not published.

Is browser-local processing the same as zero telemetry?

No. Text and file contents are processed locally for deduplication. When configured in Production, limited page and interaction telemetry may be processed separately as described in the Privacy Policy and Capabilities page.

10 MB Browser-Local Text Deduplication Benchmark