Hanzi Keeper keeps your character-by-character progress private. Optional character-count reporting is off unless you choose to share it. There is no advertising or tracking.
Your own progress goes to your own iCloud, when iCloud is available to the app on your iPhone. That uses Apple's private CloudKit database, which is tied to your Apple Account. We cannot read it, and neither can other users.
If you opt into character-count reporting, the separate snapshot described below also leaves your phone and is readable by the developer. Your private progress records remain separate.
Sharing is off unless you choose Settings, Share character count. When enabled, Hanzi Keeper sends only your estimated number of known characters to the developer, at most once every 24 hours when the app runs and your iCloud account is available. It never sends the characters, answers, names, email addresses, purchase status or advertising identifiers. The estimate includes characters currently fading or forgotten; it is not a fluency score.
Apple CloudKit supplies an account-level creator identifier and timestamps. A hashed account key lets us update one snapshot instead of accumulating reports. This is pseudonymous, not fully anonymous. Ordinary users cannot read another account's snapshot. A dedicated developer reader role can read counts to plan future learning suggestions. It does not change your current questions and is not used for advertising.
Switch sharing off to request deletion of your snapshot. If offline, deletion retries when the matching iCloud account is available and the app runs. Deleting the app does not itself delete this optional shared snapshot; turn sharing off first. If you switch iCloud accounts, pending deletion waits for the original account. Contact the developer for help. Reports that have not updated are marked stale in the private dashboard; no public leaderboard or public user profiles are created.
If you buy Hanzi Keeper Pro, the purchase is handled entirely by Apple. We never see your payment details and receive no personal information from it.
If you allow it, the app sends one notification a week, on Sunday evening, saying how many characters it has rescued so far. If you also turn on Settings, Daily reminder, it sends one a day at the time you choose, only on a day when you have not answered a question yet. The app asks for permission when you turn the reminder on, or on its own once it has rescued a few characters.
The evening recap is on until you turn it off in Settings, Evening recap. On a day when you have answered five questions or more on the widgets by the time you choose, 8 p.m. unless you change it, it sends one notification at that time, saying how many you answered and offering a short recap in the app. If iOS has not asked you about the app's notifications yet, the app asks iOS for quiet delivery (provisional permission), which shows you no prompt: the recap then goes to Notification Center only, with no banner and no sound, until iOS asks you and you allow notifications. iOS asks when you tap Show as a banner in Settings, Evening recap, when you turn the reminder on, or once the app has rescued a few characters.
All three notifications are created on your phone. Nothing is sent to us and nothing is sent through a server.
The app is rated 4+ on the App Store. Optional reporting is off by default and follows the choice and withdrawal controls described above. There are no public profiles, advertising identifiers or shared character-by-character answers.
Deleting the app removes everything stored on the phone. To remove the private synced copy as well, delete the app's data from iCloud: in your iPhone's Settings, tap your name, then iCloud, then Manage Storage, and choose Hanzi Keeper. Turning iCloud off for the app stops syncing but does not delete what was already synced.
Questions about this page: jyl.iosapp@gmail.com.