Privacy
Mull Reader is a static web page with no backend. There is no account to create, no server to send anything to, and no analytics, tracking, or advertising code of any kind.
Your documents never leave your device
When you open a markdown file, your browser reads it directly from disk using the File System Access API (or a plain file input, on browsers without it). The text is converted to HTML and displayed entirely inside the page. It is never uploaded, copied to a server, or transmitted anywhere.
The same is true of editing. If you tick a checklist, edit a document, or rename it, the change is written back only to that same file on your device — and only after your browser asks for, and you grant, write permission for it. Writing, like reading, happens entirely between your browser and your disk.
Close the tab and the content is gone from memory. The one case in which the app retains a document — a saved copy on your own device, so a recently read file can be reopened — is set out under recent documents below.
What is stored on your device
Your reading preferences are saved in your browser's localStorage so the app looks the same next time. These stay on your device and are readable only by this site:
- Theme (light or dark) and e-ink mode
- Reader mode
- Text size, brightness, and colour warmth
- Sidebar open state and width
- The path, within the folder you opened, of the file you were last reading
- How far through each document you had read — a scroll position per document, so reopening one returns you to it. It is stored as a number and the document's name or path, never any of its text, and the app keeps at most the hundred most recent
- Checklist view choices — whether a document hides its completed tasks or shows them last. Like reading positions, these are flags filed under the document's name or path, never its text, capped at the two hundred most recent
If you open a folder, your browser also keeps a reference to it in IndexedDB so the app can offer to reconnect to it next time. That reference is a permission handle held by the browser, not a copy of the folder or of anything in it, and reconnecting still requires your permission.
Recent documents
The app remembers the last twelve documents you opened so you can return to one without hunting for it again. What that costs in storage depends on how your browser handed the file over:
- On browsers with the File System Access API (Chrome, Edge, and other Chromium browsers on desktop), the entry holds the file's name and a permission handle — the same kind of reference described above. The document is re-read from disk when you reopen it, so no copy of it is kept.
- Everywhere else — Safari, Firefox, and any file that arrives from a cloud provider such as Google Drive or iCloud, from a drag and drop, or from the operating system opening a file with the app — the browser gives the app the file's contents and no way to reach that file again. To make the entry work at all, the document's text is stored in
IndexedDBon your device. Documents over roughly one megabyte are skipped rather than stored.
Those saved copies stay in your browser's storage for this site, readable only by this site, and are never sent anywhere. If you edit such a document or tick its checklists, the saved copy is updated to match, so it reflects your changes. An entry's copy is deleted when it falls off the end of the list or when you remove the entry with its × button, and Clear recent in the sidebar deletes every entry and every saved copy immediately. If you would rather the app kept nothing at all, use Clear recent after reading, or open documents in a private window.
The offline cache
The app's own files — HTML, CSS, JavaScript, icons — are also stored by a service worker so the app works offline. That cache holds only the app itself, never your documents.
All of the above — preferences, folder reference, recent documents, and the offline cache — can be removed at any time by clearing site data for this site in your browser settings.
No cookies
Mull Reader does not set cookies and does not use any third-party scripts. The markdown, sanitising, and syntax-highlighting libraries it depends on are bundled with the app and served from the same place, not from a CDN.
Hosting
The site is served through Cloudflare, and the same files are also published on GitHub Pages. As with any website, those providers process standard request information — such as your IP address, browser type, and the files requested — in order to deliver the page. That happens at the hosting layer, before the app runs, and is outside its control; their handling is governed by Cloudflare's privacy policy and GitHub's privacy statement.
Once the app has loaded, it makes no further requests of its own. If you install it as a progressive web app and use it offline, it makes no requests at all.
Content inside your documents
A markdown file can reference things on the internet — most commonly images with an https:// address. If a document you open contains one, your browser will fetch it from whichever server hosts it, and that server will see the request. This is normal browser behaviour, but it is worth knowing if you open documents from sources you do not trust. Links you click in a document likewise take you to third-party sites governed by their own policies.
Children
Mull Reader collects no personal information from anyone, including children.
Changes
If this policy changes, the updated version will be published here with a new date. Because the app is open source, every revision is visible in the page's commit history.
Contact
Questions or corrections are welcome as an issue on GitHub.