Privacy Policy
Last updated: September 11, 2026
ClipStacks (clipstacks.app) is a small, independently-run tool that turns long videos into short vertical clips using AI. This page explains what the app actually collects, stores, and sends to third parties — no boilerplate, just what the code does.
Who we are
Placeholder — founder must complete before launch
ClipStacks is operated by:
- Legal entity: [PLACEHOLDER: LEGAL ENTITY NAME, e.g. sole proprietorship or company name]
- Organisation number: [PLACEHOLDER: NORWEGIAN ORGANISATION NUMBER (Brønnøysundregistrene)]
- Registered address: [PLACEHOLDER: REGISTERED BUSINESS ADDRESS]
- Country: Norway
- Contact: support@clipstacks.app
This is who controls your data for the purposes of the EU/UK General Data Protection Regulation (GDPR) and Norwegian data protection law.
Signing in with Google
Signing in only asks Google for your identity — the openid email profile scope. That's your email address, name, and profile picture, nothing more. Login does not request access to your YouTube account, your videos, your channel, or anything else on Google's side. We can't see or touch your YouTube account just because you signed in.
Connecting YouTube or TikTok to publish clips
Separately from login, both the operator (ClipStacks admin) account and any account on the Pro plan can choose to connect their own YouTube and/or TikTok account, to publish rendered clips directly from ClipStacks instead of downloading and uploading them by hand. This is opt-in — nothing is connected unless you click “Connect” and complete that platform's own OAuth consent screen.
- YouTube — requests the
youtube.uploadscope, letting ClipStacks upload videos to your channel on your behalf. It cannot read, delete, or otherwise manage your existing videos with this scope. - TikTok — requests TikTok's
video.uploadscope, letting ClipStacks upload videos to your TikTok account on your behalf.
When you connect either platform, we store the OAuth refresh token (and a short-lived access token we refresh automatically) needed to upload on your behalf without asking you to re-authenticate every time. For Pro users, this is kept in a dedicated, email-keyed token store on our server, separate from your account record — never in a browser cookie, and never visible to other accounts. The operator account's own connection is stored the same way, in a separate operator-only store.
These tokens are kept until the connection stops working (for example, because you revoked it — see below) or until you ask us to remove them. To revoke access yourself at any time, remove ClipStacks from your platform's own connected-apps settings — Google Account permissions (myaccount.google.com/permissions) for YouTube, or TikTok's connected-apps settings for TikTok. The next time ClipStacks tries to use a revoked connection, the attempt fails and we automatically clear the stored token. Deleting your ClipStacks account (see “Your data, your choices” below) does not, on its own, revoke a connected YouTube/TikTok token — please also revoke it directly via the platform as described here, or ask us to at support@clipstacks.app.
YouTube API Services
ClipStacks' use of YouTube's upload feature, and of the operator's own download-authentication connection, both use YouTube API Services. By using either feature you're also agreeing to be bound by the YouTube Terms of Service.
Google's own handling of any data it receives through these API calls is governed by the Google Privacy Policy. You can review or revoke any Google account permission ClipStacks has been granted at any time from Google Account › Security › Third-party apps & services.
What we store and why: an OAuth refresh token so we can upload a clip to your channel (or, for the operator account, authenticate video downloads) without asking you to sign in again each time, plus a short-lived access token that we refresh automatically as needed. See “Connecting YouTube or TikTok” above for retention and how to revoke it. Separately, to build a transcript ClipStacks retrieves publicly available video content and metadata (such as captions and playback information) from the source platform for the video you submit — see “Third-party processors” below.
What we store about your account
For every account, we keep a small record containing:
- Your email address
- Your plan (free or Pro)
- Your daily usage counters (how many generations you've used today/this run)
- Your lifetime clip count
- If you've ever been Pro: your Stripe customer ID, the current billing period's end date, and whether your subscription is set to cancel at period end — mirrored from Stripe so the app can show your renewal date and let you manage billing (see Payments below). We never see or store your card number.
No address, no phone number, no card number. This record lives in a single file on our server's storage volume, not a third-party database.
Your clips
Clips you generate are stored on our server and tagged with your account email. No other customer's account can read, list, or download your clips — regular accounts are strictly scoped to their own. The one exception is the operator (the ClipStacks admin account), who can access any account's clips for support requests and abuse investigation, the way a small SaaS operator normally can. Clips are kept for 30 days after you generate them; an automated sweep that runs hourly then removes any clip past that age, so you don't need to do anything for that to happen. You can also delete a clip yourself at any time before that from the Library, or delete your account entirely, which removes every clip tied to it immediately (see Your data, your choices below).
Source videos
When you paste a video URL, we temporarily download the source video to process it (find moments, cut clips, burn captions). That temporary copy is deleted as soon as processing finishes, and as a backstop, anything left over is automatically swept away within 24 hours. We don't keep a permanent copy of the source video you started from — only the clips it produces.
If you upload a video file directly (Edits mode's manual upload, as an alternative to pasting a URL) instead of us downloading one, the same rule applies: it's consumed by the render pipeline and deleted, with the same 24-hour automatic sweep as a backstop for anything abandoned mid-flow.
The audio we extract from the source video to send for transcription (see Groq below) is deleted from our server immediately after transcription completes, with the same 24-hour sweep as a backstop.
Payments
Pro subscriptions are processed by Stripe. When you enter a card number, it goes directly to Stripe — it never touches our server or gets stored by us. Stripe's webhooks tell us your plan changed and keep a few billing fields current on our side (see “What we store about your account” above): your Stripe customer ID, your current billing period's end date, and whether cancellation is scheduled. That's the extent of what we hold — no card number, no billing address.
Analytics
We use simple, first-party analytics we built ourselves — an append-only log of anonymous events (page views, scroll depth, which buttons get clicked, and where people drop off in the signup/generate flow). Each entry is just an event name and a timestamp — nothing ties an entry to your account or identity. There are no third-party trackers, no ad networks, and no ad or tracking cookies. The log is rotated (the oldest data dropped) once it grows past a couple of megabytes; we don't keep it on a fixed calendar-based retention schedule.
One thing worth naming, since it isn't analytics but does involve another company: clip thumbnails in your Library load directly from YouTube's image servers, so your browser contacts Google when you view them, carrying whatever YouTube cookies you already have. We don't send Google anything about you to make that happen — it's the same as any page that embeds a YouTube thumbnail.
Cookies
Signing in sets a single httpOnly session cookie (sc_user) that expires after 30 days. It contains a signed token identifying your account — it can't be read or tampered with by JavaScript on the page (that's what httpOnly means). During the few seconds of the Google sign-in redirect itself, a short-lived,httpOnly oauth_state cookie is also set to protect that handshake; it's deleted automatically as soon as sign-in completes. Connecting YouTube or TikTok sets a similar short-lived state cookie during that handshake only. We don't set any marketing, advertising, or tracking cookies.
Third-party processors, purpose, legal basis and retention
ClipStacks is built on top of several third-party services. This table lists what each one receives, why, the legal basis we rely on under GDPR Article 6, and how long the data is kept on our side. We don't control what a third-party provider itself does with data after it receives it — that's governed by that provider's own privacy policy, not this one.
| Purpose | Data sent | Legal basis | Retention (our side) | Processor |
|---|---|---|---|---|
| Account & login | Email, name, profile picture (identity scope only) | Contract (Art. 6(1)(b)) | Until account deletion | Google (sign-in only) |
| Downloading the source video | The video URL you submit | Contract (Art. 6(1)(b)) | Request-time only; not stored by the provider on our behalf | A self-hosted retrieval instance (if configured), then a third-party video-retrieval API (RapidAPI); an internal fallback handles anything neither can retrieve |
| Fetching video metadata, captions, playback info | The video ID | Contract (Art. 6(1)(b)) | Not stored by us beyond the request | YouTube (Google) — see “YouTube API Services” above |
| Transcribing audio (Whisper) | Extracted audio from the source video | Contract (Art. 6(1)(b)) | Deleted from our server immediately after transcription (24h sweep backstop); we don't control Groq's own retention after they receive it | Groq |
| Finding the best moments, generating captions/titles | The transcript, and in some cases sampled video frames | Contract (Art. 6(1)(b)) | Not stored by us beyond the request; provider retention not controlled by us | Groq (primary), Google Gemini and Anthropic Claude (fallback / visual ranking) |
| B-roll search (optional) | AI-derived search terms describing your video's content | Contract (Art. 6(1)(b)) — feature you enable | Not stored by us beyond the request | Pexels |
| Sound-effect search (optional) | Whatever you type into the SFX search box | Contract (Art. 6(1)(b)) — feature you use | Not stored by us beyond the request | Freesound.org |
| Sound-effect generation (optional) | Text description of the effect you request | Contract (Art. 6(1)(b)) — feature you use | Not stored by us beyond the request | ElevenLabs |
| Publishing clips to YouTube/TikTok (Pro, opt-in) | OAuth refresh/access tokens; the clip file being uploaded | Contract (Art. 6(1)(b)) — you initiate the connection | Until revoked or connection fails definitively — see above | YouTube (Google), TikTok |
| Payments | Card details go directly to Stripe, never to us; we receive plan/billing-status webhooks | Contract (Art. 6(1)(b)); legal obligation (Art. 6(1)(c)) for financial records | Billing fields on our side kept until account deletion; Stripe keeps its own records per its own policy | Stripe |
| Hosting, storage, background jobs | Everything above, as infrastructure for running the service | Contract (Art. 6(1)(b)); legitimate interest (Art. 6(1)(f)) in running reliable infrastructure | Per the retention rules above | Railway. [PLACEHOLDER: CONFIRM RAILWAY HOSTING REGION] |
| Anonymous product analytics | Event name + timestamp only, no identifiers | Legitimate interest (Art. 6(1)(f)) in understanding product usage | Rotated once the log exceeds ~2MB; no fixed calendar limit | First-party only — no third party |
We looked for a genuine, code-level integration with a CDN/edge-security provider (e.g. Cloudflare) beyond domain registration and DNS, and didn't find one processing your data at request time — only domain hosting. If that changes, we'll add it here.
Your rights
Under GDPR (and equivalent Norwegian law), you have the right to: access the data we hold about you; correct it if it's wrong; have it erased; restrict or object to certain processing; and receive a copy of it in a portable format. In practice:
- Access & export — you can request and download a copy of your account data and clip metadata at any time. If you don't see a self-serve option in the app yet, email support@clipstacks.app and we'll send it to you.
- Erasure — you can permanently delete your account, which removes your account record and all of your clips (see “Your data, your choices” below).
- Correction, restriction, objection — email us and we'll act on it; most of these don't have a self-serve button yet.
If you're not satisfied with how we've handled a privacy request, you can lodge a complaint with Datatilsynet (the Norwegian Data Protection Authority, datatilsynet.no), or with your own country's supervisory authority if you're in the EU/EEA.
Your data, your choices
You can delete any individual clip yourself at any time from the Library. You can also permanently delete your entire account — this removes your account record and every clip tied to it, and cannot be undone. If you don't see this as a button in the app yet, email support@clipstacks.app and we'll do it for you. Note: if you have an active Pro subscription, cancel it in the Stripe billing portal first — deleting your ClipStacks account does not automatically cancel billing.
Changes to this policy
If how we handle data changes, we'll update this page and the “last updated” date at the top. We won't make material changes to how we use previously-collected data without telling you.
Contact
Questions about privacy? Email support@clipstacks.app.