Privacy
The text you type, the images you choose and the videos you export never leave your device. There is no server that could receive them.
Why that is true, not just a promise
This is a static site. It is HTML, CSS, JavaScript modules and font files on a web host, and it has no backend at all — no API, no database, no upload endpoint. Every part of the job runs in your browser:
- Text is laid out with the browser's own text engine and
Intl.Segmenter. - Stroke paths are computed from the rendered glyphs in a Web Worker on this machine.
- Video is encoded with
WebCodecs, or withMediaRecorderas a fallback, again locally. - The finished file is handed straight to your browser's downloader from memory.
You can verify this. Open your browser's developer tools, switch to the Network tab, type something and export it. You will see requests for the app's own files and fonts, plus the ad network's requests described under Advertising — and the app sends your text in none of them.
What is stored, and where
| What | Where | Why |
|---|---|---|
| Your settings and your typed text | This browser's localStorage |
So reloading the page does not lose your work |
| Templates you save | This browser's localStorage |
So you can reuse a style you liked |
| A hand photo or background image you choose | This browser's localStorage |
So your pen and paper survive a reload |
| Your chosen theme | This browser's localStorage |
So the app opens the way you left it |
All of it stays on this device and is readable only by this site in this browser. Clearing your browser data removes it. Nothing is written to IndexedDB, and no cookie is set by the app.
Images you upload
Choosing a custom background, or a photo of your own hand to use as the pen, decodes the file in your browser, scales it down (to 2560 px for a background, 900 px for a hand) and keeps that copy as a data URL in memory and in local storage. It is never transmitted. Remove it with the Clear button in the Paper panel, the Remove image button in the hand calibrator, or by resetting the app.
Advertising
The site is paid for by ads from Adsterra. Their scripts load from Adsterra's own servers when an ad space comes into view, and they run on the page like any ad script — which means they could technically read what is on the page, the same as any script there. Adsterra sets its own cookies and collects its own data under its own policy, and that is outside this site's control.
What this app does not do is hand anything over: it never sends your text, your settings, your images or your exports to Adsterra or to anyone else, and no analytics of any kind is attached to what you type. If you would rather no ad script ran at all, an ad blocker leaves the tool working exactly the same.
Third-party code
Two small libraries are vendored into this site and served from it, not from a CDN — no library request tells a third party that you visited:
- mp4-muxer (MIT) — assembles the encoded frames into an MP4 container.
- fflate (MIT) — builds the ZIP for PNG sequence export.
The one exception is advertising: the ad scripts described above come from Adsterra's servers, so Adsterra does learn that the page was visited.
Fonts are self-hosted and licensed under the SIL Open Font License 1.1. No Google Fonts request is made.
Children
The app collects nothing, so it collects nothing from children either. It requires no account and asks for no personal information.
Changes
If this ever changes — for instance if a feature genuinely needed a server — this page would say so before that feature shipped, and the app would ask before sending anything.
Contact
Questions about this page: [email protected].