Privacy Policy
Last updated: October 9, 2026 · Applies to the JTTYAF Android app (package radio.ks3ckc.jttyaf) and the website jttyaf.app
Short version: JTTYAF is free, open source, and built by hams for hams. There are no accounts, no ads, no analytics or tracking SDKs in the app, and no cross-site tracking on the website. This page explains the little data the website and the Android app touch, and the third-party services you can choose to turn on.
1. The website (jttyaf.app)
This is a static product site hosted on Vercel. We use Vercel Web Analytics to understand aggregate traffic (which pages are visited, rough device type and country from the request). It is cookieless, does not fingerprint you, does not track you across other sites, and does not collect personally identifiable information. See Vercel's privacy policy.
- No cookies are set by this site.
- When you click certain links or buttons (for example "Get it free" or a family-app link), an anonymous event is recorded in Web Analytics. It contains the action and the page path only — never your identity.
- Email signup: if you enter your address in the "stay in the loop" box and press Notify me, it is stored — with the page you were on and the time — in a database we operate (hosted by Neon), and used only to send JTTYAF release notes. To protect the form from abuse, a hash of your IP address is kept for one hour. Nothing else is recorded. Reply to any mailing, or open a GitHub issue, and we will remove you.
2. The JTTYAF Android app
JTTYAF runs on your device and works with your radio. It has no user accounts, contains no advertising and no third-party analytics, crash-reporting or tracking SDKs, and sends no telemetry. Everything happens locally on your phone or tablet unless you configure one of the optional services below.
Data you provide
- Operator identity: your callsign and Maidenhead grid square, entered in Settings. They are stored on your device and are transmitted over the air as part of normal JTTY operation — as any amateur-radio transmission identifies the station — but are not sent to any server by the app itself.
- QSO log: contacts you log are stored in a database on your device.
Received and transmitted text is appended to a local history file (
jtty_all.txt). - Macros and settings: F-key macros, rig configuration and preferences are stored locally. Uninstalling the app removes all of the above.
On-device processing & permissions
- Microphone / audio: used to decode the JTTY signal coming from your radio, via USB audio or the phone's microphone. Audio is processed in real time on your device and is not recorded, stored or sent anywhere. A foreground service with a persistent notification keeps decoding while the screen is off; it stops when you stop receiving.
- USB (radio connection): used to control your transceiver (CAT, PTT keying) and route audio over a USB cable. This communication is strictly between your device and your radio.
- Bluetooth: only if you choose a Bluetooth-connected rig or CAT interface. Used to find and talk to that device, nothing else.
- Location (optional): only if you grant it and enable "Auto-update grid (GPS)", to set your Maidenhead grid locator and calculate distances to other stations. It is used on-device, is not transmitted to any server, and is not required to operate the app.
- Network state / Wi-Fi state: used to reach network-connected rigs on your LAN and to decide whether an optional upload can proceed.
- Internet: used only for the optional services you configure (below). JTTYAF makes no other network calls.
Data you choose to send
Some optional features send data to services you select and configure with your own credentials. They are off unless you enable them:
- Log upload / sync — Cloudlog or Wavelog (self-hosted or cloud), QRZ.com Logbook, World Radio League: if you enter your API key, completed QSO details (callsigns, grids, time, band, frequency, mode, signal reports) are uploaded so your logbook stays in sync. That data is then handled under that service's privacy policy.
- Bug reports: the in-app "Report a bug" button composes a message — your
description plus app version, device model and Android version — and hands it to your email
app or opens a pre-filled GitHub issue. Nothing is sent until you send it. The "Share logs"
button hands the local
debug.logto the app you pick (email, Discord, Drive…). The log contains radio-control events, frequencies and your callsign; it does not contain API keys, passwords, audio or location.
JTTYAF does not send your logs anywhere by default, and you can operate the app fully offline without configuring any of these.
3. What we never do
- No selling or sharing of personal data — we don't have it to sell.
- No advertising networks, ad IDs, or behavioral profiling.
- No cross-app or cross-site tracking, and no analytics or telemetry in the app.
- No servers of our own: JTTYAF stores nothing outside your device.
4. Children
JTTYAF is a utility for licensed and prospective amateur-radio operators and is not directed at children under 13. It does not knowingly collect personal information from children.
5. Open source
JTTYAF is licensed under the MIT License. You can read exactly what the app does — including every network call — in the source on GitHub.
6. Changes
If this policy changes, we'll update the date at the top and post the new version here. Material changes will be noted in the app's release notes.
7. Contact
Questions about privacy? Open an issue on GitHub or reach us in the Discord. JTTYAF is maintained by Patrick (K1AF) and Reid (N0RC).