Pagecraft

How it works, and how to check

Four other sites have told you that your file is safe with them. Here is the architecture instead, and how to verify it without believing a word of this page.

There is no server to upload to

A PDF engine is a few megabytes of code, and a browser has been able to run it for years. So it runs here: the file you drop is read by JavaScript and WebAssembly inside this tab, worked on in a background thread so a large document does not freeze the page, and handed back as a download. The site itself is a directory of static files — HTML, CSS, JavaScript, a typeface — with no application behind it. There is nowhere for a file to be sent, which is a different kind of claim from a promise to delete it later.

How to check it yourself

Three ways, in increasing order of how little you have to take on trust. The panel at the bottom of this page lists every address this tab has asked for, so you can use a tool and then come back and look. Your browser's own network panel says the same thing and is not written by us. And if you would rather be certain of it, disconnect once the page has loaded: every tool here keeps working, because none of them ever needed a connection.

The same engine runs everywhere

What this site is is an interface. The engine underneath is a separate, permissively licensed package that you can install from npm and run in Node, embed in your own product, or drive from a shell script through its command line. That is deliberate: an engine that has to run on somebody's server would have been easier to build, and would have made the promise on this page impossible.

What it costs you

Your machine does the work, so your machine's limits are the limits. A 500MB scan will be slower here than on a rented server with 64GB of memory, and on an old phone it may not finish at all. The first visit downloads a few megabytes of engine, after which your browser will usually have it cached. We think that is a good trade for a document you would not want copied to a stranger's computer, and we would rather say it than have you find out.

Who makes it, and how it is paid for

It is open source, and the source is the whole product: the engine is MIT-licensed so anyone can build on it, and this site is AGPL. There is no company behind it that needs your data, no analytics, no advertising and no account. It costs almost nothing to run precisely because it does no work on our side.

Everything this tab has asked for

Every address this tab has requested since you opened it, including the work done on any tool page you visited before this one. If a document had been uploaded, it would be in this list.

Everything this tab has asked for
AddressTimesAnswered by

What is on this device

Nearly everything here arrives with the page and costs kilobytes. Two things do not: a typeface that can draw a script the built-in PDF fonts cannot, and the engine that reads words off a scan. Those are megabytes, so they are offered rather than shipped — fetched when you ask for one, kept afterwards so that they work with the network unplugged, and gone the moment you would rather have the space back.

What is on this device
CapabilitySizeOn this deviceDownload {size}
Noto SansDraws Greek, Cyrillic, and the Latin letters and typographic marks the built-in PDF fonts leave out. Regular, bold, italic and bold italic.Licence: MIT AND OFL-1.12.5 MBChecking
Noto Sans ArabicDraws Arabic, Persian and Urdu, with the letters joined the way the font says they join. Regular and bold.Licence: MIT AND OFL-1.1388.6 kBChecking
Noto Sans JapaneseDraws Japanese: the kana, the ideographs a Japanese face carries, and the punctuation that goes with them. Regular and bold, and much the largest thing offered here.Licence: MIT AND OFL-1.110.9 MBChecking
CaveatA handwriting face, for signing. A name typed in Helvetica is perfectly legible and is not a signature.Licence: MIT AND OFL-1.1514.3 kBChecking
Recognition engineTesseract, compiled for the browser and run on a thread of its own. It turns a picture of a page into words, and needs a model for each language it is asked to read.Licence: Apache-2.04.1 MBChecking
Reading EnglishThe model the recognition engine reads English with. It does nothing on its own: the engine has to be here as well.Licence: MIT3 MBChecking
Reading GermanThe model the recognition engine reads German with. It does nothing on its own: the engine has to be here as well.Licence: MIT1.3 MBChecking
Reading FrenchThe model the recognition engine reads French with. It does nothing on its own: the engine has to be here as well.Licence: MIT707.4 kBChecking
Reading SpanishThe model the recognition engine reads Spanish with. It does nothing on its own: the engine has to be here as well.Licence: MIT2.1 MBChecking