<style> .mlat-privacy { /* Size unit for this page. The theme root grows to 20px on desktop, which made text oversized; this keeps body text at 15-16px on every screen. */ --u: clamp(16px, 15.2px + 0.2vw, 16.8px); --mlat-accent: #0A74C4; --mlat-accent-light: #0D93F5; --mlat-accent-dark: #0A5FA0; --mlat-bg: #ffffff; --mlat-bg-alt: #F5F7FA; --mlat-text: #14181D; --mlat-text-soft: #5B6772; --mlat-border: #D6DEE6; --mlat-warn-bg: #fdf1f1; --mlat-warn-border: #ecc2c2; --mlat-warn-text: #8a2020; font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; font-size: calc(0.95 * var(--u)); color: var(--mlat-text); background: var(--mlat-bg); line-height: 1.65; text-align: center; margin: 0 auto; } .mlat-privacy h2, .mlat-privacy h3 { font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; text-align: center; letter-spacing: -0.01em; } .mlat-privacy h2 { color: var(--mlat-accent); font-size: clamp(calc(1.25 * var(--u)), calc(1.05 * var(--u)) + 0.8vw, calc(1.55 * var(--u))); font-weight: 700; line-height: 1.2; margin: 1.7em 0 0.35em; padding: 0; border: 0; } .mlat-privacy h3 { color: var(--mlat-accent-dark); font-size: calc(1.05 * var(--u)); font-weight: 600; line-height: 1.3; margin: 0 0 0.4em; } .mlat-privacy p { color: var(--mlat-text-soft); margin: 0 0 0.9em; } .mlat-privacy a { color: var(--mlat-accent); font-weight: 600; text-underline-offset: 3px; } .mlat-privacy a:hover { color: var(--mlat-accent-dark); } .mlat-privacy a:focus-visible, .mlat-privacy button:focus-visible, .mlat-privacy input:focus-visible { outline: 2px solid var(--mlat-accent); outline-offset: 3px; border-radius: 3px; } .mlat-privacy .mlat-hero { padding: 1.2em 0 0.4em; } .mlat-privacy .mlat-hero h2 { font-size: clamp(calc(1.6 * var(--u)), calc(1.25 * var(--u)) + 1.6vw, calc(2.1 * var(--u))); line-height: 1.1; margin: 0 0 0.45em; } .mlat-privacy .mlat-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: calc(0.6 * var(--u)); margin: 0 0 1.2em; } .mlat-privacy .mlat-chip { border: 1px solid var(--mlat-accent-light); color: var(--mlat-accent-dark); border-radius: 999px; padding: 0.25em 1em; font-weight: 500; font-size: calc(0.88 * var(--u)); background: var(--mlat-bg); text-decoration: none; } .mlat-privacy a.mlat-chip:hover { background: var(--mlat-bg-alt); } .mlat-privacy .mlat-lede { font-size: calc(1.05 * var(--u)); line-height: 1.6; color: var(--mlat-text); } .mlat-privacy .mlat-intro { font-size: calc(1 * var(--u)); margin-bottom: 1.1em; } .mlat-privacy .mlat-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: calc(0.8 * var(--u)); margin: 1.3em 0 0.4em; } .mlat-privacy a.mlat-btn { display: inline-block; padding: 0.65em 1.4em; border-radius: 999px; background: var(--mlat-accent-dark); color: #ffffff; text-decoration: none; font-weight: 600; border: 2px solid var(--mlat-accent-dark); } .mlat-privacy a.mlat-btn:hover { background: var(--mlat-accent); border-color: var(--mlat-accent); color: #ffffff; } .mlat-privacy a.mlat-btn-alt { background: transparent; color: var(--mlat-accent-dark); } .mlat-privacy a.mlat-btn-alt:hover { background: var(--mlat-bg-alt); color: var(--mlat-accent-dark); border-color: var(--mlat-accent-dark); } .mlat-privacy .mlat-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin: 1.6em 0 0.5em; border-top: 1px solid var(--mlat-border); border-bottom: 1px solid var(--mlat-border); } .mlat-privacy .mlat-stat { padding: 1.1em 0.6em; } .mlat-privacy .mlat-stat + .mlat-stat { border-left: 1px solid var(--mlat-border); } .mlat-privacy .mlat-stat b { display: block; font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; font-size: calc(1.6 * var(--u)); line-height: 1.1; color: var(--mlat-accent-dark); } .mlat-privacy .mlat-stat span { font-size: calc(0.82 * var(--u)); color: var(--mlat-text-soft); } .mlat-privacy .mlat-caption, .mlat-privacy .mlat-footnote { font-size: calc(0.86 * var(--u)); font-style: italic; color: var(--mlat-text-soft); margin-top: 0.6em; } .mlat-privacy .mlat-panel { background: var(--mlat-bg-alt); border: 1px solid var(--mlat-border); border-radius: 14px; padding: 1.6em 1.4em; margin: 0 0 1em; } .mlat-privacy .mlat-panel > h3 { font-size: calc(1.2 * var(--u)); margin-bottom: 0.7em; } .mlat-privacy .mlat-panel > :last-child { margin-bottom: 0; } .mlat-privacy .mlat-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 1.6em 2.2em; } .mlat-privacy .mlat-grid > .mlat-item { flex: 1 1 260px; max-width: 330px; } .mlat-privacy .mlat-grid-3 > .mlat-item { flex-basis: 240px; } .mlat-privacy .mlat-grid-4 { gap: 1.4em 1.6em; } .mlat-privacy .mlat-grid-4 > .mlat-item { flex-basis: 200px; max-width: 250px; } .mlat-privacy .mlat-item::before { content: ""; display: block; width: 36px; height: 3px; border-radius: 2px; background: var(--mlat-accent-light); margin: 0 auto 0.9em; } .mlat-privacy .mlat-item p:last-child { margin-bottom: 0; } .mlat-privacy .mlat-emoji { display: block; font-size: calc(1.5 * var(--u)); line-height: 1; margin-bottom: 0.4em; } .mlat-privacy .mlat-timeline .mlat-step + .mlat-step::before { content: ""; display: block; width: 2px; height: 32px; background: var(--mlat-accent-light); margin: 0.5em auto 0.9em; } .mlat-privacy .mlat-step p:last-child { margin-bottom: 0; } .mlat-privacy .mlat-when { display: block; font-size: calc(0.88 * var(--u)); font-weight: 500; color: var(--mlat-accent); margin-bottom: 0.2em; } .mlat-privacy .mlat-map-wrap { margin: 1.2em 0 0; border-radius: 14px; overflow: hidden; border: 1px solid var(--mlat-border); background: var(--mlat-bg-alt); } .mlat-privacy .mlat-map-frame { display: block; width: 100%; height: 600px; border: 0; } .mlat-privacy .mlat-map-frame.mlat-preview { height: 560px; pointer-events: none; } .mlat-privacy .mlat-cta { margin-top: 2.4em; padding: 1.8em 1.4em; border-radius: 14px; background: var(--mlat-accent-dark); } .mlat-privacy .mlat-cta h3, .mlat-privacy .mlat-cta p { color: #ffffff; } .mlat-privacy .mlat-cta h3 { font-size: calc(1.3 * var(--u)); } .mlat-privacy .mlat-cta a.mlat-btn { background: #ffffff; color: var(--mlat-accent-dark); border-color: #ffffff; } .mlat-privacy .mlat-cta a.mlat-btn:hover { background: var(--mlat-bg-alt); border-color: var(--mlat-bg-alt); color: var(--mlat-accent-dark); } .mlat-privacy .mlat-cta .mlat-actions { margin-bottom: 0; } .mlat-privacy .mlat-warning { background: var(--mlat-warn-bg); border: 1px solid var(--mlat-warn-border); border-radius: 14px; padding: 1.1em 1.4em; margin: 1.2em 0; color: var(--mlat-warn-text); } .mlat-privacy .mlat-warning p { color: var(--mlat-warn-text); margin-bottom: 0.4em; } .mlat-privacy .mlat-warning p:last-child { margin-bottom: 0; } .mlat-privacy .mlat-warning a { color: var(--mlat-warn-text); } .mlat-privacy code { font-family: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace; background: var(--mlat-bg); border: 1px solid var(--mlat-border); border-radius: 4px; padding: 0.1em 0.4em; font-size: 0.86em; color: var(--mlat-text); word-break: break-word; } .mlat-privacy pre { text-align: left; background: var(--mlat-bg); border: 1px solid var(--mlat-border); border-radius: 12px; padding: 0.9em 1.1em; margin: 0.4em auto 1em; max-width: 640px; overflow-x: auto; } .mlat-privacy pre code { border: 0; padding: 0; background: none; word-break: normal; } .mlat-privacy .mlat-steps { list-style-position: inside; padding: 0; margin: 0 0 1em; } .mlat-privacy .mlat-steps li, .mlat-privacy .mlat-plain li { color: var(--mlat-text-soft); padding: 0.2em 0; } .mlat-privacy .mlat-plain { list-style: none; padding: 0; margin: 0 0 1em; } .mlat-privacy .mlat-contact { margin-top: 2em; padding-top: 1.2em; border-top: 1px solid var(--mlat-border); } .mlat-privacy .mlat-disclaimer { font-size: calc(0.84 * var(--u)); font-style: italic; color: var(--mlat-text-soft); } .mlat-privacy .mlat-coffee { margin: 1em 0 0; } .mlat-privacy .mlat-coffee p { font-size: calc(0.86 * var(--u)); color: var(--mlat-text-soft); margin-bottom: 0.6em; } @media (max-width: 600px) { .mlat-privacy { font-size: calc(0.93 * var(--u)); } .mlat-privacy .mlat-hero { padding-top: 0.6em; } .mlat-privacy .mlat-panel { padding: 1.4em 1.1em; } .mlat-privacy .mlat-map-frame { height: 420px; } .mlat-privacy .mlat-map-frame.mlat-preview { height: 380px; } .mlat-privacy .mlat-stat + .mlat-stat { border-left: 0; } .mlat-privacy .mlat-stats { grid-template-columns: repeat(2, 1fr); } .mlat-privacy .mlat-stat:nth-child(even) { border-left: 1px solid var(--mlat-border); } .mlat-privacy .mlat-stat:nth-child(n+3) { border-top: 1px solid var(--mlat-border); } } </style>

Privacy Policy.

Effective date: 11 October 2026

This website and telemetry tracking platform is my sole personal, non-commercial project. I run it out of engineering curiosity, research and community interest, to visualise aviation, maritime and satellite telemetry in real time.

I value your privacy and aim to be completely transparent about how data is handled. This policy explains what technical information is processed when you view the site or send data to my receiver ingestion endpoints.

1. Website Visitors

Account data

I do not offer user registration or account creation. I do not ask for, collect or store personal information such as your name, email address, contact or payment details, ever.

Server logs

Like any standard web infrastructure, my server automatically logs basic connection details (such as IP addresses, browser types and request timestamps) to deliver web pages, troubleshoot connectivity and protect the system against abuse or attack. I keep these technical logs temporarily and purge them regularly.

Local storage and cookies

The website may save minor configuration settings in your browser (using localStorage) purely to remember your preferences, layer toggles or map position between visits. I do not use tracking or advertising cookies.

2. Volunteer Data Feeders

If you voluntarily feed telemetry data (such as ADS-B, MLAT or AIS) to my ingestion infrastructure:

Telemetry received

My ingestion pipeline processes raw telemetry packets containing receiver message payloads, signal metrics and timestamps.

IP address and location

Connection IP addresses are used solely to maintain socket connections and synchronise receiver timing for MLAT calculations. Any public display of receiver stats or feeder lists shows only a masked IP address and an approximate location derived from coarse IP geolocation. For stations connected to the mlat.uk MLAT server, the receiver position you configure is used only for the timing calculations; the public map shows a position rounded and randomly offset to within about 5–10 km, together with your station name. Adding --privacy to your MLAT client hides both.

Use of contributed data

Contributed feed data is aggregated and processed to render live positions on the public map and to populate the telemetry pages.

Non-commercial commitment

I run this site entirely as a non-commercial project. I do not sell, rent, lease or license any contributed telemetry data for commercial gain.

3. Data Sharing and External Sources

Network peering

To complement coverage, non-personal tracking data on the map may be combined with open community datasets: airplanes.live (aircraft), Data: AISHub contributors (vessels) and CelesTrak (satellite orbital elements).

Use of data

Tracking data is displayed for personal, non-commercial situational awareness. Scraping, resale or redistribution of the data or the platform service is not permitted.

Infrastructure providers

General website traffic may route through security and proxy networks to protect server uptime and prevent DDoS attempts.

4. Map Assets and Images

The interactive map fetches static map tiles from open-source or third-party tile hosts. When you select an aircraft, vessel or satellite, the map may also look up a photo from public image sources: community aircraft photo sites for aircraft, and open sources such as Wikidata, Wikimedia Commons and Openverse for vessels and satellites. In both cases your browser connects directly to these providers to retrieve the tiles or images, and no personal information is sent beyond what any web request carries. Country flags are served from this site.

5. Disconnecting Your Feed

Because I do not manage accounts or track personal identities, I have no way to associate browsing sessions with individuals. If you contribute data and wish to stop, simply disconnect your feed at any time.

Questions about this policy? Email [email protected].