Privacy Policy

Effective: March 15, 2026 Version 1.0+
The short version: Reachable does not collect, store, or transmit any personal information. The only network activity is checking whether your internet works. All data stays on your Mac.

What data Reachable collects

None. No user accounts, no sign-in, no analytics, no telemetry. The information below describes exactly what the app does on your device.

Network requests

Reachable makes exactly four types of outbound network requests. Nothing else.

1. Connectivity check

What: A periodic HTTPS HEAD request to a configurable target (default: www.google.com) to check if your internet is working.

Sent: A minimal HTTPS HEAD request. No identifying information, no device identifiers, no user data.

Received: An HTTP status code. Reachable reads only whether the request succeeded.

Who: By default, Google (www.google.com). You can change the target in Settings to Cloudflare, Apple, Quad9, or a custom address.

2. Public IP lookup

What: A GET request to an external service when the popover is opened, to display your public IP address. The result is cached locally and shared with the desktop widget so it can display your IP without making its own request. The cached IP is cleared when the app quits.

Sent: A standard GET request with an empty User-Agent header. No app name, version, or device identifiers are included.

Received: Your public IP address as plain text. Reachable reads only the IP address.

Who: Reachable tries these services in order, stopping at the first successful response. When "Prefer IPv6" is enabled in Settings, IPv6-specific endpoints are tried first.

  1. ipify (api.ipify.org / api64.ipify.org for IPv6) — privacy policy
  2. Amazon Web Services (checkip.amazonaws.com) — privacy policy
  3. Cloudflare (1.1.1.1/cdn-cgi/trace, [2606:4700:4700::1111]/cdn-cgi/trace for IPv6, and one.one.one.one/cdn-cgi/trace as last resort) — privacy policy

3. Country flag lookup

What: A GET request to Cloudflare when the popover is opened, to display a country flag next to your public IP address.

Sent: A standard GET request. No identifying information, no device identifiers, no user data beyond your IP address (which is inherent to any network connection).

Received: A short text response containing connection metadata. Reachable reads only the two-letter country code (loc= field) and discards everything else.

When: Once each time the popover is opened, immediately after the IP lookup. Not made when the connection is offline.

Who: Cloudflare (1.1.1.1/cdn-cgi/trace) — privacy policy

4. Captive portal detection (beta)

What: An HTTP GET request to one.one.one.one (Cloudflare) to detect whether a captive portal (hotel/airport login page) is intercepting the connection.

Sent: A standard HTTP GET request. No identifying information, no device identifiers, no user data.

Received: An HTTP redirect or response. Reachable reads only the redirect destination to determine if a captive portal is present.

When: Only while in the No Internet state, after the regular HTTPS check has already failed. A separate captive portal check also runs when already in the captive portal state.

Who: Cloudflare (one.one.one.one).

What Reachable does NOT do

Data stored on your device

Reachable stores two categories of data locally. Neither is transmitted anywhere.

Outage history

When connectivity changes, Reachable records the event locally: start time, end time, duration, and outage type. This data lives in a sandboxed database on your Mac. It never leaves your device unless you export it via PDF or CSV.

You can delete all history from within the app and configure retention from 7 days to indefinitely.

Settings

Your preferences are stored in local macOS user defaults. They are not synced to iCloud or any other service.

Permissions

Reachable operates under Apple's App Sandbox with two permissions:

The app has no access to your contacts, calendar, microphone, or camera. File access is limited to locations you explicitly choose when exporting PDF or CSV reports.

GDPR

Reachable does not process any personal data as defined by the GDPR. There is no data controller relationship, no data processing agreement required, and no lawful basis for processing needed, because no personal data is processed.

Network requests do transmit your IP address to the receiving service (ipify, Amazon Web Services, or Cloudflare) as an inherent consequence of making any internet request. Each service is the data controller for that data under their own privacy policy.

CCPA

Reachable does not sell or share personal information. Reachable does not collect personal information as defined by the CCPA. Because no personal information is collected, there is nothing to access, delete, or correct.

Children's privacy

Reachable does not knowingly collect information from anyone, including children under 13. Because the app collects no data at all, it presents no privacy risk to users of any age.

Third-party services

Reachable communicates with the following third-party services:

If you change your ping target in Settings, that address receives your connectivity checks instead of Google.

Reachable is distributed through the Mac App Store. Apple's privacy practices govern the purchase and download process.

Changes to this policy

If we make material changes, we will update the date at the top. We will not use any change to begin collecting data that was not previously collected.