Privacy Policy
ZepLink (the “Service”) connects your own PC directly to your own phone. Our server only helps the two devices find each other by exchanging their addresses — the game picture, sound and your input go directly between your PC and your phone and never pass through our server. This policy explains what personal data the Service processes, why, and for how long. ZepLink is run by an individual developer in the Republic of Korea (section 7).
| Item | Why |
|---|---|
| What is on your screen · video · audio · keyboard, mouse and controller input | Sent directly between your devices, not through our server |
| Pairing secrets | Created by your phone and PC together. Our server only receives the PC’s notice that the two are paired |
| Passwords | We don’t use passwords. You sign in only with Apple or Google |
| Card numbers or other payment details | Payments happen only inside the App Store or Google Play |
| Precise location (GPS) · contacts · photos | We don’t ask for them and don’t store them. The ad software may estimate an approximate location from your IP address (1-9) |
1. Personal data we process
1-1. Account (only if you sign in)
| Item | Details | Purpose |
|---|---|---|
| Account ID | A random value our server creates | Groups your devices as belonging to one person |
| Sign-in method and the ID it gives us | Apple or Google, and the unique number that company gives us | Finds the same account the next time you sign in |
| Email address and whether it is verified | The address your sign-in method gives us (including Apple’s “Hide My Email” address) | Merges accounts that belong to the same person |
| Apple sign-in refresh token | If you sign in with Apple, a token issued by Apple. Stored encrypted | Used only to ask Apple to disconnect the sign-in when you delete your account |
We don’t collect gender or date of birth. Your name and profile picture may be included in Google’s sign-in token or Apple’s sign-in response, but our server does not read or store them.
1-2. Phone
| Item | Details |
|---|---|
| Device ID | The fingerprint of a public key your phone creates itself. Our server never knows the private key |
| Platform | iOS or Android |
| Name of a connected device | Only while it is connected through remote access. The device name set on your phone (or its model name). When one account reaches the number of devices that can use remote access at the same time (2), we show it to your other devices as a “connected device” so you can pick one to disconnect. It is kept in memory only and never written to our database or logs |
| Push notification token | Only if you turn notifications on. If you turn them off, we delete it the next time you open the app. Signing out does not delete it, so this phone keeps getting its notifications (such as Play Together invites) |
| Last seen time | |
| Store installation ID | Collected only in regions where the law requires app stores to verify age and obtain parental consent (such as Texas in the United States). On iPhone and iPad, and only if the store has not confirmed that you are an adult: the number the App Store issues for each Apple Account’s download of this app. It arrives with Apple’s signature; our server checks the signature and keeps only the number. On Android: the number Google Play provides only for installs on accounts managed by a parent or guardian. We use it only to match a store notice that a parent or guardian has withdrawn consent to this phone. It contains no age or age range |
| Time parental consent was withdrawn | When a parent or guardian withdrew consent for this app. Until consent is restored, our server refuses this phone’s requests and sends it no notifications. Deleted when consent is restored and the app runs again |
Your advertising identifier (IDFA · GAID) is never sent to our server. Neither is your age or age range (1-8).
1-3. PC (host)
| Item | Details |
|---|---|
| PC ID | The fingerprint of a public key your PC creates itself |
| PC name | Your PC’s Windows computer name, which often includes a person’s name. Friends you invite to Play Together see it, and it appears in push notifications about that PC |
| Operating system · supported features · online status · last seen time | |
| Owning account | If you connected the PC after signing in |
1-4. Pairing · Play Together
| Item | Purpose |
|---|---|
| Which phone is paired with which PC, and when pairing was added or removed | Decides who may connect |
| Invite link tokens · 6-digit codes · expiry times | Inviting friends. Codes expire after a few minutes and links after a few days |
| Guest participation records | Lets an invited friend join again without a new code |
1-5. Connection records
For each connection we keep only what we need to understand how often connections succeed: which phone connected to which PC, when, over which route, whether it worked, and the result of the network-type check.
Individual records are deleted after 90 days. Before that, they are turned into daily counts (date · route · success · network type) that cannot identify anyone.
1-6. Subscription
Subscription product · status · the store you bought it from · transaction ID · expiry time. No payment details.
1-7. IP addresses
The IP address a request comes from is used only to prevent abuse (limiting how many requests are allowed). It is kept only in memory and in a cache — never in the database — and disappears automatically after a short time (minutes to hours).
For remote access, Play Together and the connection check, our server passes the addresses each device reports (its private and public IP address and port) to the other device so they can find each other. These addresses are kept in the cache for at most 5 minutes and never stored in the database. Devices also contact public STUN servers directly to learn their own public address (section 4).
1-8. Handled only on your phone
The following is used only on your phone and is never sent to our server.
| Permission · data | Used for |
|---|---|
| Camera | Only to read the QR code on your PC screen. Images are not saved or sent (on Android, Google ML Kit reads the code on the phone — section 4) |
| Local network | Finding and connecting to PCs on the same network |
| List of connected PCs · app settings | Stored on your phone |
| Device authentication key | Kept in your phone’s secure storage (Keychain on iPhone and iPad, encrypted app storage on Android). It never leaves the phone |
| Age range from your app store | Only in regions where the law requires app stores to verify age (some U.S. states, Brazil and similar), the app asks the App Store or Google Play for your age range (under 13, 13–15, 16–17, or 18 and over). On Android the app asks only when your Google Play country is the United States or Brazil. We use it to decide what you can do: under 13, the app can’t be used; under 16, you can’t create an account or subscribe (on Android this also applies until Google Play has verified your age). The age range itself is not stored — only the outcome (for example, whether you can create an account) and the date it was checked are kept on your phone (on Android, also a fingerprint of the installation ID last reported to our server, to tell whether it changed). The age range and the outcome are never sent to our server |
1-9. Advertising
The app shows banner and rewarded ads through Google AdMob. AdMob inside the app sends Google the information it needs to choose and show ads — device and app information, which ads you saw or tapped, an approximate location estimated from your IP address, and, only if you allow it, your advertising identifier. Our server sends nothing to any advertising company.
ZepLink Pro subscribers see no ads. However, AdMob starts together with the app, so device and app information may still be sent to Google when the app opens.
Where your app store tells the app that you are 13 to 17 (1-8), the app asks Google to treat its ad requests as coming from a teen, which turns off personalized ads. The same applies on Android while Google Play has not yet verified your age. No age or age range is sent. On iPhone and iPad the app does not ask to track you in this case. If the store tells the app you are under 13, the app requests no ads.
Your choices:
- European Economic Area, United Kingdom and Switzerland — before any ad is requested, the app shows Google’s consent form. You can consent, refuse, or choose purpose by purpose. If you refuse, Google shows only limited ads that don’t use your data to personalize advertising. You can change your choice at any time in the app: Settings → Privacy choices.
- U.S. states with consumer privacy laws (such as California) — you can opt out of the “sale” or “sharing” of your personal information for targeted advertising in Settings → Privacy choices.
- iPhone and iPad — the app asks whether it may track you (“Allow Tracking”). If you allow it, AdMob uses the advertising identifier (IDFA) to choose more relevant ads; if you don’t, the identifier is not used. You can change this in the Settings app at any time, and every feature works either way.
- Android — AdMob uses the advertising ID (GAID). In the Settings app’s ads menu (“Google → Ads” or “Privacy → Ads”, depending on the device) you can delete your advertising ID; on older Android versions you can opt out of ads personalization instead. Every feature works either way.
How Google processes this information is described in Google’s Privacy Policy and How Google uses information from sites or apps that use its services. Google may collect information about your activity over time and across different apps to show you ads.
1-10. This website
This website uses no cookies and no visitor analytics, and it serves its fonts itself. The PC program’s installer is downloaded from GitHub, so GitHub receives your IP address when you download it. Because the website does not track you, it does not change its behavior in response to “Do Not Track” browser signals.
2. How long we keep it
| Data | Period |
|---|---|
| Individual connection records | 90 days — then turned into counts that cannot identify anyone, and deleted |
| Daily counts that cannot identify anyone | No limit (they are not personal data) |
| Account · phones · PCs · pairing · subscription | Until you delete your account |
| Phones and PCs not linked to an account (you never signed in, or signed out) and their pairing | 1 year after last contact — if that phone or PC doesn’t contact our server for a year, it is deleted automatically. You can ask for earlier deletion (section 3) |
| Push notification token | Deleted when you open the app after turning notifications off, or when we learn the app was removed. Deleted with your account |
| Store installation ID · time parental consent was withdrawn | Deleted together with the phone’s record (when you delete your account, or after 1 year without contact). The withdrawal time is deleted as soon as consent is restored and the app runs again |
| Name of a connected device | Kept only while the remote-access connection lasts. It is gone as soon as you disconnect, or within 90 seconds if the app is closed or the network drops |
| Invite links · codes | Can’t be used once they expire or have been used. Invite records (which phone joined) are deleted together with that PC’s or that phone’s records |
| Database backups | We back up the database every day and keep each backup for 14 days, so deleted data can remain in a backup for up to 14 days before it is overwritten. Backups stay on the same server |
Where the law requires us to keep something longer, we keep it for that period.
3. Deleting your account
When you tap Delete account in the app, our server deletes all of the following at once:
- Your account and all sign-in information
- All registered phones and PCs
- All pairing, invite and guest participation records
- All connection records of the account
Deletion cannot be undone and happens right after you confirm, with no grace period. Each PC is told it has been disconnected. If you signed in with Apple, we also ask Apple to disconnect the sign-in. Daily counts that cannot identify anyone are not deleted. Deleted data may stay in database backups for up to 14 days (section 2).
Records not linked to an account — a phone used without signing in (including a signed-out phone), a PC without an account, and their pairing and participation records — are not deleted when you delete an account, and not immediately when you uninstall the app or the PC program. They are deleted automatically if that phone or PC doesn’t contact our server for a year. To delete them sooner, sign in on that phone with Apple or Google and delete the account (signing in moves that phone’s records into the account, so they are deleted with it), or contact us (section 7). Because there is no account, we may ask for details that help us find the records, such as the name of the connected PC. Individual connection records are deleted after 90 days regardless. See also Delete your ZepLink account.
4. Who receives data
We don’t sell personal information, and our server sends nothing to advertising companies. AdMob inside the app collects information for ads directly, as described in 1-9. Only what is needed to run the Service goes to the following:
| Recipient | What | Why · notes |
|---|---|---|
| Apple (push notifications) | Push notification token, the type of notification and the PC name | Delivering notifications |
| Apple (sign-in) | The authorization code received at sign-in; the Apple sign-in refresh token when you delete your account | Verifying who you are; disconnecting Apple sign-in when you delete your account |
| Google (sign-in) | Our server sends nothing — it receives the verification result. The Google Sign-In software inside the app talks to Google directly while you sign in; Google describes what it collects | Verifying who you are |
| Apple (payments) | Nothing — we receive the subscription status | Checking your subscription |
| Google (payments) | The purchase token Google Play issued for your purchase | Checking your subscription — our server asks Google Play for the status with this token |
| Server operation | Where the data above is stored | A server run by the developer in the Republic of Korea. Hosting is not outsourced |
| Google (AdMob) | Our server sends nothing. AdMob inside the app sends it directly (1-9) | Showing ads |
| Google (ML Kit · QR reading on Android) | Our server sends nothing. ML Kit inside the app sends device and app information, a per-installation identifier and performance metrics directly. Camera images are not sent | Providing and improving QR reading |
| Google · Cloudflare (public STUN servers) | The IP address and port of your phone and PC — the devices connect directly | Learning each device’s public address for remote access, Play Together and the connection check (1-7) |
| GitHub (PC program updates · installer) | Your PC’s IP address — the PC connects directly | Checking for updates (once a day) · downloading Sunshine and the controller driver during installation |
International transfers
Our server is in the Republic of Korea, so if you use ZepLink from another country, your data is transferred to Korea.
- European Economic Area — the European Commission has recognized Korea as providing an adequate level of protection (adequacy decision of 17 December 2021).
- United Kingdom — the UK recognizes Korea as adequate (regulations in force from 19 December 2022).
- Switzerland — Korea is not on the Swiss Federal Council’s list of countries with adequate protection. We transfer your data to Korea because it is necessary to provide the Service you asked for under our contract with you (Art. 17(1)(b) of the Swiss Federal Act on Data Protection).
Apple, Google, Cloudflare and GitHub are mainly in the United States and process data under their own policies, which also describe the safeguards they use for international transfers.
| Recipient | Data | Country | When · how | Kept for |
|---|---|---|---|---|
| Apple Inc. (push notifications) | Push token, notification type and PC name | United States and others | When a notification is sent, encrypted | Per Apple’s policy |
| Google LLC (AdMob) | Advertising identifier and other ad data — sent directly by AdMob in the app | United States and others | When an ad is requested | Per Google’s policy |
| Apple Inc. (sign-in) | Authorization code · Apple sign-in refresh token | United States and others | At sign-in · at account deletion, encrypted | Per Apple’s policy |
| Google LLC (ML Kit) | Device and app information, per-installation identifier, performance metrics — sent directly by ML Kit in the app | United States and others | When the QR scanner is used on Android | Per Google’s policy |
| Google LLC · Cloudflare, Inc. (STUN) | IP address · port — sent directly by the devices | United States and others | During remote access, Play Together and the connection check | Per each company’s policy |
| Google LLC (subscription check) | Purchase token | United States and others | When an Android subscription is checked, encrypted | Per Google’s policy |
| GitHub, Inc. (PC program) | Your PC’s IP address — the PC connects directly | United States and others | When checking for updates · when downloading the installer | Per GitHub’s policy |
You can refuse these transfers. However, if you refuse the notification transfer you won’t receive notifications; ad-related transfers depend on your choices in 1-9; refusing the STUN connections means you can’t use remote access, Play Together or the connection check; and refusing GitHub means you can’t install or update the PC program.
5. Your rights
You can ask us at any time to:
- show you what data we have (access)
- correct data that is wrong
- delete your data — instantly with Delete account in the app, or by contacting us
- stop processing it
In the European Economic Area, the United Kingdom and Switzerland you also have the right to restrict processing, to receive your data in a portable format, to object to processing based on our legitimate interests, and to withdraw consent at any time (Settings → Privacy choices, your device’s tracking and notification settings) without affecting processing that happened before. You can also complain to a data protection authority — in your country of residence in the EEA, the Information Commissioner’s Office in the UK, or the Federal Data Protection and Information Commissioner in Switzerland.
In U.S. states with consumer privacy laws (such as California) you can ask to know, delete or correct your personal information and opt out of its “sale” or “sharing” for targeted advertising. We don’t sell personal information for money; showing personalized ads through AdMob may count as “sharing” under some of these laws, and you can opt out in Settings → Privacy choices or through your device’s ad settings. We won’t treat you differently for exercising these rights.
Send requests to the contact in section 7. We respond within 10 days. We may ask you to write from the email address of your sign-in method so we can confirm it’s you.
ZepLink is not directed to children, and the app is rated 16+ in the App Store. We don’t knowingly process personal data of children under 14 in Korea, under 13 in the United States, or under the age at which children can consent to online services in their country (13 to 16 in the EEA and UK). We don’t ask for a date of birth or age; age limits rely on the App Store and Google Play ratings and on the age information of your store account. Where the law requires app stores to verify age and obtain parental consent (such as Texas), the app uses the age range the store provides to limit what you can do (1-8), and if a parent or guardian withdraws consent the store blocks the app and we stop serving that phone (1-2). If you believe a child has given us personal data, contact us and we’ll delete it.
6. Security
- All communication is encrypted (TLS).
- Phones and PCs authenticate with public-key signatures. Our server never holds the private keys, so even if the server were breached, it would not reveal anything that lets someone connect to another person’s PC.
- Our server never learns the pairing secrets, so they can’t leak from it.
- Access is limited to the minimum number of people needed to run the Service — currently one person.
- Server access is allowed only with public-key authentication (no password logins).
- The database and cache are not exposed outside the server.
7. Who is responsible and how to reach us
ZepLink is run by an individual. For questions, complaints or requests about your personal data, contact:
| Controller and privacy officer | Changmin Park (박창민), individual developer, Republic of Korea |
|---|---|
| support@zeplink.app |
If you are in Korea, you can also contact these public bodies about privacy violations or disputes:
- Personal Information Dispute Mediation Committee — 1833-6972 · www.kopico.go.kr
- Personal Information Infringement Report Center (KISA) — 118 · privacy.kisa.or.kr
- Supreme Prosecutors’ Office, Cyber Investigation Department — 1301
- Korean National Police Agency, Cyber Bureau — 182
8. Changes to this policy
If this policy changes, we announce the change and its effective date in the app and on this website. Changes that are unfavorable to you are announced 30 days before they take effect.
This policy is published in English and in Korean with the same content. For users in Korea the Korean version prevails; for everyone else the English version prevails.
- October 6, 2026 — Added the name of a connected device (sections 1-2 and 2), used when one account reaches the 2-device limit for remote access.
- October 6, 2026 — English version published. Added what applies to the European Economic Area, the United Kingdom, Switzerland and U.S. states (legal bases, rights, international transfers, the ad consent form and Privacy choices), database backups kept for 14 days, and corrected: the PC name is the Windows computer name and friends you invite see it; push tokens are deleted the next time you open the app after turning notifications off; AdMob estimates approximate location from the IP address; the tracking prompt appears on iPhone and iPad; the Google Sign-In software talks to Google directly. Added app store age verification and parental consent: the store installation ID, the time parental consent was withdrawn, the age range used only on your phone, and the teen flag on ad requests (1-2, 1-8, 1-9, 2, 5).
- September 30, 2026 — Corrected to match what the app and server actually do (Korean version).
- September 18, 2026 — First version (Korean).
Additional information for the European Economic Area, the United Kingdom and Switzerland
Why we may process your data (legal bases):
| Purpose | Legal basis |
|---|---|
| Providing what you ask for — registering your devices, pairing, connecting them (including exchanging addresses), Play Together, your account and sign-in, checking your subscription, and notifications you turned on | Performance of our contract with you |
| Preventing abuse and keeping the Service secure; counting connection success anonymously; keeping records of devices not linked to an account for up to 1 year so they keep working without an account; database backups | Our legitimate interests — you can object (section 5) |
| Storing or reading information on your device for ads, and personalized ads | Your consent, collected through Google’s consent form. You can withdraw it at any time in Settings → Privacy choices |
| Keeping records the law requires | Legal obligation |
You don’t need an account to use ZepLink on the same Wi‑Fi. An account is needed only for remote access, Play Together and subscriptions. We make no decisions about you based solely on automated processing. How your data can leave these regions is in International transfers, and your additional rights are in section 5.