Privacy Policy

App Onomatope オノマトペ · version 1.8 · last updated: 15 October 2026

Onomatope オノマトペ teaches Japanese onomatopoeia: which of four similar sounds a sentence asks for, and what 濁点 does to a word. All of the learning — levels, practice, reviews and progress — happens on your device and works offline. The optional “Sentences” tab uses AI, and optional anonymous usage statistics help improve the app. This policy describes version 1.8.

Short version: no account or advertising. Anonymous usage statistics are off until you consent. The “Sentences” tab connects to our server for AI; purchases go through the App Store. It sends the sentence or description you type into it and the language the answer should come back in. The server does not persist that text; its short-lived answer cache is described below; your lists of sentences and results, and your examples on words, stay on your device only.

Your account

There isn't one. Onomatope does not ask you to register, sign in or provide an email address, and it does not know your name or email. AI help uses the technical App Attest and transaction identifiers described below; usage statistics do not contain them.

Where your learning data goes

Your mastery of each word, your answer history, your review schedule and your session history are stored on your device only and never leave it. If you export a backup (Settings → Data → Export progress), the resulting file is yours — it is written wherever you choose to save it, and the app does not upload it.

What you type in the “Sentences” tab, and the answer that comes back, do not feed your progress, your reviews or your practice. The app keeps your sentences, descriptions and their latest results in that tab, in two lists, one per mode — on your device only, in a separate file that it never sends anywhere and that is not part of the progress export. You delete them in the “Sentences” tab, one at a time or all at once, from both lists; they also go when you delete the app. “Reset progress” in Settings does not touch these lists — the two are separate things.

With Add as an example you can attach a sentence from an answer to a word — it then goes to “Your examples” on that word's page. These examples also live on your device only, in yet another separate file: they never become questions, they are not part of the progress export, and neither “Reset progress” nor deleting an entry from a list in the “Sentences” tab removes them. You remove them on the word's page; they also go when you delete the app.

You can also scan a sentence from a photo (with the camera or from your photo library) — from a manga speech bubble, subtitles or a page, for example. The text is recognized on the phone; the photo is never saved or sent anywhere — only the text you pick and correct goes into the field, and it reaches the server only when you tap Find the onomatopoeia. The app asks for camera access the first time you take a photo; the photo library opens through the system picker, which gives the app only the photo you choose.

Data shared with the developer's other apps

Onomatope belongs to a family of Japanese-learning apps. If you have more than one of them installed, the app shows a Your Japanese section with one row per app.

Here is how that works: Onomatope writes a small card file on your device, in an area shared by the apps in this family. The card carries six things about your studying: how much of the material you have mastered, how many days your streak runs, how many sessions you have done, one sentence about your weakest spot (in Polish and in English), whether today's goal is already met, and when your next reviews are due. Plus three technical ones: which app wrote the file, in what format, and when. Nothing else. There is no answer history, no list of the words you practiced and nothing you type in the “Sentences” tab, and your progress cannot be reconstructed from this file.

The file never leaves your device, and it is read only by the other apps in this family that you have installed on that same device. Nothing syncs between devices. The shared area survives uninstalling a single app — the file goes only once you remove every app in the family from the device.

Reminders and reading aloud

The study reminder is optional and entirely local. If you turn it on, iOS schedules the notification on the device; nothing is sent anywhere and no server is involved. If you decline the notification permission, the rest of the app works exactly the same.

The listen button reads Japanese sentences with the system speech synthesizer — on the phone, offline. The voices are installed by iOS; the app sends nothing when it speaks.

Tracking and advertising

None. There is no advertising SDK, crash reporter or advertising identifier (IDFA). Optional usage statistics use our own shared module and backend. We do not sell your data or use it for cross-app tracking.

Network connections

Outside optional usage statistics and the “Sentences” tab, the app makes no network connections of its own; traffic for purchases and restoring purchases is handled by iOS and the App Store. For AI help, the app talks to our server at these moments: when you open the “Sentences” tab, a new sentence or an entry from a list, the subscription screen or Settings (to show how many requests are left); when you tap Find the onomatopoeia or Find the word, and straight afterwards, to refresh that number; when you tap Try again; and after you buy the subscription or restore purchases (so the server learns about the subscription). AI requests do not run in the background or on a timer. Consented usage events can be sent when the app returns to the foreground, connectivity returns, or it enters the background. The text of a sentence or description is sent only when you tap Find the onomatopoeia or Find the word.

Whether the phone is online right now is checked with the system's network monitor, on the device — so that without a connection the app can say so straight away instead of waiting for a request to fail. The monitor itself sends nothing.

On a device that does not support Apple's App Attest, there is no “Sentences” tab and the app does not make AI connections. Optional usage statistics work independently of App Attest and can connect to the server only after consent.

AI requests in the “Sentences” tab

The “Sentences” tab is optional. Without it the app teaches, schedules reviews and tracks progress exactly the same way. It has two modes, each with its own list: “What it means in this line” — a sentence you paste or scan, from a manga or subtitles for example, comes back with the onomatopoeia in it, what each one means in that very sentence, and a way into the word's page if the app knows it — and “Describe a feeling” — a sound, a movement or a sensation described in your own words comes back with the onomatopoeia that fits best and a few others to choose from, each with how it differs.

When you tap Find the onomatopoeia or Find the word, we send two things to our server at api.jd-japanese.pl: the sentence or description you typed (a sentence at most 120 characters, a description at most 200) and the language the answer should come back in (Polish or English, following the interface language). The server passes them to a language model from OpenAI, and the answer comes back to the app. We do not send your progress, answer history, examples on words or the photo. AI requests also carry the technical authentication and subscription data described below; these are not included in usage statistics.

We do not persist the text of your sentence or description — it goes into no database and no log; the model's answer is not written to a database or log either. The database has no column that could hold either, and adding one breaks an automated test on the server. Our request to OpenAI asks it not to retain the response. A finished answer remains in a short-lived cache in the server's memory, never on disk. It can be reused for two minutes so that repeating the same request does not count as two requests. Expired entries are removed during later cache operations; two minutes is the answer's validity period, not a guarantee that it is physically erased from memory at that instant.

What we do keep, because the feature cannot work without it:

For a shorter time we keep technical billing and maintenance data: Apple transaction identifiers and request metrics (request number, feature name, model, status, token count, response time) — for 90 days. The IP address is not written to event tables or API access logs. Technical server error logs may include an IP address when a failure occurs. Their configuration calls for daily rotation of nonempty files and keeping 10 archives; this does not guarantee deletion after 10 days. For abuse protection the server uses a keyed hash of the IP address; inactive entries older than 24 hours are removed by periodic cleanup, run at server startup and scheduled daily; this does not mean deletion at exactly 24 hours.

When it connects, the app also attaches a one-time DeviceCheck token issued by iOS. For Onomatope the server does not use it and does not store it: the free sample here is not protected against reinstalls, so the token has nothing to guard.

None of this is linked to your name, email address or an account — because the app does not know them. We do not use any of it for tracking, profiling or advertising. There is no account to delete; if you want these records gone, write to me.

Purchases

The one-off Premium purchase and the AI Help subscription are handled entirely by Apple. Onomatope never sees your payment details, card number or billing information. The app reads the state of your purchases from iOS. While the AI Help subscription is active, the app passes our server the Apple-signed proof of that transaction — only so the server can check the signature itself and grant the subscription's requests. The Premium purchase is not sent to the server.

How Apple processes data is described in Apple's privacy policy.

Reporting a problem

The Suggest a feature and Report a problem buttons in Settings prepare an email you can read and edit before sending. Nothing is sent until you tap “Send” yourself. A problem report comes pre-filled with the app version, the build number, the iOS version and the device model identifier (e.g. iPhone14,3) — never a device identifier. You can delete those lines before sending. If you write, I will see your email address and your message; they are used only to reply.

Children

The app has no account and does not ask for a name, age or address. AI help uses the technical identifiers and counters described above. Optional usage statistics contain only the categories described below, without a user or installation identifier.

Changes

If this policy changes, the date at the top changes with it. The address of this page carries the app's version number, so older releases always point to the document that actually described them — releases before 1.6, which connect to no server at all, are described by the version 1.0 document.

Anonymous usage statistics

Statistics are optional and off by default. We ask for your consent once; you can change it in Settings → Privacy. Declining or withdrawing consent does not limit practice.

After consent, the app can send event categories, app version, interface language, a cohort week, the day of use, learning stage and approximate counts of sessions, answers, question types, completed purchases and AI use. Each event has a random UUID used only to avoid duplicates when sending is retried; it is not a user or installation identifier. No user or installation identifier, question text, typed answer or AI input is included in these usage events. Progress and detailed learning history remain on your device.

Events are queued locally while offline for up to 30 days. Withdrawing consent stops sending and deletes events waiting to be sent. Raw events are retained on the server for up to 400 days, then only daily aggregates remain. The server sees an IP address to receive a request but does not put that address in analytics access logs. It uses a temporary protected value for rate limiting; inactive values older than 24 hours are removed by periodic cleanup, run at server startup and scheduled daily; this does not mean deletion at exactly 24 hours.