Text you translate
Your source text and selected source and target languages are sent to JingJing's server to produce a translation. Each request also carries a random persistent device identifier for free-quota accounting and abuse rate limits.
Privacy
JingJing is a nine-language translation app for everyday travel. This page explains, in plain language, what happens to your data when you translate a sentence at a restaurant, station, or hotel.
Effective: October 14, 2026
JingJing has two channels: the iPhone app and the LINE official account. Both are served by the same backend, so this page applies to both. They differ in one important way: the iPhone app (1.1.0 and later) asks for your choices before the first translation (whether to store sentence pairs, whether authorized staff may read them, whether a third-party AI may be used as backup); you can decline all of them and still translate, and change or withdraw them any time under Settings → Translation data & consent. The LINE official account and app versions before 1.1.0 do not offer these choices; their behaviour is described below, as are the app's subscription and device identifier.
JingJing is provided by Kuowei Tseng. For privacy questions, email hello@jingjing.app.
Your source text and selected source and target languages are sent to JingJing's server to produce a translation. Each request also carries a random persistent device identifier for free-quota accounting and abuse rate limits.
The app creates a random UUID when first used and reuses it for later requests. The server links it to cumulative translated characters, an update time, and a quota-reminder time if applicable. The record does not contain your name or contact details.
Source text, translated text, the language pair, and translation time are stored on your iPhone. Source and target languages, recent language pairs, interface language, and appearance preference are also stored locally.
If you contact support, we receive your email address and message and use them to handle the issue or data request. Please do not send passports, card details, or unrelated sensitive content.
The server access log records the connection address visible to the service at the time (which may be a relay or proxy address), request method and path, response status, and log time. Its default format does not record translation text, request bodies, or the device-identifier header.
JingJing does not require registration or sign-in. From app 1.1.0, subscriptions use an anonymous account as described under “Subscriptions and ads” below. It does not ask for your name, phone number, birthday, gender, location, contacts, or photo library. JingJing never handles or stores your card or payment details; in-app purchases are processed by Apple. The currently released version 1.0.1 contains no advertising, analytics, or cross-app tracking SDK; the next version (1.1.0 onward) adds “watch an ad for quota”, described under “Subscriptions and ads” below.
JingJing listens only after you tap the microphone and grant permission. The app does not create an audio recording file, and JingJing's server does not receive or store the recording.
Speech-to-text uses Apple Speech. When on-device recognition is supported, the app requires it. If the device or language does not support on-device recognition, audio may be sent to Apple's speech recognition service. Recognized text first appears in the translation field and follows the translation flow above only after you submit it.
Payment is handled by Apple; JingJing never receives your card number or Apple ID. After a purchase, the app sends the Apple-signed transaction to JingJing's server, which stores the transaction identifiers, product identifier, purchase time, expiry time and subscription status (active, expired or revoked), links them to this device's random identifier to determine the plan in effect on this device, and stores daily translation usage during the subscription to enforce the daily limit. Apple also notifies JingJing's server of renewals, expirations and refunds. These records currently have no automatic expiration and are kept until you ask us to delete them; they contain no name, email address or payment details.
From app 1.1.0, before a purchase the server issues an anonymous subscription account UUID and a secret credential. The app stores them in a synchronizable iCloud Keychain item so purchases can be restored with the same identity on other devices. Apple-signed transactions include the account UUID. The server keeps the account UUID, a SHA-256 digest of the credential, and the subscription and device bindings, and does not store the plaintext secret in its database. These records are used only for subscription verification and restoration, not for advertising tracking. Subscriptions purchased in version 1.0.1 have no account UUID. During restoration, the app sends the Apple-signed transaction without a subscription account credential; the server verifies it and uses the legacy compatibility path to bind the entitlement to the requesting anonymous installation identifier.
When you are not subscribed and open the quota area in Settings or see the free-quota prompt, the app may preload a rewarded ad from Google AdMob (at that point the SDK already connects to Google; without tracking permission it requests a non-personalized ad, with permission the ad may be personalized); the ad is shown only when you tap “watch an ad”, and during an eligible “watch an ad” tap, App Tracking Transparency is requested only when tracking permission is undecided and iOS permits the prompt. Not receiving a prompt, or declining tracking, does not by itself block non-personalized ad requests. The same entry point appears when your quota is used up, and after you finish one ad the app preloads the next. If either your App Store storefront or your device's region setting is in the European Economic Area, the United Kingdom or Switzerland, or if either cannot be determined, the app does not start or load ads and does not show “watch an ad” (this uses region settings, not location detection); the same applies when ads are disabled. When no ad is available, the button is disabled with a note that no ads are available right now. After an eligible ad finishes, the reward is credited to this device's quota record only after JingJing's server verifies it. The ad SDK may collect device identifiers (including the advertising identifier), coarse location inferred from the connection address, ad interactions, performance and diagnostic data, used to serve and measure ads and for analytics, under the Google Privacy Policy. Preloading itself does not ask for tracking permission. You may decline tracking; you can still translate and still watch ads, but ads are then served non-personalized. No ads are shown while a subscription is active. Version 1.0.1 does not include this feature.
Source and translated sentences are kept in JingJing's server database. There is currently no automatic expiration or scheduled deletion; they are kept until you ask us to delete them. Processing by a backup provider or Apple Speech is governed by that provider's rules.
There is currently no automatic expiration or scheduled deletion. The record remains unless a safely verified deletion is completed.
Transaction identifiers, product, expiry, device link and daily usage currently have no automatic expiration and are kept until you ask us to delete them. Apple's own purchase records follow Apple's rules.
The account UUID, SHA-256 credential digest, and the account's subscription and device bindings stored on the server currently have no automatic expiration or scheduled deletion; they remain unless a safely verified deletion is completed. The account UUID and secret credential stored by the app in a synchronizable iCloud Keychain item are managed by iOS and iCloud. Deleting server records does not remove that item, and deleting the app may not remove it either.
They remain on your iPhone until you delete history in the app or choose “Delete App” on your iPhone (not “Offload App”).
It is kept as needed to address the issue and maintain necessary correspondence. You may ask us to remove support data that is no longer needed.
The current container log has no configured automatic expiration or rotation period. Records remain according to the actual container-log lifecycle.
Open History and swipe left to delete one item, or tap “Delete All” at the top right. This deletes translation history only; it does not clear language preferences or the random persistent device identifier.
Email hello@jingjing.app with the subject “JingJing App data deletion request.” Three kinds of data can be deleted, in different ways:
Translation pairs: stored pairs carry no device identifier, so we cannot look them up by device. Please include the source text you want deleted (or its approximate content, languages and translation date); we will match and delete the pairs that correspond. Sentences we cannot identify from your description will not be deleted.
Anonymous subscription account: You may request deletion of the anonymous subscription account data used from app 1.1.0 (account UUID, SHA-256 credential digest, and the account's subscription and device bindings). This is a different scope from deleting quota and subscription records for a single dev: installation identifier. Deleting one installation's records does not delete the entire account used across devices or all of its bindings. We will explain the safely verifiable method available at the time for the scope you request. Email alone may not be sufficient; if we cannot reliably verify that scope, we will not perform the deletion, and we do not promise a fixed completion time. Deleting server records does not remove the account item from your iCloud Keychain, and deleting the app may not remove it either (it is managed by iOS and iCloud).
Quota and subscription records: these can be deleted separately by their dev: device identifier. The current app version does not yet provide a screen to view or copy that identifier, so email alone may not safely identify a specific record. We will explain any verification method available at the time. If we cannot verify the match, we will not risk deleting another device's record, and we do not promise a fixed completion time.
In app 1.1.0 and later, Settings → Translation data & consent lets you withdraw storage, staff review or third-party backup at any time, or decline all of them; withdrawal applies to later requests only, requests already sent are not recalled, and stored pairs are removed through the deletion request above. Stopping translations, stopping microphone use, or deleting the app stops new app requests. None of this automatically deletes existing server translation pairs, quota or subscription records.
If JingJing's data practices change, we will update this page and its effective date. Adding accounts, payments, analytics, or a different retention practice will require another review of this policy.
This section covers the jingjing.app marketing pages, separately from translation, subscription and advertising data inside the app. The website uses Cloudflare hosting and existing traffic analytics, and offers optional Google Analytics 4 (GA4).
Only after you choose “Allow analytics” do the marketing pages load GA4 and use cookies to send page visits, language, device and browser information, referring website, and App Store/LINE button clicks and placement to Google to measure website use. GA4 may derive approximate geographic information from the connection. We do not enable Google signals or advertising personalization, and these events do not send translation text, names or email addresses.
We configure GA4 cookies to expire after 60 days without renewal on each visit. Your analytics choice is remembered in this browser for 180 days. You may decline or withdraw consent using “Website analytics settings” in the homepage footer. Withdrawal stops new GA4 collection and removes this site's GA4 cookies; it does not automatically delete information already sent. Declining does not block the translation product links or disable the existing Cloudflare analytics.
A download-button click is not an app installation. See how Google uses data from partner sites. For data requests, contact hello@jingjing.app.