Privacy Policy
meetii never records or stores your calls, chat, whiteboard or captions — those travel directly between you. To make calling work we store a small contact list (a nickname, a random identifier and a hash of your secret key), a push token, briefly an invite e-mail address, and for calls through our relay a short log of when they happened and how long they lasted. If you buy a package, Polar handles the payment and we never see your card details. Full details below.
TL;DR
meetii never records or stores your calls, chat, whiteboard content or live captions — those travel between the participants and vanish when the call ends. To let you call saved contacts we store a small contact list (a nickname, a random identifier and a one-way hash of your secret key) and a push token; briefly, the e-mail address you invite someone with; for calls that go through our relay server, a short log of their time, duration and type; and, for one or two days, counters that enforce the free daily video hour. If you buy a package, the payment is handled by Polar and we never see your card details; we store only the licence code, its dates and how much of it has been used. Full details below.
meetii ("the App") is an experimental, one-person project. This policy describes, as plainly and completely as we can, exactly what data the App handles and why — including the parts that a "we store nothing" claim would leave out.
1. How a Call Works
meetii connects two people directly via WebRTC (peer-to-peer video, audio, text chat, and whiteboard drawing) using a room code. Where possible, this data travels directly between the two participants' devices and never passes through our servers. Where a direct connection cannot be established, encrypted audio/video is relayed through a TURN relay service operated by Cloudflare, Inc. — Cloudflare relays encrypted traffic and does not have access to the decrypted content of your call. Chat messages and whiteboard strokes are never written to any server, by us or Cloudflare, at any point — they exist only in the two devices' memory for the call's duration.
2. Signaling Server
A small signaling server, hosted on Cloudflare, briefly coordinates the connection setup between the two participants (exchanging room codes and the connection details needed to establish the call). This server does not record or store audio, video, chat, or whiteboard content. Room codes and connection data exist only for the duration of the session and are discarded once both participants disconnect.
3. Camera and Microphone
The App requests access to your device's camera and microphone for video and voice calls. We do not record, store or transmit your call to our own servers — your camera and microphone stream is sent directly (or relayed, encrypted, per Section 1) to the other participant only. They are active only while you are in a call and are released when you leave it or close the App. You may decline or revoke this permission at any time through your browser or Android system settings.
3a. Live Captions and Translation
If a participant turns on captions during a call, the following happens, and nothing else:
- The speaker's own device turns the speaker's speech into text, using the speech-recognition service of that device or browser. Depending on the device, this happens on the device itself or is performed by the provider of that service (for example Google on Android and in Chrome, Apple on iPhone and in Safari, Microsoft in Edge) under its own privacy terms. It is never sent to us.
- The text is sent directly to the other participant over the call's encrypted connection, like a chat message.
- The reader's device translates it, where translation is available: on Android with offline language models from Google ML Kit, which are downloaded from Google's servers once, when you agree to the download; on a computer with the browser's built-in translator.
- Captions are kept only in the memory of the two devices and disappear when the call ends. We do not receive, store or analyse them, and the App offers no way to save them.
The person speaking is shown that the other side has captions on, and can mute the microphone or end the call at any time. Legal basis: providing the feature at the user's request (Art. 6(1)(b) GDPR) and, for the other participant, our legitimate interest in an accessible, multilingual calling service (Art. 6(1)(f) GDPR).
4. Your Identity and Contacts: What We Store, and Why
To let you call a saved contact with one tap — instead of sharing a fresh code every time — meetii keeps a small record on our server. This is the main place the App stores anything beyond a single call, so we are explicit about it:
- Your identifier — a random string generated on your device, not tied to your name, e-mail, phone number or any account. It is your address in meetii: your contacts hold it, and calls are routed to it.
- A hash of your secret key — your device also generates a secret key that proves the identifier is yours. We store only a one-way SHA-256 hash of it, from which the key cannot be recovered.
- Your nickname — whatever name you type in. It is shown to the people you add as contacts. You choose it; we do not verify it.
- Contact status and timestamps — who invited whom, whether an invite is pending, accepted or rejected, and when it last changed, so both sides' lists stay in sync.
- A push notification token (if you enable notifications) — issued by your browser or by Firebase Cloud Messaging (Android app), so our server can ask the operating system to ring your phone for an incoming call or show a short message from a contact. It is used for nothing else.
- A log of relayed calls — for calls that went through our relay server, the start time, duration, whether it was voice or video, and the room code of the call, limited to the 50 most recent entries. It contains nothing about the content of the call. We keep it to enforce the free daily video hour and to answer support requests and complaints.
Contact data is kept for as long as the contact relationship exists, until either side removes the contact. Your identifier, the key hash, your nickname and the call log are kept while your identity is in use; ask us (Section 15) and we will delete them. None of it is used for advertising or profiling, sold, or shared with third parties.
5. Invite Emails
When you invite someone by email, we temporarily store the recipient's email address together with your nickname and device token, so we can send the invite email and later confirm who invited whom when they respond. This record is automatically deleted 30 days after the invite is created, whether or not the recipient ever responds. Sending the actual email is handled by our email provider (Resend) — see Section 9.
5a. Moving Your Contacts to Another Device
The Android app is a separate program with its own storage, isolated from your browser — so installing it would otherwise mean starting with an empty contact list. Two mechanisms avoid that:
Automatic pickup after download. When you tap the download button, we store a temporary association between your IP address and your device token. The newly installed app reads it once, on first launch. The association expires after 10 minutes and is deleted the moment it is read. If more than one person is downloading from the same IP address at the same time, the system refuses to hand anything over and asks for a code instead — it never guesses, because handing your identity to the wrong person would redirect your incoming calls.
Transfer code. In Settings you can generate a code (for example 4K7-M2Q) and enter it on the other device. It is single-use and expires after one hour.
Your IP address is used for this one purpose only. It is not combined with other data, not used for profiling or analytics, and not shared with anyone. Legal basis: our legitimate interest (Art. 6(1)(f) GDPR) in letting the service work across your devices.
6. Payments and Packages
Direct calls, and voice, chat and the whiteboard through the relay, are free and require no package, so most people never reach this section. It applies only if you buy one.
6.1 The payment itself
We never see, receive or store your payment details. The purchase happens entirely at Polar Software Inc., which acts as merchant of record: Polar collects your card or payment-service details, handles tax and issues your licence code. Polar is the controller of the data you give it during checkout, under its own privacy policy — including your e-mail address and any billing details your payment method requires. We receive none of it, and we keep no list of customers.
6.2 What we store about a licence
When you activate a code in the App, we create one record per code. It holds:
- The licence code itself, and the activation id Polar issued for it, so that a code that is used up can also be deactivated at Polar.
- The dates — when the code was first activated, and when it expires.
- A time counter — how many seconds of the package have been used, and whether the grace margin has been used.
- A log of billed calls — for each call that used the package: start time, duration, whether it went through the relay or used a paid workspace, and the room code, limited to the 200 most recent entries — so that you and we can check what used your hours.
That record is addressed by a SHA-256 hash of the code, contains no name, no e-mail and no device identifier, and is not joined to your contact list. It is deleted when the code has expired or been used up and has been deactivated at Polar.
6.3 How usage is counted
The server measures the duration of a call from the call itself. Your device tells the server only whether the call went through the relay and whether video was on (yes/no), together with your identifier and, in the Android app, the device key described in Section 7. No call content, and nothing about who you were talking to beyond the room, is part of that report.
6.4 Calling someone who has no package
Only one participant needs a package. When your package pays for a call, the room records that your licence is paying for it, and the other participant is allowed onto the relay for that room on that basis. The record is per room and temporary, holds nothing about the other participant, and disappears with the room when the call ends.
7. Abuse Protection and Free-Use Limits
- Request limits. To stop a single source from flooding the service, requests are counted per IP address in short rolling windows. Only a number and a timestamp are stored, and the counters expire within minutes.
- The free daily video hour. To keep the free hour to one per person per day, relayed video time is counted per identifier, per device and per network: the device is represented, in the Android app only, by a SHA-256 hash of the phone's Android ID (the ID itself never leaves the phone), and the network by a salted SHA-256 hash of the IP address (the address itself is not stored). These counters contain only a number of seconds and are deleted automatically after two days.
- The shared monthly pool. The service keeps totals of relayed data for the whole month — free and paid separately — and reads Cloudflare's own aggregate usage statistics. These are single numbers for the whole service and are not associated with any user. When thresholds are reached, the operator receives an automatic e-mail containing only those totals.
7a. Support Requests and Diagnostics
The App has a "Contact support" button on error and package screens. Only when you tap it, it sends: your identifier and nickname, the room code and the error shown, whether a package is present (yes/no — never the code), the app version, your browser's language and user-agent string, and the App's technical start-up log. It never sends your secret key or licence code. The report is delivered to the operator's mailbox by e-mail (via Resend) with a report number you can quote. When a call fails, both devices may also send a technical connection log (network candidate types, timings, error codes — no content) so the failure can be diagnosed; these logs are deleted automatically after two days. Support e-mails are kept only as long as needed to resolve the problem, and at most 12 months.
To answer support requests, the operator can look up, for a given identifier or licence code, the data described in Sections 4 and 6.2 (for example the number of contacts and the log of relayed or billed calls) and can add time to a package. This access is protected by a separate key and is used only for support.
8. Data Stored Locally on Your Device
The App stores the following in your browser's or app's local storage:
- Your identifier, your secret key and your nickname (see Section 4)
- Your contact list cache, interface language, colour and wallpaper
- Your licence code, if you have one, so you do not have to re-enter it
- The last room code you used (Quick Connect only), and a short technical start-up log used for the support button
- On Android, if you turned on translation: the offline language models you agreed to download (they can be removed in Settings or by uninstalling the app)
This data stays on your device except for the pieces described in Sections 4–7. Clearing your browser's site data (or uninstalling the Android app) removes it from your device.
9. Cookies
Neither the meetii app nor the meetii website (meetii.app) uses cookies. The App uses local storage as described in Section 8. The visit counter described in Section 10 also avoids cookies; it keeps a random token in local storage so a returning visit can be told from a new one. For that reason no cookie banner is shown.
10. Third-Party Services
- Cloudflare — provides the TURN relay (encrypted call relay when a direct connection is not possible), the signalling server and the database (Durable Objects) that stores the data described in Sections 4–7. Cloudflare may log connection metadata (for example IP addresses) as part of standard infrastructure operation, but has no access to the decrypted content of your call.
- Polar Software Inc. — merchant of record for package purchases. It collects your payment and billing details directly and issues licence codes; we receive none of those details. We call Polar's API when you activate a code. See Polar's Privacy Policy.
- Google Firebase Cloud Messaging (Android app only) — delivers incoming-call rings and short messages so your phone can ring even when the App is closed. Google receives the device token needed to route them.
- Speech and translation services of your device (only if captions are used, Section 3a) — the speech-recognition service of your phone or browser (for example Google, Apple or Microsoft) and, on Android, Google ML Kit, whose language models are downloaded from Google's servers. These are provided by your device's platform under its own terms; we do not send them anything.
- Resend — sends invite e-mails (Section 5), support reports and service alerts (Sections 7 and 7a) on our behalf.
- Matt Nae visit counter (first-party, self-hosted, on the meetii website) — records that a page was visited: the page and referring URL, a random ID that resets when you close the tab, screen size, language, basic interaction signals (mouse, scroll, touch — used to tell real visits from bots), which of the page's buttons was clicked, and technical error messages stripped of anything resembling personal data. It stores a random token in local storage (not a cookie) to tell a new visit from a returning one. Your IP address is hashed with a secret salt before being stored; your approximate country (from Cloudflare) is kept alongside the visit. It respects "Do Not Track" and Global Privacy Control, and never sees your camera, microphone, call, chat, whiteboard or captions.
We do not use any advertising, third-party tracking, social-media or fingerprinting services.
11. Data Retention
Call, chat, whiteboard and caption content is never stored. Contact data (Section 4) is kept until you or your contact removes it; your identifier, key hash, nickname and relayed-call log until you ask us to delete them. Invite records with an e-mail address (Section 5) are deleted automatically after 30 days. Licence records (Section 6.2) are deleted once the code has expired or been used up and deactivated. Request-limit counters (Section 7) expire within minutes; free-hour counters after two days. Connection diagnostic logs (Section 7a) are deleted after two days, support e-mails after at most 12 months. Visit-counter records (Section 10) are kept for our own operational statistics; contact us if you would like a record identified and removed.
12. Children's Privacy
meetii is not directed at children, and we do not knowingly collect personal information from anyone under 13 (or the minimum age required in your country). A nickname and, if you send an invite, an email address, are the only personal information the App ever handles — please don't use the App if you are below that age.
13. Your Rights (GDPR)
Since we hold a limited, plainly-described set of data (Sections 4–6), you can ask us at any time to see, correct, or delete it — most of it you can already delete yourself in the App by removing a contact. For anything you can't remove yourself (for example a pending invite email before its 30-day expiry), contact us using the details in Section 15 and we will act on your request without undue delay. For anything relating to the payment itself — your invoice, your billing details, your card — the controller is Polar, and a request about that data should go to them; write to us if you need help reaching them.
14. Changes to This Policy
meetii is an actively-developed, experimental project — features, and the data needed to support them, may change. We will update this page whenever what we store changes, with a new "last updated" date. Please check back periodically; continued use of the App after an update constitutes acceptance of the revised policy.
15. Contact
For privacy-related questions or a data request: [email protected]
For service-provider details, see Terms & Imprint, Section 12.