YouTube Timestamp logoYouTubeTimestamp
Back to home
Legal

Privacy Policy

Last updated September 29, 2026. This policy covers the YouTube Timestamp web app and Chrome extension, offered by Ketan Sahu.

Overview

YouTube Timestamp is offered by Ketan Sahu. This policy covers the website, web app, and Chrome extension, including the extension's version 3.0.0 Workspace side panel, local Library, AI features, optional cloud connection, and lifetime licensing.

The extension includes a release-specific privacy policy in privacy.html. The extension disclosures below reflect that release. The website and web app also process account, cloud-summary, billing, and website analytics data as described separately below.

Local and cloud modes

New users start in local mode. Existing connected users keep cloud mode until they change it in Settings. Local mode pauses requests to our application backend, including account refresh, timestamp sync, cloud transcript uploads, and crash reporting. It retains stored account credentials for switching back to cloud mode.

Local mode does not mean that every feature works offline. Caption capture contacts YouTube, thumbnails and some interface fonts load from external services, AI requests go to your selected provider, and license activation and checks contact Dodo Payments. Opening sign-in, billing, help, or feedback links also contacts the linked service. Switching modes does not erase information already sent to a service.

Information stored on your device

When you save a timestamp, the extension stores video title, channel name, video URL, timestamp position, and any optional note or tags you enter. A copy is kept on your device in Chrome's local storage so your library remains available offline. The extension also reads the current YouTube video's identity, title, channel, duration, playback position, and available caption information to display the Workspace and link saved content to the correct video.

The local Library stores video records, folder names and assignments, captured or imported transcript text and timings, generated summaries, questions, AI answers, and source references in the extension's IndexedDB on this browser profile. It also stores settings, selected AI providers and models, generation dates and status, and error or interruption records so work can be restored after reopening the extension. Local folders, imported transcripts, and AI conversations are not automatically uploaded to your Timestamp cloud account.

Account information

Signing in is optional for local use of the extension. When you sign in with Google (on the web or through the extension), we create or recognize an archive account and store:

  • Name, email address, and profile image from Google
  • Optional display name on your profile
  • Your plan status (free or pro)
  • Extension session credentials (hashed tokens and expiry) when you connect the Chrome extension

Optional account connection and sync

Account connection is optional. In cloud mode, when you Sign in, the extension syncs your timestamps with your archive account on our backend (youtubetimestamp.com) so you can access them from the web dashboard and other signed-in browsers. Existing local timestamps are merged into the connected account automatically. While signed in, the extension also stores short-lived authentication credentials and a minimal account profile (such as name, email, and avatar URL) locally so it can keep you signed in. Disconnecting removes those credentials from the extension. In cloud mode it also attempts to revoke the session on our backend; local mode does not send that request. Local timestamp copies remain on the device after sign-out.

When you connect, the extension opens Google sign-in through our web backend. We receive the Google account identity needed to create or recognize your archive account (name, email, and profile image when provided by Google). The extension then receives short-lived access credentials from our backend. Those credentials authenticate sync requests that create, update, and delete your timestamps in your account.

Cloud timestamps and web library data

When you save a timestamp on the web or sync one from the extension in cloud mode, we store the fields needed to show and restore that moment:

  • YouTube video ID, title, channel name, and thumbnail URL
  • Timestamp position (seconds into the video)
  • Optional note (up to 300 characters) and tags
  • Favorite flag, source (web, extension, or import), and soft-delete time
  • Folder names and folder membership when you use Pro folder organization

AI requests and your API keys

When you choose Generate summary or send a chat question in local mode, the extension sends the video's title, transcript text and timings, your question where applicable, and a limited selection of recent questions and answers for that video to the selected AI provider. This includes text you imported yourself. These requests use your own API key and go directly from the extension to Google Gemini, OpenRouter, OpenAI, or DeepSeek. OpenRouter forwards the model request to the provider serving your chosen model. Your saved notes and unrelated videos are not added to the AI prompt.

AI processing takes place on those services, not entirely on your device. Their privacy policies, retention practices, account settings, and API charges apply. The extension does not set their retention periods or guarantee that they delete information when you delete a local conversation. Cancelling a request cannot recall information already sent. Responses and their provider/model information are saved locally. AI responses may be inaccurate.

Each provider's API key is kept in Chrome session storage by default and is cleared when the browser session ends. If you choose to remember a key, it is stored in a separate secrets store in the extension's IndexedDB on this device. Keys are available to trusted extension pages, not the YouTube page, and are sent only to the selected provider's API for authentication. They are not sent to our backend or included in library exports. You can remove a provider key in Settings. Removing a stored key does not revoke it at the provider; use that provider's account controls to revoke it. Remembered keys rely on the security of your browser profile; the extension does not add a separate password or encryption layer to this local storage.

Video transcripts

Choosing Capture captions saves available YouTube captions to your local Library. Import text reads a transcript file you select and stores its content locally. These local transcripts are not uploaded to our shared cloud cache by those actions. They are sent to an AI provider when you explicitly request a summary or chat answer, as described above.

In cloud mode, when you are signed in and save a timestamp, the extension may copy that video's official captions, the same timed transcript YouTube can show in the player, and upload them to a shared cache on our servers. On YouTube watch pages, the extension keeps a short-lived, in-tab copy of caption-track responses the player already loads. It does not read other YouTube network traffic through this caption bridge. After a save, it may briefly turn captions on so the player loads them, then restore your previous setting.

We store caption text, timing, language, whether the track was auto-generated, the video id, and video duration when the player reports it. This supports cloud transcript and summary features. Caption text is shared across accounts for that video. It is not stored as part of your private timestamp library.

Transcripts are not uploaded to our cloud cache when you are signed out. You can turn automatic cloud capture off with Turn off automatic cloud caption capture in Settings under Privacy. Explicit local capture uses your local trial or lifetime license and does not require cloud sign-in. Deleting a timestamp, signing out, or deleting your account does not remove a transcript already in the shared cache; if your account is deleted, your contributor id on that row is cleared.

Web app AI summaries

For summaries requested in the web app, if a summary needs to be generated, we send the saved video's caption text, segment indexes, caption language and video duration to Google's Gemini models through Google Cloud Vertex AI for token counting and summarization. We also send our summary instructions and output format. We do not send your private notes, tags, folders, account ID, email or other account profile information in these requests.

We share cached summaries of the same caption source across accounts. Your account's unlock record controls access and allowance use; other users do not receive your private notes or account details. Saving a summary moment creates an ordinary timestamp in your account. Removing a timestamp or account does not remove shared captions or summaries. We retain generation attempts, token usage, cost and bounded error categories to enforce spending limits and diagnose failures. Caption text and summary prose are not included in analytics events.

Our app does not ask Google to create a stored conversation for these summary requests. Under the Google Cloud Service Specific Terms, Google does not use customer data to train or fine-tune models without our permission or instruction. Google may retain prompts for abuse monitoring, including review by authorized personnel, and temporarily cache inputs and outputs. Our use of Vertex AI does not guarantee zero retention. See Google's data retention and abuse monitoring documentation for details.

Plans, payments, and lifetime licenses

Free accounts can sync up to 100 timestamps to the cloud. Beyond that limit, new saves stay on this device only and are marked as not backed up until you upgrade or free up room by deleting synced timestamps. Signed-out note-taking remains unlimited and stores notes locally.

Pro subscriptions are billed through Dodo Payments. Checkout and payment-method updates happen on Dodo's hosted pages. We never receive or store card numbers.

To keep your membership in sync we store a billing record that includes a Dodo customer ID and email, subscription ID, product ID, status, amount, currency, billing interval, next billing date, and cancellation fields when applicable. We also store webhook delivery metadata so we can process subscription events reliably.

The extension also offers a separate lifetime license for paid local features in Settings. Purchase and recovery links open Dodo's hosted checkout and customer portal. When you activate, check, or deactivate a license, and during scheduled or overdue validation of an existing activation, the extension contacts Dodo's live API directly, including in local mode. These requests contain your license key and, where applicable, an activation instance ID or a randomly generated installation reference. They do not include your notes, transcripts, AI keys, or chat history. The license key and activation record are stored separately in the extension's IndexedDB and excluded from library backups. No Timestamp account is required. Trial start and expiry, clock evidence, and license validation times are stored locally to enforce the 14-day trial and 14-day offline grace for paid local features. Trial and license evidence are not included in library backups. Cloud subscriptions remain separate. Dodo uses your purchase email to deliver the license key and customer portal access links.

Dodo collects the contact, billing, and payment information needed to complete your purchase. Customer contact information, payment amount and status, and license records are available to us through Dodo for purchase support and license management. The extension does not collect payment-card details. Dodo's own privacy and retention policies apply to its checkout, customer portal, and payment records.

Crash reporting

To fix bugs without waiting for manual reports, the extension may send technical crash and error reports through our backend to an error-monitoring service (Sentry). Reports can include the extension version, Chrome version, locale, error message and stack frames from our own code, a short sequence of technical events, coarse tags such as signed-in state or plan, and a random installation ID (or your account user ID when signed in). These identifiers allow reports from the same installation or account to be linked; the reports are not anonymous.

Crash reporting is designed to send technical diagnostics rather than your saved content. It does not attach library exports, notes, transcripts, AI conversations, API keys, license records, or account profiles. Error text and stack frames are filtered for recognized authentication secrets before dispatch. Reports are routed through youtubetimestamp.com (they are not sent directly from the extension to Sentry). You can turn crash reporting off with Turn off crash reporting in Settings under Privacy. No sign-in is required to change this preference. Local mode disables cloud requests and crash reports.

What we do not collect

The extension does not include advertising or product-analytics SDKs, and does not use session replay. Crash reporting is limited to the technical error data described above. Caption text may leave your device through cloud capture as described above, or when you explicitly request a local AI summary or chat answer using your Gemini, OpenRouter, OpenAI, or DeepSeek key. We do not collect your general browsing or YouTube watch history. We use the video information needed for the current Workspace and the videos you save or work with. We do not sell your data or use it for advertising, credit, lending, or unrelated purposes.

Website analytics

The web app uses Simple Analytics, a cookie-less analytics service, to count visits, countries, and a few product events such as sign-up. The Chrome extension does not load this script. Caption text and summary prose are not included in analytics events. See Simple Analytics' privacy policy.

Third parties and network requests

The extension may cause your browser to contact the services below. The web app also uses Google for sign-in and cloud summaries, Supabase for hosted storage, Dodo Payments for billing, and Simple Analytics as described above.

  • YouTube (youtube.com): to read video metadata and obtain available captions for local capture or eligible cloud uploads. These requests occur in the context of the YouTube page and may use your existing YouTube session. The extension does not receive your Google password.
  • YouTube image servers (i.ytimg.com): to display video thumbnails in your library. These image requests contain the video ID and your IP address, but do not include your saved notes or the library page's referrer.
  • Our backend (youtubetimestamp.com): if you connect an account, to complete sign-in, refresh credentials, sync timestamps, check session status, or revoke the session; to upload video transcripts when you save a timestamp unless you opt out; and for optional crash reporting as described above.
  • Google: for optional account sign-in (OAuth) when you choose to connect, and direct Gemini API requests when you explicitly generate a local summary or chat answer. Those AI requests include your Gemini key, video title, transcript, question, and relevant chat context as described above.
  • Dodo Payments: when you open checkout or the customer portal, or activate, check, or deactivate a lifetime license. Existing activations are also checked periodically and when a paid local action needs an overdue check. Card details are handled on their hosted checkout. License requests work independently of cloud mode.
  • OpenRouter: when you select OpenRouter and explicitly generate a local summary or chat answer. Requests include your OpenRouter key, transcript, and relevant chat context. OpenRouter routes the request to its model provider.
  • OpenAI: when you select OpenAI and explicitly generate a local summary or chat answer. Requests go directly to OpenAI and include your OpenAI key, transcript, question, and relevant chat context.
  • DeepSeek: when you select DeepSeek and explicitly generate a local summary or chat answer. Requests go directly to DeepSeek and include your DeepSeek key, transcript, question, and relevant chat context.
  • Google Fonts (fonts.googleapis.com, fonts.gstatic.com): to load the UI typefaces (Fraunces and Inter) when the on-page YouTube controls render. The extension's bundled privacy page uses local fallback fonts and does not request Google Fonts.
  • Sentry: only for optional crash reports, and only after our backend receives and forwards a sanitized report (the extension does not talk to Sentry directly).
  • Supabase: hosted database for web account, timestamp, transcript, summary, and billing records.
  • Tally (tally.so): only if you click the Feedback button, which opens a form in a new tab.

Those services may process standard connection data (such as IP address) under their own policies. Our application API, AI, and licensing requests use HTTPS. External links open the destination service, which handles data under its own policy. API calls to our backend use an allowlisted chrome-extension:// origin rather than a separate backend host permission.

Chrome extension permissions

  • storage: to save timestamps, settings, optional account sessions, and session-only AI keys locally
  • identity: to run the optional Google account connection flow
  • alarms: to schedule background cloud sync and periodic checks of an activated lifetime license
  • sidePanel: to open the Workspace alongside YouTube in Chrome's side panel
  • unlimitedStorage: to accommodate the local Library, including transcripts and AI results, beyond Chrome's normal storage quota; available device space still limits storage
  • https://*.youtube.com/*: to run the bookmark controls and caption bridge, read current-video metadata, and capture captions for the features described above
  • https://generativelanguage.googleapis.com/*: to send your requested Gemini summaries and chat questions using your Gemini key
  • https://openrouter.ai/*: to send your requested OpenRouter summaries and chat questions using your OpenRouter key
  • https://api.openai.com/*: to send your requested OpenAI summaries and chat questions using your OpenAI key
  • https://api.deepseek.com/*: to send your requested DeepSeek summaries and chat questions using your DeepSeek key
  • https://live.dodopayments.com/*: to activate, validate, and deactivate lifetime licenses, including periodic checks in local mode

Exports, retention, and deletion

Library exports are files you save and control. They can contain video metadata, notes and tags, folders, transcripts, summaries, chat questions and answers, and source references. They do not contain AI keys, account credentials, license keys, activation records, or trial evidence. Exported content is not encrypted by the extension. Import reads the selected file locally and merges supported saved content; it does not restore credentials or paid access. Notes may sync if you later enable cloud mode.

Local content remains in your browser profile until you delete it with the available Library controls, clear the extension's data, or uninstall the extension. Settings provides API-key removal and license deactivation; transcript and chat controls let you delete their local content. Ending a trial or deactivating a license does not delete saved content. Deactivation releases the device slot; it does not delete Dodo's purchase records. Uninstalling does not release a license activation slot; deactivate first or use Dodo's customer portal to manage it later.

Deleting local content does not delete copies you exported, information already processed by AI providers, or Dodo payment records. Cloud timestamp deletions are sent to our backend when cloud sync is active; sign-out and uninstall are not account deletion requests. Shared caption-cache entries are separate from your private timestamp library. For account-data deletion or questions about server retention, contact us at the address below. Third-party services retain data under their own policies and applicable requirements.

Cloud account retention and control

You can delete individual cloud timestamps at any time. Disconnecting the extension removes its locally stored account credentials. In cloud mode it also attempts to revoke the session on our backend; local mode does not send that request. Local timestamp copies remain on the device.

Shared transcripts and summaries remain available to other accounts after you delete timestamps or your account. Account deletion clears the contributor ID on shared caption records. Canceling Pro does not delete your library; see the Terms of Service for how the free limit applies after a subscription ends.

To ask about access, deletion of your account data, or server retention, email codebyketan@gmail.com.

Limited use

Our use of information received from Google APIs follows the Chrome Web Store User Data Policy, including its Limited Use requirements. We use this information to provide and improve the user-facing features described in this policy. We do not sell it or use it for advertising, credit, or lending decisions.

Changes

We may update this policy when the product changes. The "Last updated" date at the top reflects the latest revision.

Contact

Questions about this policy: codebyketan@gmail.com