Privacy
Last updated 15 August 2026.
Shiftlog is a browser extension that records what you accomplished during timed work blocks. This page describes exactly what happens to that record.
What Shiftlog collects
Nothing is sent anywhere by default.
Your work blocks, entries, aims, thread names, tags, summaries and settings are stored in your browser's local extension storage on the machine you are using. They are not uploaded, synced, or transmitted. There is no account, no sign-in and no server belonging to us that holds any of it.
We receive no data from you. Not your entries, not usage statistics, not error reports, not an installation count beyond what the Chrome Web Store reports to any developer.
The one case where data leaves your machine
Shiftlog can produce a written summary of a range of your entries. This requires a language model, and Shiftlog does not include one.
If, and only if, you enter an API key in the extension's settings:
- Pressing Summarise sends the entries for the range you are currently viewing to the endpoint you specified in settings, along with your summary prompt.
- This happens when you press that button and at no other time. Nothing is summarised on a schedule or in the background.
- Shiftlog does not choose the endpoint. You do. It may be a commercial provider, or a model running on your own computer.
- What that provider then does with the text is governed by their terms, not ours. If you use a commercial API, read their data retention policy.
- The summary that comes back is stored locally alongside your entries.
Before you enter a key, Shiftlog makes no network requests whatsoever. You can confirm this yourself: open the extension's pages, open your browser's network inspector, and use it normally.
Everything Shiftlog shows you under Figures is arithmetic over your own record and needs no key, no connection and no account.
Permissions, and why each exists
| Permission | Why |
|---|---|
storage | To keep your blocks, entries and settings in the browser's local storage. |
alarms | To schedule the end of a work block, so the timer survives the browser suspending the extension to save power. |
offscreen | To play the end-of-block tone and count the final minute. The extension's background worker cannot play audio. |
Two further permissions are requested only if you turn on the feature that needs them, and never at install:
| Permission | Requested when |
|---|---|
downloads | You switch on weekly backup. Used to write a JSON file to your downloads folder and nothing else. |
| Access to one website | You save an API key. Requested only for the exact endpoint you entered, so Shiftlog can send the summary request. |
Shiftlog does not request access to the websites you visit and cannot read them.
Optional dictation
The prompt window has a microphone button, off unless you switch it on in settings.
When enabled, it uses the speech recognition built into your browser. In Chrome that service sends the audio to Google for transcription, under Google's terms rather than ours. Shiftlog neither records nor stores audio, and receives only the text your browser returns.
Dictation tools that run outside the browser type into the field like a keyboard and involve neither this setting nor any service.
Your API key
If you enter one, it is stored in the browser's local extension storage in plain text. This is standard for browser extensions and there is no more secure option available to them.
Two consequences worth knowing. Anyone with access to your computer and its developer tools can read it. And the key is excluded from every export Shiftlog produces, so sharing an export does not share your key, and restoring a file cannot overwrite the key you have set.
The passphrase lock
Shiftlog can be locked with a passphrase, off by default. It engages when you close Shiftlog, and again after an idle period you choose.
The passphrase is never stored. What is stored is a PBKDF2 hash of it with a random salt, which cannot be reversed into the passphrase.
The lock stops someone opening your record from the toolbar and reading it. It does not encrypt your entries. They remain in plain local storage, and anyone with access to the machine and developer tools can read them regardless. It is a lock on a door, not a safe.
There is no way to recover a forgotten passphrase. It cannot be read back by anyone, there is no reset, and a forgotten one leaves your record unreachable from inside the extension. Reinstalling and restoring from a backup is the only route back, so switch on the weekly backup before you set one.
Taking your record with you
Export everything as JSON, Markdown or CSV at any time, in one click. The JSON contains your full record and your preferences, with API keys excluded.
Restoring merges rather than replaces: entries already present are left untouched, so importing the same file twice changes nothing.
You can also switch on a weekly backup, which writes a JSON file to your downloads folder at most once every seven days.
Deleting your data
Removing the extension from your browser deletes everything it stored.
You can also delete individual entries inside the record, remove a project and its labels in settings, or clear the whole store from your browser's extension settings.
Nothing is retained anywhere else, because nothing was sent anywhere else.
Children
Shiftlog is a work journal for adults and is not directed at children. It collects nothing from anyone, of any age.
Changes
If a future version of Shiftlog transmits data in any circumstance not described above, this page will be updated before that version is published, and the change will be described in the store listing.