Last updated: 1 November 2026
Without an account, Notestark sends nothing anywhere. Everything you mark stays on the computer you marked it on — no sign-in, no analytics, no third party.
With an account, your marks sync end-to-end encrypted. Signing in is optional. If you do, your highlights and notes are encrypted on your device before they leave it, and our sync server stores them without being able to read them.
This policy covers the Notestark extension for Chrome, the
Notestark extension for VS Code, the Notestark sync service
at sync.notestark.com they use when you sign in, and this website.
To bring your highlights back when you reopen a document, the extension has to remember where they were. For each highlight it saves, on your device:
| Stored | Why it is needed |
|---|---|
| The text you selected | To find the same passage again after the page reloads |
| About 32 characters before and after it | To find the passage again even if the document is edited and it moves |
| Its position in the document | Checked first, because it is the cheapest way to relocate a mark |
| The colour, underline and emoji you chose, and your note | To draw the mark the way you left it |
| The document address and title | To know which document a set of marks belongs to |
| A fingerprint of the document text | So renaming or moving a local file does not lose its marks |
Being direct about the first row: the passages you highlight are excerpts of the
page you are reading, and they are saved. That is unavoidable for a highlighter.
They live in chrome.storage.local (in VS Code, the extension’s own
storage) — not in cookies, which are sent to servers, and not in the page’s own storage,
which the website could read.
The Auth tab offers Sign in with Google or Sign in with Apple. It exists so the same marks appear in the Notestark app and on your other devices. Nothing below happens unless you sign in, and signing out stops it.
| Data | Readable by the server? | Why |
|---|---|---|
| Your e-mail address, name and the Google or Apple account id, taken from the sign-in | Yes | To know whose account it is, and to let you sign in again on another device |
| Your highlights and notes: the quoted passage and the text around it, your note, emoji, the document’s title and address | No — encrypted on your device | So the marks reach your other devices |
| The text of a local file you have marked | No — encrypted on your device | So a device that does not have the file can still show it with its marks |
| Colour, underline, pinned state, character positions, timestamps, and an opaque identifier per document | Yes | The server orders and merges changes by these; none of them contains your text |
| A device name (for example “Notestark for Chrome”) and when each sign-in was made | Yes | So you can tell your sessions apart |
| IP address and request times, in the server’s access logs | Yes | To keep the service running and secure |
Encryption uses AES-256-GCM with a random key created on your device. Document identifiers are keyed hashes of the document address, so the server cannot tell which page or file a set of marks belongs to.
So that a new device can open your notes after a Google or Apple sign-in alone, the Notestark app keeps an account recovery copy of your encryption key on the sync server, sealed under a separate server key. It is on by default and can be turned off in the app (Settings → Account → Account recovery). The trade-off: whoever held both the server database and that server key could read the escrowed key. With recovery off, the encryption is strictly end to end, and a lost password or device means lost access.
The sync server is our own machine at Hetzner in Germany. Nothing is sold, shared, or used for advertising, profiling or training. Synced data stays as long as your account exists; the server’s access logs roll over within days. Nightly backups of the database — whose highlights and notes are themselves encrypted — are kept for a limited period.
Translation and dictation are optional and run on your device, using the models built into Chrome. The passage you translate and the words you dictate are not sent to a translation or speech service, to us, or to anyone else. The first time you use a language, Chrome downloads a model; that download is made by Chrome and carries nothing about what you are reading. If you never press those buttons, nothing is downloaded.
| Permission | Used for |
|---|---|
storage | Keeping your highlights on the device |
activeTab | Reading the current tab’s address, only to tell you whether highlighting is available there |
scripting | Turning the highlighter on for a site after you have enabled it |
contextMenus | The highlight, note and translate entries on the right-click menu |
alarms | While you are signed in, syncing every 30 seconds |
identity | Opening the Google or Apple sign-in window when you press Sign in. Not used otherwise |
file:///* | The main purpose: local .md and .html files. Chrome keeps this behind its own switch, which only you can turn on |
*://*/* (optional) | Websites. Never requested at install — only when you press the button in the popup, and revocable the same way |
chrome://extensions.The pages on notestark.com are static files. They set no cookies, run no
analytics, embed no third-party scripts, fonts or trackers, and ask you for nothing. The server
writes ordinary access logs — IP address, time, the page requested and the browser’s
user-agent string — to keep it running and secure; they are not used to profile anyone, not
shared, and discarded on a rolling basis.
Mail sent to the support address is read to answer it and kept only as long as the conversation needs.
Notestark is not directed at children under 13 and does not knowingly collect information from them.
If this policy changes, the date at the top changes with it. Anything new the extension sends anywhere is described here before the version that sends it is released.
Questions about this policy, or about what Notestark does: support@notestark.com. The support page says what to include.
The extension’s scripts ship unminified, so every statement above about what it sends can be checked by reading the installed package.