Privacy Policy
Last updated: September 12, 2026 · Applies to the Classroom Captions Chrome extension, website, and dashboards.
The short version
- Teachers sign in with Google; we store their email and basic profile so billing and room sharing work.
- Students never have accounts. We collect no student names, IDs, or personal information — students are anonymous.
- Captions are temporary. Shared caption text is deleted within 24 hours. Translated phrases are reused from a shared cache for up to 30 days so we don't pay to translate the same sentence twice — with no record of who said them (§6).
- Transcripts belong to the teacher. They are saved to the teacher's own Google Drive, never to us.
- Stripe handles all payments. We never see or store credit card numbers.
- Anonymous bug and usage reports. The extension sends crash reports and feature-usage counts with no names, no caption text, and no page addresses. You can turn this off in Settings.
1. Who we are
Classroom Captions ("we," "us," "the Service") is a Chrome extension and related web service that turns a teacher's speech into live on-screen captions and translations. It is operated by its developer in Texas, United States. For anything in this policy, contact support@classroomcaptions.com.
Where we operate. Classroom Captions is operated from and intended for users in the United States. It is not directed to, and we do not knowingly market to or collect personal data from, individuals located in the European Union, European Economic Area, United Kingdom, or other regions whose data-protection laws (such as the GDPR) would otherwise apply. If you are located in one of those regions, please do not use the Service; if you choose to use it, you understand that your information is processed in the United States under this policy and applicable U.S. law.
2. What we collect
From teachers (account holders)
| Data | Why | Where it lives |
|---|---|---|
| Email address and Google profile basics (name, avatar) | Sign-in, your account, billing receipts, support | Our database (Supabase) |
| Subscription status and AI Coin ledger | Knowing whether your plan or trial is active, and your coin balance | Our database (Supabase) |
| Payment information | Subscription and coin-pack purchases | Stripe only. Card numbers never reach us and we cannot see them. |
| Speech, as caption text | Displaying and translating your captions | Processed in real time; shared caption text is stored at most 24 hours (see §6) |
| Caption-session records: when you pressed Start and Stop Captions, Basic or AI mode, how many caption languages were on, whether a class room was open, and how many captions were produced. Also a monthly count of characters translated. Never the words that were spoken or translated. | Showing you "Sessions this month" and "Translation this month" on your dashboard; keeping the premium translation allowance honest | Our database (Supabase); visible only to you |
| Quick Add links: up to five website names and https addresses you choose to save in the embed widget | Putting a page you use often on the board with one tap | Our database (Supabase); visible only to you; edit or delete them in the widget |
| Operational logs (e.g., a record that a purchase or AI session happened, with IP address) | Security auditing and abuse prevention | Our database (Supabase), operator-only |
| Sign-up signals: the IP address you signed up from and its country, a random install identifier the extension creates on your device, and — if you add a card — the country the card was issued in | Keeping free trials to one per teacher. A sign-up that looks like a repeat may be asked for a card before the trial starts; nothing is charged during the trial | Our database (Supabase), operator-only; deleted with your account. Never used for advertising or shared |
Speech and audio
- Basic Mode (default): speech recognition is done by Chrome's built-in Web Speech service, which is operated by Google and may send audio to Google's servers for processing under Google's privacy policy — the same service behind voice typing in Chrome. The extension never records, stores, or receives the audio; only the resulting text reaches it.
- AI mode (optional, uses AI Coins): audio is streamed to OpenAI for transcription through a short-lived, secure session. The audio is not stored by us; the resulting caption text is handled like any other caption.
- Caption text is sent to Google Cloud Translation — or to Microsoft Azure AI Translator when Google is busy or unavailable, or to OpenAI in AI mode — to produce the translations you selected. Only the caption text and the target languages are sent; no teacher, class, or student identity goes with them.
From students — what we do NOT collect
Students use the extension without accounts, and we deliberately collect no student personal information:
- No student names, student IDs, email addresses, or profiles. There is no way to create a student account.
- A student device is identified only by a random UUID generated on that device, used solely to count "N students joined" for the teacher. It is not linked to any identity.
- The only data a student device sends is: the join code they typed, a heartbeat carrying the caption language they are reading, and — only if they choose to use the optional Q&A feature — the question text they type. All of it is tied to the anonymous UUID and deleted within 24 hours.
- If a student speaks during "student response mode," that speech is processed exactly like teacher speech (by Chrome's speech service in Basic Mode, by OpenAI in AI mode) and is never stored with any identity attached.
- The student spinner and team sorter widgets let a teacher load a class roster (student names and periods) from a CSV file. That roster is parsed and kept only in the teacher's own browser storage on that device. It is never uploaded to us or to anyone, and removing it in the widget's settings deletes it.
Diagnostics and product analytics (anonymous)
So we can find bugs and see which features earn their keep, the extension sends two kinds of anonymous reports:
- Crash reports: when the extension itself hits an error, the error message and the extension file it came from are reported. Web addresses and email addresses are stripped out before anything is sent.
- Usage counts: events like "captions started (3 languages)," "annotation opened," or "a student question arrived" — feature names, counts, and durations only.
These reports are tied to a random ID generated on your device, not to your account, name, or email. They never include caption text, transcripts, translations, class codes, student information, or the pages you visit. Reports come from the extension itself, not from student devices' content — a student device reports only its own anonymous feature use (for example, that captions were started), never what anyone said.
Your choice: turn off "Share anonymous usage and error reports" in the extension's Settings page at any time. The switch takes effect immediately.
3. Children's privacy (COPPA)
The Service is purchased and operated by teachers. Students — including students under 13 — may read captions through the extension, but the Service is designed so that no personal information is collected from students:
- Students have no accounts and provide no name, email, or identifier.
- Student speech (when a teacher uses student response mode) is processed by Chrome's speech service in Basic Mode, or through OpenAI in AI mode, with no personally identifiable information attached — we do not know, and cannot know, which student is speaking.
- A class roster a teacher loads into the spinner or team sorter widgets stays in that teacher's browser on that device and is never sent to us.
- The anonymous device UUID and any question text are temporary (deleted within 24 hours) and are never combined with any identity.
Because we do not collect personal information from children, COPPA's parental-consent requirements are not triggered by ordinary use. Teachers and schools remain responsible for their own policies about classroom technology use.
4. Student education records (FERPA)
We do not store student education records. Class transcripts are saved to the teacher's own Google Drive, in a folder the extension creates in the teacher's account — not to us. The teacher controls, edits, shares, and deletes those files exactly like any other Drive document. Caption text that passes through our systems for room sharing is anonymous (no student identity is ever attached) and is deleted within 24 hours. If a teacher uses the optional "share with parents" link, the shared snapshot is stored for at most 7 days and then expires; teachers should remove student names from transcripts before sharing, as they would with any document.
5. Payments
All payments — subscriptions (any plan, monthly or annual) and AI Coin packs — are processed by Stripe. Card numbers, billing addresses, and payment credentials are entered on Stripe's hosted pages and stored by Stripe under its own privacy policy. We receive only what we need to run your account: whether your subscription is active, which coin pack was purchased, and Stripe's customer/session identifiers. To keep free trials to one per teacher, Stripe also tells us whether a card has been used on another Classroom Captions account (a card "fingerprint" — an identifier Stripe derives from the card, not the number), whether it is a credit, debit, or prepaid card, and the country it was issued in; we keep those three facts and nothing else about the card. We never see or store credit card numbers.
6. Data retention and deletion
- Shared captions and student questions: deleted within 24 hours of creation.
- Presence data (the anonymous "N students joined" heartbeats): pruned within 24 hours.
- Translation cache: deleted after 30 days. To avoid paying to translate the same sentence twice, a translated phrase is kept in a shared lookup table along with its translation — so "open your lab notebooks" translated once for any teacher is reused for every teacher after that. Entries hold only the phrase and its translations: no teacher, class, room, or student is recorded alongside them, and nothing links a phrase back to who said it or when it was said in class. Entries are looked up by exact phrase only and cannot be listed or browsed.
- Parent transcript-share links: expire and are deleted after 7 days.
- Teacher account data: kept while your account exists. When you delete your account (from the extension's Settings page or the teacher dashboard), your Stripe subscription is cancelled first, and then your profile and everything attached to it — subscription record, coin ledger, rooms, classes, share links, caption-session records, translation counts, Quick Add links, sign-up signals and card facts — is deleted in one cascade.
- Transcripts in your Google Drive are your files; account deletion on our side never touches them.
- Audit log entries (purchase/security events) are retained for operational security.
7. Third-party services
| Service | What it does for us | What it receives |
|---|---|---|
| Supabase | Database, authentication, and backend functions | Teacher account data, temporary caption/room data |
| Stripe | All payment processing | Payment details (entered directly with Stripe), teacher email |
| OpenAI | AI-mode transcription, AI translation, audio-file transcription, and optional content moderation | Audio streams and caption text during AI-mode sessions; no student identity |
| Google Cloud Translation | Caption translation (primary engine) | Caption text and target languages |
| Microsoft Azure AI Translator | Caption translation when the primary engine is busy or unavailable | Caption text and target languages |
| Google (Sign-in & Drive) | Teacher sign-in; saving transcripts to the teacher's own Drive | OAuth handled by Google; the Drive permission is limited to files the extension creates |
| Anthropic | Powers the support assistant: suggesting an answer before you file a ticket, and sorting and drafting replies to tickets you do file | The text of a support question or ticket you send us, and your name and email if you included them. No captions, transcripts, or student data. |
| Brevo | Sends our email — support replies, trial notices, and product news | Your email address and the contents of the message we send you |
| Sentry | Crash reporting, so we can fix bugs | Anonymous error reports: the error message (scrubbed of web addresses and emails), the extension file involved, and the extension version. No account identity. |
| PostHog | Anonymous product analytics | Feature-usage events (names, counts, durations) tied to a random device ID. No account identity, no caption text, no page addresses. |
We do not sell personal information, and we do not use captions, transcripts, or student data for advertising or to train AI models.
8. Security
All traffic is encrypted in transit (HTTPS/WSS). Database access is protected by row-level security so each teacher can only reach their own data; payment webhooks are cryptographically verified; no provider credentials ever ship in the extension. No system is perfectly secure, but the architecture is built so that the most sensitive data (payments, student identity) is either handled by Stripe or simply never collected.
9. Emails we send you
We send teachers two kinds of email, and you control the second one completely.
Service emails are about your own account and we send them whether or not you want product news: your receipts and billing notices from Stripe, replies to anything you send our support team, and notices about your trial or subscription — for example that your free trial is about to end, or has ended. These are the emails that stop your account surprising you, so they are not optional while you have an account. Deleting your account stops them.
Product news is optional. When we add something we think you would actually use in class, we may email you about it, and if your trial has lapsed we may let you know what has changed since you tried it. That is the only marketing we do: no newsletters you did not ask for, no third-party offers, and we never sell, rent, or share your email address with anyone for their own marketing.
- Choosing at sign-up: when you create your account the product-news box is ticked. Untick it and we will never send you one.
- Changing your mind: the same switch lives in your teacher dashboard, and every product-news email carries a one-click unsubscribe link in its footer. Unsubscribing takes effect immediately and permanently — it is enforced in our database, not by a person remembering.
- Unsubscribing never breaks anything. You keep getting receipts, support replies and trial notices, because those are about your account rather than our marketing.
We do not send text messages or make marketing phone calls, and we do not collect a phone number for either purpose.
We keep a dated record of which version of this policy and of our Terms each account agreed to, so we can always tell what you actually signed up to rather than guessing from the current wording.
10. Your choices and rights
- Access / export: email us and we will provide a copy of the account data we hold about you.
- Deletion: use "Delete my account" in the extension's Settings or the teacher dashboard, or email us. Deletion cascades through everything we store about you.
- Cancel billing: "Manage plan" opens the Stripe portal where you can cancel anytime.
- Turn off product news: untick the product-news box at sign-up, flip the switch in your teacher dashboard, or click unsubscribe in any product-news email (see section 9).
- Turn off anonymous reports: the "Share anonymous usage and error reports" switch in the extension's Settings stops all crash and usage reporting instantly.
- Students / parents: since we hold no student personal information, there is nothing to request — but questions are always welcome at the address below.
11. Changes to this policy
If we make material changes, we will update this page and the "last updated" date, and note the change on the landing page. Continued use of the Service after a change means you accept the updated policy.
12. Contact
Questions, requests, or concerns: support@classroomcaptions.com
