Privacy
Last updated: 2026-10-17
Your documents never leave your device
PaperDiff reads, parses and compares both files entirely inside your browser tab. There is no upload endpoint on this site. Not one with a short retention policy, not one in a region of your choosing: none at all. The site could not receive your documents if it wanted to.
You can verify it rather than believe it, two ways. Open your browser’s network inspector before comparing, and watch: no request carries document data. Or load the page, disconnect from the network, and compare two documents anyway. It still works, which could not be true if anything were being sent.
Nothing is stored on your device either
This site writes nothing to local storage, nothing to IndexedDB and no cookie of its own. Your documents are held in memory for as long as the tab is open and are gone when you close it; the comparison settings are not remembered either. Reopening the page gives you two empty slots.
That is a deliberate difference from some of the sister tools, which do remember your work in the browser because it helps there. Here the thing that would be remembered is a contract, so it is not.
What is collected, in full
Anonymous page analytics through Vercel Web Analytics (page views, country, device type, browser, referrer), with no cookies, no advertising, no fingerprinting and no account system. Alongside those, the tool reports a fixed list of interaction events. This is all of them, and the complete set of values each one can carry:
| Event | What travels with it |
|---|---|
| cta_click | which call to action: a fixed word such as “sample” or “choose_a” |
| link_click | which area of the page, and which page it points at |
| outbound_click | the destination hostname, and which area of the page |
| section_view | the name of the section that came into view |
| scroll_depth | 50 or 90 |
| tool_start | “picker”, “drop” or “sample”, and which slot |
| tool_configure | which setting was touched, and its new value |
| tool_run | the format pair such as “pdf-docx”, and a word-count range |
| tool_success | a duration range such as “<250ms”, and a range for how much changed |
| tool_error | the stage (reading a file, exporting a result, or arriving at an address that does not exist) and a fixed reason such as “no_text_layer”. On a wrong address the reason says only whether a real page could be suggested; the address itself never travels |
| tool_reset | “a”, “b” or “both” |
| export | “markdown”, “csv” or “print” |
No file name, no word of your documents, no excerpt and no heading ever appears in any of them. Every value above is either a word chosen in advance or a numeric range such as “2k–10k”, and one module enforces that: it accepts no free text, so there is no path by which a document could reach an event even by mistake. File names are excluded along with everything else, deliberately: on this site a file name is frequently confidential in itself, because it names a deal.
What the events exist to answer is narrow: does anybody finish a comparison, which formats do people actually bring, which view do they choose, and what do the failures say about what to build next. The count of documents refused as scans is the single clearest signal of whether optical character recognition is worth adding.
Cookies, and why there is no banner
The site sets no advertising or tracking cookie and uses no fingerprinting, which is why no consent banner appears. The reasoning is worth writing down rather than implying, because it is not as automatic as most sites make it look.
Article 82 of the French loi Informatique et Libertés covers reading from terminal equipment as well as writing to it, and the analytics script does read: it calls localStorage.getItem on load. Nothing is stored: that only happens if a site calls identify(), which this one never does and which is written down as a rule in the code rather than left to memory. So the audience-measurement exemption is being relied on rather than avoided, and the assessment against CNIL’s criteria is: used strictly for audience measurement, aggregate only, no cross-site tracking, no onward disclosure. Vercel Web Analytics is not on CNIL’s published list of exempted solutions, so this is a self-assessment, and it is recorded here so that the answer exists before the question.
The legal detail, for completeness
Vercel Web Analytics derives a visitor identifier from a hash of IP address and user agent. That is pseudonymous personal data, processed on the publisher’s behalf, which makes the publisher a controller and engages article 13 GDPR whatever the volume. The four facts it asks for:
- Legal basis: legitimate interest (article 6(1)(f)) in knowing whether these pages are useful, an interest that a counter unable to identify anyone does not weigh against.
- Retention: twelve months, the reporting window of the plan this site runs on. Aggregated, never profiled.
- Transfer safeguard: Vercel Inc. processes the data in the United States under a data processing agreement, and the transfer rests on two mechanisms rather than one. Vercel is certified under the EU–U.S. Data Privacy Framework, and the same agreement incorporates the European Commission’s 2021 Standard Contractual Clauses (decision 2021/914, Module Two). A copy is published at vercel.com/legal/dpa.
- Right to complain: to a supervisory authority. In France, that is the CNIL.
Controller, and your rights
Damien Yvert, whose postal address and telephone number are on the legal notice. For any privacy question or request (access, rectification, erasure, restriction, portability, objection) write to damienyvert.dev@gmail.com.
Because no document and no identifier of yours ever reaches the publisher, most such requests resolve to actions on your own device: there is nothing here to export back to you and nothing to delete. That is the intended outcome rather than an evasion.
See also the legal notice for who publishes and hosts the site, and the licences page for the third-party code it serves.