Privacy Policy
Last updated: 2026-10-15
tscaps is a client-side video editor that adds burned captions to your videos. This policy explains what data we collect, why, and how you can exercise your rights over it. We aim for the shortest list of data that lets the product work and we avoid storing anything we don't need.
Data we collect
- Account. When you sign up we store your email address and, if you sign in with Google, the name and profile image Google sends us. We do not store your Google password.
- Projects. When you save a project while signed in to the cloud version, we store its title, your caption styling choices and the transcript text, and we store the video itself together with a lower-resolution preview copy and a thumbnail, so the project opens on any device you sign in from. Editing and export happen on your device unless you ask for an export on our servers (below). Without an account, and on the local version (
/local), your video file stays in your browser. - Exports on our servers and API jobs. When you choose to export a video on our servers instead of on your device, or when a program captions a video through the tscaps API, the video is processed on our servers: its audio is transcribed and the captions are rendered into it. The rendered file is kept for 7 days so you can download it, then deleted.
- Videos you caption from ChatGPT or Claude. When you use the tscaps connector inside a chat app, the video you send to it is uploaded to our storage and processed on our servers the same way, and the result is saved as a project in your account, where it follows your plan's project retention until you delete it. The rendered file is kept for 7 days for download. We receive the video you send and the requests the chat app's assistant makes to our tools (such as listing styles, checking your minutes or starting a video), along with technical context the chat app attaches to them, such as your language or approximate country, which we do not store. We do not receive the rest of your conversation.
- Connected apps. When you connect a chat app such as ChatGPT or Claude to your tscaps account, we store that app's registration, your approval, and the tokens that let it act on your account. Those tokens only reach the captioning tools described above. An access token expires after an hour and a refresh token after 30 days; disconnecting the app from its own settings stops it from using them.
- Transcription audio. When you use cloud transcription, the audio extracted from your video is sent to a third-party transcription provider (Deepgram or ElevenLabs, depending on current configuration) to produce a transcript. The audio is not retained by us. The provider's retention policy applies to its own copy and is documented in their privacy terms.
- Transcript text for smart caption breaks. On the cloud version, after transcription we send the transcribed words to a scoring model that estimates good places to break captions, so line breaks feel natural instead of landing mid-thought. Only the text of the words is sent. No audio, no video, no account information. The words are processed for the duration of the request and are not retained.
- Transcript text for AI styling and translations.On the cloud version, the AI passes that choose which words to emphasize, add emojis, find scenes or suggest cuts, and the translation of a transcript, send the transcript text to a language-model provider (OpenAI). Only the text is sent: no audio, no video, no account information.
- Model downloads. The in-browser versions run speech and person-detection models on your device. Your browser downloads those model files the first time it needs them, directly from the companies that publish them: Hugging Face for the speech model, Google for the person-detection models. Those companies see your IP address and which file you asked for, the same as any other file your browser downloads from the web. They receive no video, no audio, and no account information. The files are then stored in your browser so later videos do not download them again.
- Billing. Payment details (card number, billing address) are handled by Polar, our billing provider. We never see or store them. We do store your subscription status and the email used for billing receipts.
- Answers to our questions. When you are signed in to the cloud version, we sometimes ask a short question, for example after an export. We store that the question was shown to you, so we do not ask again too soon. If you answer, we store the option you picked, and anything you write in the optional text field, with your account, to decide what to improve next. The option you picked, without anything you wrote, is also sent as an anonymous analytics event. A message you write with the editor's "Send feedback" button is stored with your account and emailed to us, along with the page you sent it from, your browser and the app version, so we can reply to you.
- Session cookies. A session cookie keeps you signed in. It is strictly necessary for the product to function. We do not use third-party tracking cookies for advertising.
- Anonymous product analytics. Across every surface — the landing page, the cloud and local editor — we capture anonymous events (page views, feature usage, timings, errors) with non-identifying technical context like device type, browser, viewport size, and release version. We use them to understand which parts of the product are useful, where people get stuck, and when something is failing. The events are sent to PostHog (described below) and never include your video, your audio, your transcript text, or any account information. The adapter runs entirely in memory — no cookies, no
localStorageentries, no identifier that crosses sessions. A browser sending the Do-Not-Track signal has its analytics suppressed. If you want a build with no telemetry at all, the open-source self-hosted version ships with analytics disabled. - Error reports. When the app or our server hits an unexpected error, we send a report with the error message, a stack trace, and the technical context of the failure (route, device type, release version) to Sentry. These reports help us notice and fix bugs without waiting for you to tell us. They do not include your video, your transcript text, or your password. The local version (
/local) sends the same reports — a crash there is still a crash we need to see. If you want a build that reports nothing, the open-source self-hosted version ships with error reporting disabled. - How analytics and error reports travel. Both are sent to a path on
tscaps.io, which forwards them to the providers named below. We do this because tracker blockers drop requests addressed to those providers directly, and we would rather have honest numbers than a sample skewed towards people who do not block. It changes the route, not the contents: the same providers receive the same data described above, and a browser sending the Do-Not-Track signal still has its analytics suppressed.
Anonymous cloud trial signals
When you use the cloud version of tscaps without an account, we briefly store two technical signals so we can offer a free trial without burning our budget on automated abuse: your IP address (which may be stored in a partial or hashed form) and a non-personally-identifying signature of your browser computed locally on your device. They are used only to count your free trial and to throttle attempts that look automated, never shared with third parties, never used for advertising, and never linked to a marketing profile.
These signals are deleted within 30 days. If you create an account, your account replaces this anonymous tracking.
Where your data is processed
We use the following subprocessors to operate tscaps. Each one only receives the slice of data needed for its role:
- Hetzner (Germany) — application hosting.
- Neon (EU) — database (accounts, project metadata, subscription status).
- Cloudflare (global) — DNS, CDN, and TLS termination for our domain.
- Cloudflare R2 — object storage for cloud project videos, files rendered on our servers, and videos sent from ChatGPT or Claude (only when you save a project in the cloud version, export on our servers, use the API, or use the chat connector).
- Cloudflare Turnstile — bot and abuse prevention on sign-up, sign-in, and password-reset pages.
- Polar — billing and payment processing (acts as Merchant of Record).
- Resend — transactional email (verification, billing receipts).
- Deepgram and ElevenLabs — speech-to-text for cloud transcription (only if you opt into the cloud path).
- Modal (United States) — hosts the model that scores where cloud captions should break, which receives only the transcribed words for the duration of the request. It also runs the jobs that process a video on our servers — an export you send to our servers, an API job, or a video sent from ChatGPT or Claude — which receive that video and its transcript for the duration of the job. No account information is sent to it.
- OpenAI (United States) — the language model behind the cloud version's AI styling passes and transcript translations. Receives transcript text only; no audio, no video, no account information.
- Google — OAuth sign-in (only if you choose Google as your sign-in method), and hosting of the person-detection models your browser downloads when you use the effect that places captions behind a person. Receives your IP address and which file was requested; nothing else.
- Hugging Face — hosting of the speech model your browser downloads to transcribe on your device. Receives your IP address and which file was requested; nothing else. No audio is sent there: the model comes to your device, not the other way around.
- PostHog (EU region, Frankfurt) — anonymous product analytics across every surface (marketing site, cloud editor, local editor), configured to discard client IP data. Receives only the anonymous events described above.
- Sentry — error tracking for the cloud and local versions. Receives stack traces and the technical context attached to the error. Configured with personally-identifying defaults turned off, no session replay, no tracing.
How long we keep your data
We keep your account data for as long as the account is active. When you delete your account, we delete your projects and personal data within 30 days. Billing records may be retained longer to comply with accounting and tax obligations. Anonymous cloud trial signals (IP and fingerprint, described above) are kept for at most 30 days. Files rendered on our servers are deleted 7 days after they are made. Projects follow your plan's retention, including projects made from a chat app. Backups are rotated within 30 days.
Your rights
You can request access to the data we hold about you, correction of inaccuracies, deletion (the "right to be forgotten"), and a portable copy in a machine-readable format. Email us at the address below and we will respond within 30 days.
Contact
Questions or requests: [email protected].
Changes
We may update this policy as the product evolves. We will update the "Last updated" date above and, for material changes, notify you by email or in the app before the changes take effect.
This document is a plain-language summary of how we handle your data. It is reviewed periodically and refined as the product changes.