Quodra
Home Docs Open Quodra
Legal

Cookie Policy

Effective August 24, 2026Last updated October 3, 2026

What cookies and browser storage Quodra uses, why, and how to control them.

Quodra uses cookies and similar technologies, including browser storage, to operate, secure and improve the Service.

Everything this policy describes belongs to one of two categories. Essential technologies are strictly necessary for what you ask Quodra to do: signing you in, keeping your account and your work secure, saving your work, keeping the choices you make, and telling Quodra when something has failed. Analytics measures how the Service is used, and it is off until you opt in. Your access to Quodra never depends on your analytics choice: the Service works the same whether you accept or decline.

This Cookie Policy explains what technologies Quodra currently uses and how you can control them.

1. What Are Cookies and Similar Technologies?#

Cookies are small text files a website asks your browser to store and send back on later visits. Similar technologies include browser storage mechanisms such as localStorage, sessionStorage and IndexedDB, which let an application keep information on your device — for example, your signed-in session or a presentation you are editing — without sending it anywhere on every request.

This policy covers all of these together, because what matters is the same for each: what is stored, why, and who can read it.

2. Technologies Quodra Uses#

Quodra itself sets no cookies. The application at app.quodra.app keeps what it needs in first-party browser storage — localStorage, sessionStorage and IndexedDB — and authenticates your requests with an authorization header rather than a cookie. The website at quodra.app, including the documentation and these legal pages, stores a theme preference and, if the website asks and you answer, your analytics choice.

CategoryWhat it coversYour choice
EssentialSigning in, security, saving your work, preferences you set, error reports, and the Service's own logs and records (sections 3 and 5)Always on, because the Service cannot work without them
AnalyticsUsage and timing events sent to PostHog (section 4)Off until you opt in; you can change your answer at any time (section 8)

The only cookie Quodra's own pages can cause to be set is PostHog's analytics cookie in the application, and only after you opt in (section 4). Services your browser contacts for a feature you use, such as a payment or a video embedded in a presentation, may set cookies on their own domains (section 7).

3. Essential: Strictly Necessary Technologies#

These make the application work when you use it and keep you and your work secure. They operate without optional consent because the functionality you requested cannot exist without them. They are first-party. Signing out ends the session; local document copies, cached data and preferences can remain until removed through the application or your browser's site-data controls. Signing out is not a full erasure of browser data.

StorageKindPurpose
quodra.api.session.v1localStorageYour signed-in session (who you are, and the tokens that authenticate your requests)
quodra:sync:queue:…, quodra:sync:metadata:…, quodra:sync:conflicts:…localStorageThe outbox that saves your edits locally first, so work survives a lost connection, then syncs to your cloud library
quodra:device-idlocalStorageA random identifier for this browser, sent with each save so your cloud library can tell your devices' edits apart
quodra (documents, recoveries, journals)IndexedDBYour presentations on this device — the local copy the editor works from
quodra-assetsIndexedDBPictures and other media your presentations use, kept on this device so each one is uploaded once
quodra-circuits, quodra-molecules (one of each per account), quodra-matter-datasetsIndexedDBCircuits, molecules and datasets you create or upload, stored locally
quodra:deck-people:…localStorageFor presentations someone else owns, whose they are and your role in them, as your cloud library last said (the owner's name included), so a shared presentation is shown as shared, with the right actions, even offline
quodra:equation-draft:…sessionStorageAn equation you are still editing, so a reload does not lose it; removed when you finish or close the tab
quodra:code-trust:…localStorageYour per-presentation decision about whether its Python code may run
quodra:agent-execution-review:…localStorageA safety hold: code that an external AI tool added to a presentation does not run until you have reviewed it
quodra.plan-intent, quodra.pending-checkout, quodra.plan-landed, quodra.pending-connect, quodra:open-intentsessionStorageA step you started and have not finished — a plan you chose before signing in, a checkout in progress, a purchase that has just completed, an app asking to connect to your account, or the comment or revision a link on your home is opening — so it survives the sign-in or payment page; removed when the step is done or the tab closes
quodra:academic-code:…sessionStorageAn academic verification you started: the institution and the institutional address the code went to, never the code itself, so the step survives a trip to your mail app; removed when you finish, when the code lapses or when the tab closes
quodra:cast-windowsessionStorageKeeps an audience window you opened for a presentation connected to it across a reload
quodra:analytics-consent, quodra:analytics-consent-bylocalStorageYour analytics choice itself, with whose choice it is and when it was made: remembering "no" requires storing "no", and a shared browser never applies one person's answer to another
quodra:last-correlation-idsessionStorageA short-lived error reference id, so a bug report can name the failure; cleared when the tab closes

Error reports. When error reporting is set up for the Service, the application sends a report to Sentry when something fails, such as a crash or a save that did not go through. Error reports are Essential: they are how Quodra learns that the Service failed, so they are sent whatever your analytics choice, under our legitimate interest in keeping the Service working. A report carries your account identifier, the reference shown on the error screen, the application's version and technical context, such as the browser and where in the code the failure happened. Before a report leaves your browser, the application removes sensitive field names, recognized tokens, email addresses and the query and fragment of web addresses; this filtering cannot guarantee the removal of every sensitive detail from arbitrary error text. Error reporting sets no cookie, stores nothing in your browser and records no session replay. Quodra's servers report their own failures to Sentry under the same rules.

Operational logs and records. Hosting and the API keep operational logs, including request metadata such as IP addresses and the web addresses requested, for reliability and security, and the API keeps its own records of account events, such as a sign-up, a checkout or a share, in Quodra's database. These are Essential and do not depend on your analytics choice. The account records reach analytics only if you opt in, as section 4 describes; the logs never do. The Privacy Policy has the details.

4. Analytics: Off Until You Opt In#

Quodra's analytics uses PostHog. It runs only where analytics is set up for the Service, and only after you choose Accept. Until then nothing of PostHog loads in your browser, nothing is stored for it and nothing is sent to it.

  • In the application. After you sign in, Quodra asks you once whether it may count which features you use and how quickly the editor responds. Decline and Accept sit side by side and are equally easy to choose, and the question never interrupts a presentation or appears to people viewing a shared or embedded presentation. Your answer is kept on this device and on your account, so it applies on your other devices; an answer someone else gave on a shared browser does not count for you. You can change it at any time in Settings → Diagnostics & analytics.
  • On the website. quodra.app asks separately, about its pricing page only: whether it may count visits to that page and which plan buttons are pressed. You can change that answer with Cookie settings at the foot of each page. The website's events carry no name, email address or account identifier, and are not linked to your Quodra account.
  • What is sent. A fixed list of events, each with opaque identifiers (in the application, your account's and the presentation's), counts, durations, fixed categories, the application's version and technical context such as the browser and operating system; PostHog also receives the IP address your browser sends them from. Never the content of your work: no slide text, equations, code, prompts, titles, file names, comments or email addresses. A page's address is sent without its query or fragment, and the page you came from is not sent. Automatic capture of clicks and page views, heatmaps, session recording and surveys are all off.
  • From Quodra's servers. If you opt in, Quodra's API also sends PostHog its records of your account events, such as your sign-up, checkouts and plan changes, shares, imports and exports, and first milestones like your first presentation. With them go your plan, billing period and payment amounts, a label for the kind of user you are (professional, or the student, educator or researcher role you state when you ask for academic verification) and the kind of email domain you signed up with (academic, company or personal). Without your opt-in, these records stay in Quodra's database.
  • What is stored. In the application, PostHog keeps an identifier in a first-party cookie named ph_<project key>_posthog, set for quodra.app and its subdomains and kept for up to a year, and in localStorage and sessionStorage entries whose names begin with ph_ or __ph_. Your browser may send it with requests to Quodra's sites, as it does any cookie set for them; Quodra does not read it. On the website, PostHog uses localStorage and sessionStorage only and sets no cookie.
  • Where it goes. PostHog stores the events it receives in the United States (see the Subprocessors page).
  • Turning it off. Declining, or switching analytics off later, stops all sending at once and discards anything not yet sent. Entries PostHog already stored stay in your browser, unused, until you clear Quodra's site data (section 8) or opt in again.

5. Essential: Preferences You Set#

These remember choices you make so the application and the website behave the way you left them. All are first-party browser storage, created only by your own actions, and none is used for analytics. Nothing is sent to Quodra from this storage, although a few of the same choices, such as the workspace in view and when you last read your activity, are also saved on your account so that they follow you to your other devices.

StoragePurpose
quodra-theme, quodra-docs-themeLight or dark appearance, in the app and on the website's documentation and legal pages
quodra:tour:…, quodra:first-deck, quodra:guideWhich onboarding tours you have already seen, your progress through the first-presentation checklist, and a guide you opened from the dashboard (kept for that tab only)
quodra-folders:…, quodra-folders-merged:…The folders you created to organize your library, kept per account, and a note that an older folder list on this device (quodra-folders, removed once merged) was merged into yours
quodra:workspace:…The workspace you were viewing, so a reload opens there
quodra:activity-read:…, quodra:shared-seen:…When you last marked your activity read and last opened Shared with me, so Home shows only what is new
quodra:sample-field, quodra:create-sourceThe field of samples you last chose on Home, and where you last started a new presentation from
quodra-editor:…, quodra:studio-recent:…Where you left each presentation (the slide, the zoom and the selection), and the last document each Studio opened, per account
quodra-rail, quodra-rail-mode, quodra-insp, quodra-insp-mode, quodra-inspector-w, quodra-isec-…, quodra-snap, quodra-grid, quodra-align-target, quodra-letter-keys, quodra-code-prefs, quodra-circuit-panelsEditor layout, snapping, grid, alignment, keyboard and code-editor preferences
quodra-insert-recents, quodra-command-recents, quodra-compositionsWhat you inserted and the commands you used recently, and compositions you saved to reuse across presentations
quodra-pv-side, quodra-laser, quodra-board-surfacePresenter-mode preferences
quodra:share-url:…Share links you created on this device, so reopening the share dialog shows the same link instead of pushing you to mint a duplicate
quodra:mp-api-keyA Materials Project API key you chose to enter, kept on your device for your own use of that integration and sent only to Materials Project

6. Local Storage and Other Browser Storage#

The storage entries described above are held in your browser. The application uses stored session credentials to authenticate requests and syncs cloud-account content to the Service; error reports, when set up, are sent as section 3 describes; and analytics, if you opt in, sends its events as section 4 describes. Browser storage is therefore not a promise that the associated information stays only on your device. Clearing Quodra's site data removes local copies, including unsynced edits. Let a sync finish or export your work first.

7. Third-Party Technologies#

Some functionality causes your browser to contact third parties directly. They receive your IP address and standard request information; the other data involved depends on the feature.

  • Google Fonts (fonts.googleapis.com, fonts.gstatic.com) — serves the typefaces, in the application and on the website.
  • jsDelivr (cdn.jsdelivr.net) — serves the Python scientific runtime (Pyodide) and its packages. Package downloads identify the requested files; Python computation runs in your browser. Code or integrations you choose to run can make additional network requests.
  • Google Sign-In, Google Drive and Google Slides (accounts.google.com, apis.google.com, www.googleapis.com) — contacted only if you sign in with Google, import a file from Google Drive or Google Slides, or export to Google Slides. The integration can reach only files you individually pick and the presentations it creates for you. Google's own cookies on Google's domains are governed by Google's policies.
  • Paddle checkout (buy.paddle.com, cdn.paddle.com, checkout-service.paddle.com, checkout-analytics.paddle.com) — contacted only when you buy a paid plan. The checkout runs in a frame served by Paddle, our merchant of record, and inside it Paddle's payment providers load their own frames: Stripe (js.stripe.com, m.stripe.network) for card payments and Google Pay (pay.google.com) where offered. In our checks the purchase set two cookies, both strictly necessary and set by those providers rather than by Quodra: a short-lived bot-protection cookie on paddle.com and Stripe's long-lived fraud-prevention cookie on m.stripe.com. They are governed by Paddle's and Stripe's policies.
  • PostHog (us.i.posthog.com) — contacted only where analytics is set up and you have opted in (section 4).
  • Sentry (sentry.io) — contacted when error reporting is set up and the application reports a failure (section 3).
  • Materials Project (api.materialsproject.org) — contacted only if you enter your own Materials Project API key and search for a crystal structure; your search and your key go to Materials Project.
  • Pages embedded in a presentation — a presentation can embed a page from YouTube (through youtube-nocookie.com), Vimeo, Desmos, Observable, GeoGebra or Google Docs. Your browser loads that page from its provider: in the editor when the slide is on screen, and when presenting or viewing a shared presentation only after you press it. The provider may use its own cookies or storage under its own policies.
  • Media linked by address — a video that a presentation links to by its web address, rather than containing it, is fetched by your browser from the site that hosts it.
  • Cloudflare — hosts Quodra's static websites and application files. It also hosts the MCP endpoint, which handles authorized requests from external clients and can carry deck content.
  • Google Cloud — hosts Quodra's production API, database, object storage and operational logs. Signed-in use can send account information and User Content to that API, separately from optional analytics.

8. How to Change Your Preferences#

  • Analytics in the application: open Settings → Diagnostics & analytics and use the "Usage analytics" switch, or answer the question the application asks once after you sign in. Off is the default; collection also requires analytics to be set up for the Service.
  • Analytics on the website: Cookie settings at the foot of each page of quodra.app reopens the website's question. Where the website has no analytics set up, there is nothing to choose and the link brings you here.
  • Essential technologies: these have no switch, because the Service cannot work without them. Error reports are among them.
  • Appearance: the theme toggle in the app and on each documentation and legal page.
  • Browser storage and cookies: use your browser's site-data controls to view, restrict or clear data for app.quodra.app and quodra.app. This removes local data, not the cloud copy of an account or its content. Google's own cookies are controlled on Google's domains.

If Quodra ever introduces technologies that require consent beyond what is described in this policy, it will ask first — nothing non-essential is activated by default or by implication.

We may update this Cookie Policy as the Service evolves. When we make changes, we will update the "Last Updated" date above. If a change introduces a technology that requires your consent, it will not run until that consent is requested and given.

10. Contact#

Questions about this Cookie Policy may be submitted by email: hello@quodra.app

Product: Quodra