Privacy Policy
SnapCaption is an Android and iOS app that turns one photo and a few keywords into social media captions and hashtags. Photo analysis and caption generation happen on your device, and the operator does not run a server.
Summary: There are no accounts, sign-in or operator servers. The photo you pick, the keywords you type and the captions generated never leave your device. Google AdMob and Google User Messaging Platform (for ads) Firebase Crashlytics (for crash reports) and Firebase Analytics (for usage statistics) may process the information described below. Firebase Analytics uses automatically collected items only; photos, labels, keywords and captions are never sent as events.
1. Information processed and purposes
| Category | What is processed | Purpose |
|---|---|---|
| Photo | One photo you pick with the system photo picker. The iOS app makes a copy in the app's temporary folder for preview and analysis; the operating system cleans up that copy | Preview and on-device photo analysis. Never sent to the operator or anywhere else |
| Photo analysis results | Labels for objects and scenes in the photo, classified on the device (Android: Google ML Kit image labeling, iOS: Apple Vision) | Suggesting a situation and keywords. Labels are not sent off the device or written to logs |
| Keywords and choices | Keywords you enter (up to 12 characters) and the situation, mood and tone you choose | Generating captions. Processed only on the device |
| Local history | Generation history (keywords, choices, generated captions and hashtags, and the on-device path to the photo you picked), saved captions, recent keywords, language, display and generation-mode settings, reward passes | Revisiting history and keeping settings. Stored only in the app's storage on the device |
| Advertising | Advertising identifiers (Android advertising ID and app set ID, iOS IDFA when tracking is allowed), approximate region estimated from the IP address, ad impressions and interactions, device, app and diagnostic information, consent status | Serving, measuring and frequency-capping Google AdMob ads, security and fraud prevention |
| Unity Ads (AdMob mediation bidding partner) | The Android and iOS apps include the Unity Ads SDK, which may process advertising identifiers, approximate location, ad interactions, and device and diagnostic information when ads are served through AdMob. Handling follows the Unity Privacy Policy | Serving ads and preventing fraud |
| Usage analytics (Firebase Analytics) | App instance ID, automatically collected events such as screen views and sessions, device model, OS, app version and language, and an approximate region inferred from the IP address. On iOS, the IDFA may also be processed if you allow tracking. No custom events or user ID are used, and photos, analysis labels, keywords and captions are never included | Understanding app usage and improving quality |
| Crash information | Stack traces when the app crashes, device state, device model, OS and app version, installation identifier | Finding and fixing errors with Firebase Crashlytics |
The operator does not create account information that identifies you and does not collect or store any of the above on its servers. To check for updates, the iOS app queries the Apple App Store with the app's bundle ID only.
2. Photo handling and device permissions
- Android uses the system Photo Picker and iOS uses the system PhotosPicker, so the app can access only the item you pick at that moment. It never asks for access to your whole photo library.
- The photo is used on the device to classify objects and scenes and suggest a situation and keywords. Neither the photo nor the labels are sent anywhere.
- On Android, the image labeling model is downloaded once and provided by Google Play services, so the first analysis may need a network connection. Google ML Kit may send Google diagnostic information such as device and app information, installation identifiers, performance metrics, input and output sizes and error codes, but not the image content.
- Generation history stores only the on-device path to the photo, not the photo itself. If you turn on thumbnail saving in settings (off by default), the history screen shows the photo at that path as a thumbnail.
- If you choose to share, the caption text or a story card image you create (without your photo) is sent to the app you pick, and that service's policy applies from then on.
- Depending on device settings, local app data may be handled by Google or Apple backup and device-transfer features. On Android 8 to 11 devices, settings and recent keywords may be included in the backup in your Google account.
3. On-device AI
On supported devices, an on-device AI can polish the wording. Android uses Google ML Kit GenAI Prompt (Gemini Nano) and iOS uses Apple's system on-device model.
- Only the caption text, not the photo, is passed to the AI, and both input and output stay on the device and are never sent to an external generative AI server.
- If the device does not support it or it fails, the app switches automatically to on-device template generation and keeps working.
- You can choose template-only generation in the app's generation mode setting.
4. Third-party services and international processing
SnapCaption uses the following services from Google LLC.
- Google AdMob · Google User Messaging Platform — ad delivery and consent management
- Firebase Crashlytics — crash and error diagnostics
- Firebase Analytics — usage statistics from automatically collected events
- Google ML Kit (Android) — on-device image labeling and on-device AI
Google and its processors may use servers in the United States and other countries, and the actual items, locations and retention may vary with your platform, region, settings, consent status and provider policies.
Firebase Crashlytics is off by default and turns on once the ad consent (UMP) flow finishes. It turns on whatever you choose on the consent screen, and in regions where no consent screen is needed (such as Korea) it turns on as soon as the consent status check completes after launch. Photos, keywords and generated caption text are never sent in any case.
Firebase Analytics also starts with storage and advertising signals all denied, and is switched on only after the ad consent (UMP) flow finishes, according to the choices you make on the consent screen (Google consent mode v2: analytics_storage, ad_storage, ad_user_data, ad_personalization). In regions where consent is required (EEA, UK and others), no analytics data is stored unless you consent; in regions where no consent screen is needed (such as Korea), it turns on once the consent status check completes. You can change your choice again from the ad privacy choices in the app settings.
- iOS App Tracking Transparency (ATT): the iOS app asks whether you allow tracking for ads. If you do not allow it, the IDFA is not used.
- Google Privacy Policy
- How Google uses information in advertising
- Firebase privacy and security
- AdMob partners and consent management
5. Retention and deletion
- Generation history keeps the most recent 50 entries (favorites excepted) and, together with saved captions, recent keywords and settings, stays on the device until you delete it or remove the app. You can delete entries one by one or all at once in the app.
- Photos are not copied into the app's history, so deleting history also removes the photo path.
- Crashlytics crash reports are kept by Google for 90 days and then deleted. Firebase Analytics user- and event-level data is kept for at most 14 months according to the Google Analytics data retention setting; aggregated statistics that do not identify individuals may remain. Retention and deletion of advertising data follow Google's policies.
- Because the operator holds no accounts or server-side identifiers, it has no way to link data processed by SDKs to a particular user or delete it from the app. We will explain available options on request.
6. Your choices and rights
- You can reopen and change your ad privacy choices (consent management) from the app's settings.
- You can manage advertising identifier, personalized ads and tracking choices in your device's privacy and ad settings. On iOS you can change app tracking permission in system settings.
- You can turn automatic history saving and thumbnail saving on or off in the app's settings.
- You can change photo access in your operating system settings, and remove local history and settings by clearing app data or uninstalling the app.
- Even if you decline consent or the ad or consent service fails, free caption generation keeps working.
- Requests to access, correct, delete or restrict processing under applicable law can be sent to the email address below.
7. Sharing, sale and protection
The operator does not sell photos, keywords, generated results or personal information, and does not provide information it holds to third parties except as required by law. SDK processing follows the purposes above and each provider's policy, and SDK communication uses encrypted connections (HTTPS).
8. Children's privacy
SnapCaption is not designed primarily for children under 14 and does not intend to knowingly collect children's personal information directly. If we become aware of such processing, we will take reasonable steps under applicable law and provider procedures.
9. Changes and contact
This revision (October 6, 2026) adds the use of Firebase Analytics (automatically collected items only, based on consent mode v2). The previous revision (September 14, 2026) corrected the descriptions of on-device photo analysis, the photo path kept in generation history, and when Crashlytics turns on, to match how the app actually works. We will post important future changes on this page before they take effect. Send privacy questions to gwangy.claw@gmail.com.