Measured in this browser

Local execution receipt

These readings come from this browser session. Nothing here is a claim a server made about itself.

External requests (page + worker)
Checking…
Connection policy
connect-src 'self'
Worker policy
worker-src 'self'
Page control
Checking…

The count above covers both threads: this document and the background worker that reads your file, each reporting its own request timeline. It has two blind spots — a WebSocket is never recorded as a resource, and a request the policy blocks leaves no record at all — which is why the policies sit next to it. connect-src 'self' allows connections to this origin alone, and worker-src 'self' binds the thread doing the work. There is no upload endpoint to reach.

Read the source

pdf.keeplocal.tools

Count PDF pages without uploading a thing.

Your file is read by the keeplocal Rust core entirely in this browser. It never leaves your device.

Ready for a PDF