Back to tools
Local-first processing

What Docshift can see

Docshift is built as a static browser app. When you drop a PDF, the file is handed to JavaScript running in your current tab. The app reads the file from browser memory, builds the result there, and gives you a local download link.

Your PDF is not posted

The tools use File, Blob, canvas, PDF.js, pdf-lib, JSZip, and qpdf WASM in the browser. There is no upload endpoint in the app flow.

Passwords stay in the tab

Protect and Unlock pass the password into local qpdf WASM. The app does not store it, hash it, or send it to a service.

Hosting serves assets

A static host serves HTML, CSS, JavaScript, workers, and WASM files. DocShift does not need a database or backend.

What exists temporarily

Selected files, previews, and finished outputs exist as browser objects while the tab is open. Resetting a tool or leaving the page releases the object URLs the app created.

What a host may still log

Static hosting can log normal page requests, such as loading the app shell or a JavaScript file. Those requests are not your PDF contents.

What is deliberately absent

There is no sign-in system, upload queue, server conversion worker, user database, analytics SDK, ad pixel, or external AI/API call required for the PDF tools.

One practical browser limit

Very large PDFs use your device memory and CPU. If a browser tab runs out of memory, processing can fail locally without any file leaving the machine.