Legal

Privacy

This page is the whole privacy policy. “We” and “us” mean JotSpeed. Last updated 26 October 2026.

Device-only journal

You do not need an account to write. Entries live in the app on that device (the browser or Home Screen app’s private storage for app.jotspeed.com). We do not receive them. Clearing site data, using another browser, or a new phone starts a blank journal.

Entries on a device are kept in that app’s storage as written. They are not separately encrypted there, so anyone who can open the app on your unlocked device can read them.

Export a TXT or PDF if you want a file you hold.

If you sign in

We store:

  • Email
  • A slow hash of your password, plus salts. We never store the password itself.
  • A session token so this device stays signed in. We store only a hash of it. A session lasts 14 days and renews while you keep using the app, but ends 30 days after you signed in at the latest. Changing your password signs out your other devices, and Settings → Sign out everywhere ends every session. Either one also cuts those devices off from live updates at once and disconnects every connected chatbot. Your passkeys stay; Settings lists them so you can remove any you don’t recognise.
  • Whether Pro is active, and when that access ends

Your device turns your password into the key that encrypts your backup. When you create your account, sign in, or change your password, the password is sent over TLS to our server so it can be checked against that hash (or hashed for the first time). The server uses it only for that check and does not store it. It does not store your entries in plain text either: it stores only the encrypted backup. Because your password reaches our server when you sign in, this encryption protects your backup in storage. It does not make it impossible for us to read.

On a signed-in device, the app also keeps your email, the session token, and an encryption key for your journal in its storage, so it can sync and unlock your backup without asking every time. The key is stored so that it can’t be read back out, and the app never stores your password. Signing out removes the token and key from that device. Your entries stay on it until you delete them or clear the site’s data.

We cannot reset the password by email. If you lose the password, use one of your recovery codes to set a new one. If you lose the password and the recovery codes and have no signed-in device, we cannot recover your entries.

Confirming your email

New accounts must confirm their email within 24 hours. We email you a single-use link from noreply@jotspeed.com, sent through Cloudflare. You can ask for a new one a few times an hour. We store only a hash of the link’s code, and it stops working once used or when the 24 hours end. An account that is not confirmed in time is deleted, and the address can be used again. Until you confirm, the account cannot sync, connect agents, or subscribe.

Accounts made before confirmation existed get the link the next time they sign in or open the app, and have 30 days to confirm. After that, sync pauses until you confirm. You stay signed in, and the app keeps working on your device.

If you subscribe to Pro

Payments are handled by Stripe. We send Stripe your email and an account number so it can match a payment to your account. Stripe collects your card and billing details. At checkout, Stripe receives your billing country and postal code to calculate tax. We never see or store card numbers. We keep your Stripe customer and subscription IDs, the subscription status, and the date Pro ends, so we can turn sync on and off. Stripe’s own privacy policy covers what it collects.

The sync server (sync.jotspeed.com) stores one encrypted blob per account. That blob is ciphertext, encrypted on your device before upload.

Passkeys and recovery codes

If you add a passkey, we store its public key and ID and, on browsers that support it, an encrypted copy of your backup key that only that passkey can unlock. For each recovery code we store a slow hash of the code and an encrypted copy of your key that only that code can unlock. When you use a recovery code, it is sent to our server to be checked in the same way and is not stored. Changing your password replaces your recovery codes. None of these lets us read your journal on its own.

Connected chatbots

If you connect an AI app through the chatbot connector, it can add entries for you. The hosted connector is post-only: it can’t read your entries. To let a chatbot read them, use jot mcp from the command line, which decrypts on your own computer. You tell the AI app what to post, so that app sees the text first, and its own privacy policy covers it. We store the app’s name and hashes of its access tokens (access tokens last an hour, refresh tokens 90 days). Our connector briefly handles each post’s text on our server, in memory, to encrypt it to your journal’s key. It never stores or logs the text. The encrypted post waits on our server until one of your devices syncs it in. Each post is labeled with the app’s name.

We don’t keep a log of a chatbot’s posts; Settings → Connected chatbots lists each connected app, and Settings → Recent security activity shows when one was connected or disconnected. We never log the text.

Settings → Connected chatbots → Revoke ends the app’s access at once. Entries it already posted stay in your journal.

The hosted connector can’t read your journal. A closed test of reading through it, run only on our own account, was removed on 26 October 2026, along with any connection made for it.

Abuse protection

To slow down password guessing and abuse, we keep short-lived counters. Counters per network use your IP address (for IPv6, only the first half, and a second counter on the first 48 bits) and the number of the network it comes from (its ASN), live only in memory, and reset within an hour. They are not written to storage. Counters per account use a hash of your email, never the address itself, and reset after 15 quiet minutes (an hour for recovery codes). A per-account counter that was written to storage is deleted once its time is up. If someone fails to unlock your account with recovery codes 3 times or more, we keep the number of tries and their times on your account and show you a notice when you next sign in, until you dismiss it. We also count new sign-ups per day across everyone, which holds no personal data.

Logs

If a request to our sync server fails, it writes one line to our host’s logs: a request ID, the route (never the query string), the status, and the type of error. Before the line is written we strip tokens, keys, email addresses, and long encoded strings. We never put entry text, passwords, or IP addresses in it. The app shows the same request ID, so if you write to us about an error we can find that line. Cloudflare keeps these logs for 7 days. We do not keep a log of every request, and the AI agent connector keeps no request logs.

Who handles your data

We use a few providers, each only for its job:

  • Cloudflare hosts the site, the app, the sync server, and the AI connector. It stores your account and encrypted backup, and keeps our error logs for 7 days.
  • Stripe handles payments and billing.
  • Apple iCloud Mail hosts our support mailbox.
  • Bunny Fonts serves the fonts on jotspeed.com. The app uses its own copies.
  • GitHub hosts the command line’s source and serves it when you install it.

Like any host, they see IP addresses and basic request details.

What we do not do

No ads. No selling your data or sharing it for advertising. No analytics or tracking on the site or in the app, and no cookies. The app uses your browser’s storage for your entries and settings, and caches its own files so it works offline. We do not store plaintext entries on our servers.

Command line

jot keeps your email and session token in a config file only you can read, an encrypted copy of your journal in its data folder, and the key made from your password in your system keychain (or, if there is none, in a key file only you can read). It never stores your password. jot logout removes them.

Mail

If you write to support@jotspeed.com, we have that email and the message.

How long we keep things

  • On your device: until you delete entries, clear the site’s data, or remove the app.
  • Your account (email, password hash, Pro status, passkeys, recovery codes, connected chatbots) and the encrypted backup: until you delete your account. Delete all entries on a signed-in Pro device removes the entries’ text and tags from the backup the next time that device syncs. Empty placeholders stay (each keeps only the entry’s ID, its dates, its star, and which chatbot posted it, if one did) so your other devices delete the entries too. It does not delete your account.
  • Chatbot posts waiting to sync: encrypted, until one of your devices syncs them in.
  • Recent security activity: the last 50 events or 30 days, whichever is fewer. We keep no chatbot activity log.
  • Error logs: 7 days.
  • Billing records: Stripe and we keep invoices and payment records as long as tax law requires, even after you delete your account.

Deleting your account

Write to support@jotspeed.com from the address on the account, and we delete it within 30 days. That removes the account record, the encrypted backup, your sessions, passkeys, recovery codes, connected chatbots, and any chatbot posts waiting to sync, and cancels any subscription. Entries on your devices stay there until you delete them.

Your choices

You can export your entries at any time (TXT or PDF). To get a copy of your account information, change the email address on your account, or delete your account, write to support@jotspeed.com.

If you are in the EU, EEA, or UK

JotSpeed is the controller of the personal data described on this page. JotSpeed is run from the United States, and so are our main providers.

Why we use your data (lawful basis):

  • To provide JotSpeed (your account, sign-in, sync, Pro, the command line, the chatbot connector, and replying to your mail): it is necessary to perform our contract with you.
  • To keep JotSpeed safe and working (abuse counters and error logs): our legitimate interest in protecting the service and your account.
  • To keep billing records: a legal obligation under tax and accounting law.

Your rights. You can ask us for access to your personal data, to correct it, to delete it, to receive it in a portable format, to restrict our use of it, or to object to our use of it. Where we rely on your consent, you can withdraw it at any time, and that does not affect what happened before. To use any of these rights, write to support@jotspeed.com from the address on your account. You can also complain to the data protection authority where you live or work.

International transfers. Your data is stored and processed in the United States. Cloudflare and Stripe each commit to transfer safeguards in their data processing agreements. Cloudflare says it complies with the EU-U.S. Data Privacy Framework (including the UK extension), with the EU Standard Contractual Clauses and the UK Addendum as the fallback. Stripe says Stripe, LLC is self-certified under the Data Privacy Framework, with the EU Standard Contractual Clauses or the UK Addendum where that does not apply. JotSpeed itself is not certified under the Data Privacy Framework.

Age. Where local law requires it, as in some EU countries, you must be at least 16 to use JotSpeed.

Children

You must be at least 13 to use JotSpeed, and if you are under 18 you need a parent’s or guardian’s permission. We do not knowingly collect information from children under 13. If you think a child under 13 has an account, write to support@jotspeed.com and we will delete it.

Changes

If this policy changes in a way that matters, we will update this page and the date above, and email account holders before the change takes effect.

Contact

Questions about privacy: support@jotspeed.com.

See also how storage works and terms.