Bait Station Tracker

A quick guide to timing return flights, logging bearings, and estimating where the nest is.

Guide matches tool version 24/08/26 — check the small text under the tracker's title bar. If it's later than this, some screens may have moved on from what's described below.

← Back to the tracker

Setting up

Name the station (helps if you're logging more than one site), and add your initials — both get used later when you export to Google My Maps. It opens tracking one hornet by default — tap + add another hornet at the bottom of the grid to add more, up to six, matching your marking colours. Tap a colour dot to change it, or tap a name to rename it. Tap the on a card to remove that hornet.

Timing a flight

  1. Tap Departed the moment your marked hornet leaves the bait. If the compass is enabled it grabs a bearing automatically; otherwise type one in.
  2. Tap Returned when she's back. That logs the flight time and whatever bearing is currently in the field.
  3. Up to 8 flights are kept per hornet — oldest drops off once you go over.
Updating the bearing while the clock is running: a hornet often doesn't settle on a clean line the moment she leaves, so don't feel you have to lock in a bearing at the instant you tap Departed. Tap the 🧭 button next to the bearing field once she's flying straight and true — and tap it again, as many times as you need to, if she corrects course partway through the flight. Whatever's showing in the field when you tap Returned is what gets logged.

Someone else timed it for you

Use the small entry row under the main button. Both of these mean 1 minute 32 seconds:

You typeReads as
1:321 min 32 sec
1.321 min 32 sec
9292 seconds (no minutes)

Add a bearing alongside it if you were given one.

Setting the bait station location

Under the main toolbar is a three-way switch for where the bait station actually is. Whichever you pick feeds into everything that needs a starting point — the nest-location estimate, the move suggestion, and the KMZ export all use it consistently.

📍 Current location — the default. Uses your phone's GPS, so you need to physically be at the bait station and have granted the page location access. Simplest option if you're standing there timing flights.
Plus Code — type in a Google Plus Code instead (e.g. 8FVC9G8F+6X), useful if you're filling in times and bearings later away from the site, or if someone's texted you the station's code from a previous visit. Works fully offline, since decoding a Plus Code is just arithmetic — no map, no signal needed.
🗺️ Pin on map — opens a tappable OpenStreetMap view. Tap anywhere to drop a pin, or drag it to fine-tune. Once you're happy with the spot, tap ✓ Use this location to collapse the map back down out of the way — tap ✏️ Edit pin any time to reopen it and adjust. This needs an internet connection to load the map tiles, but no account or API key. Handy if you know roughly where the station is on a map but don't have GPS access or a Plus Code to hand.
If compass or location doesn't seem to be working: both need this page loaded over https:// to work at all — which it is, since you're using it at rjsenior.co.uk. If it ever stops working, check you haven't opened a local copy of the file instead of the live address, and check your phone hasn't blocked location/motion permission for the page in its browser settings.

Separately, tap Enable on the compass banner to turn on bearing capture. After that, the 🧭 button next to each hornet's bearing field grabs your phone's current heading whenever you tap it.

Reading the numbers

Once a hornet has at least one logged flight, each card shows average return time, an estimated distance ((seconds − 36) × 1.72), and the average bearing. Treat this as a guide — wind and terrain shift it.

Estimating the nest location

Tap 📍 Estimate nest location once you've got a distance and bearing. It projects a point from your current phone position and gives you:

This stacks estimate on estimate, so treat it as "search roughly here," not an exact pin.

"Consider moving station" tip

Once a hornet has 4+ logged flights and the average return time goes over 1:30, a tip appears suggesting you shift the bait station further along the bearing rather than keep timing from the same spot. Tap 🚶 Suggest a closer monitoring spot for a Plus Code roughly halfway to the current estimate.

Saving your log

Tap Save as PDF in the header. It builds a plain black-on-white record of every hornet's flights, averages, and any nest-location or move suggestions you've resolved, then opens your phone's print dialog — choose "Save as PDF" there.

Exporting to Google My Maps

Tap 🗺️ Export lines (KMZ) in the header. It builds a single downloadable file containing:

Tapping a line in My Maps shows every flight logged for that hornet in its description — not just the average — so nothing you recorded is lost even though the line itself only draws the summary.

Importing it: your team map already has its layers set up (usually one per person), so you shouldn't need to add a new one. Open your own layer, then use Reimport and Merge → Add more items and choose the downloaded .kmz file. The bait station pin and every hornet's line get added into that layer alongside whatever's already there.
Every export after that: same process — Reimport and Merge → Add more items on your layer, pick the latest export. Each session's pin and lines stack up in the one layer rather than creating a new one, so you end up with a full record of your tracking under your name without hitting the map's layer limit.

Data, cookies & GDPR

Short version: the page doesn't collect, store or send anywhere anything you type into it.

Cookies — none. No cookies are set by this page, tracking or otherwise.
Local storage — none. Station names, hornet readings, and every timing and bearing live only in the browser tab's memory for as long as it's open. Close the tab or refresh the page and it's gone — there's nothing to delete because nothing was saved.
Location — when you tap a nest-location or move-suggestion button, the page asks your phone for its current GPS position through the browser's own permission prompt. That position is used immediately, in the browser, to work out a bearing and distance — it's never transmitted to a server, logged, or stored anywhere. You can decline the prompt, or revoke location access afterwards in your phone or browser settings, at any time.
Compass — same principle. Heading data from the phone's sensor is read locally to fill in a bearing and is not sent anywhere.
Google Maps links — tapping "Open in Google Maps" is an ordinary link click that opens Google's own site with the coordinates in the URL. That's normal web browsing behaviour, governed by Google's privacy policy, not something this page does on your behalf.

Because nothing is collected, stored, or processed beyond your own device and your own momentary use of it, there's no personal data here in the sense GDPR is generally concerned with.

Server-side logs — this page is hosted on Plesk shared hosting through UK-Cheapest. Like almost all Plesk hosting, the underlying web server (Apache/Nginx) will keep standard access logs by default — visitor IP address, timestamp, page requested, browser type — regardless of anything on this page itself. That's routine web hosting behaviour rather than something this tool adds, but it does mean the page isn't logless end-to-end; check UK-Cheapest's own privacy policy for how long those logs are kept if that matters for your use case.

Version history

The small text under the tracker's title (e.g. "v 24/08/26") is the date of the last change made to the tool. Check it against the list below if you want to know whether you're on the latest build.

24/08/26 — current
KMZ export rebuilt: the bait station pin now uses the same marker icon as manually-placed pins in Google My Maps, and is named from the station name, your initials, and the date. Each hornet gets one line built from its average bearing and fastest-3 flight time, with every individual flight logged in the line's description. Placemarks no longer sit inside a folder, so repeated imports don't eat into My Maps' layer limit. Added a 🗺️ Pin on map option (OpenStreetMap, via Leaflet) alongside GPS and Plus Code for setting the bait station location, with a collapsible map so it's out of the way once you've placed a pin. Added a Recorder initials field. Removed the separate +/− hornet counter (redundant with "add another hornet" and the ✕ on each card) and the editable move-station threshold (now fixed at 1:30).
Earlier — Plus Code origin & first KML export
Added a bait station origin toggle (📍 current GPS location, or a typed Plus Code), so the nest-location estimate, move suggestion, and export could all work from a fixed point rather than requiring you to be standing at the station. Added the original KML export (bait station pin plus one bearing line per hornet) for pulling flight lines into Google My Maps. Logo and footer tidied up.
Earlier — colour customisation & Android fix
Added the ability to change each hornet's marking colour and name to match your own convention. Fixed compass bearings silently failing on Android — caused by opening the file locally (file://) rather than over https://, which blocks sensor access outright. Added a live heading readout so you can confirm the compass is actually reading before relying on it.
Earlier — copyright
Added a credit line in the footer and a comment in the source.
First build
The original tool: timing up to 6 hornets at once (White/Green/Blue/Pink/Orange/Red), tap to start and stop a return flight, compass-assisted bearing capture with manual entry as a fallback, distance estimate from Alastair's formula, and a proper circular average of bearings.

The maths behind the tool

Credit where it's due: the distance formula and the scatter chart it's built on come from Alastair Christie's Asian Hornet Nest Tracking briefing for the Government of Jersey (Infrastructure, Housing and Environment, 23 July 2026) — this tool just automates the arithmetic he and the Jersey Asian Hornet Group already worked out from real, measured flight-to-nest data.

Distance from return flight time
The briefing's rule of thumb is roughly 100m of distance per minute of return flight time — simple, and good enough for a quick read. But plotting actual return flight times against the real, later-confirmed distance to each nest (the scatter chart in the briefing) shows that simple rule undercounts short flights and overstates very long ones, because a chunk of every return flight is time spent arriving at and feeding on the bait, not travelling. Fitting a line through that scatter gives a more accurate formula, which is what this tool uses:

distance (m) = (flight time in seconds − 36) × 1.72

The "−36" accounts for that fixed arrival/feeding time before she's actually heading home; the 1.72 is the fitted speed term. It's still a guide, not a survey measurement — the briefing's own chart shows real scatter of a hundred metres or more either side of the line once flights run past two or three minutes, since wind, terrain, and how deliberately a hornet flies all vary. Flights under 36 seconds don't get a distance estimate at all, since the formula would go negative.

The "Avg return time" shown for each hornet isn't a plain average of every logged flight — it's the average of the 3 fastest flights (or fewer, if you've logged fewer than 3). That's deliberate: a return flight can only get padded longer by feeding delays, detours, or headwinds, never shorter than the true straight-line flight. So the fastest readings sit closest to reality, and a slow, distracted flight dragged into a plain average would only push the distance estimate too high, never correct it. Averaging the fastest 3 rather than trusting a single fastest reading also guards against one mistimed flight (clock started a beat late, say) skewing the whole estimate.
Averaging bearings
You can't just average bearing numbers directly — two readings of 350° and 10° are only 20° apart in reality, but a plain average gives 180°, the exact opposite direction. The tool instead treats each bearing as a point on a compass, converts it to an x/y position, averages those positions, and converts back to an angle. That handles the wraparound at 0°/360° correctly no matter which readings you've logged.
Estimating a location on the map
For "Estimate nest location" and "Suggest a closer monitoring spot," the tool takes your phone's current GPS position and projects a point outward using the average bearing and distance — proper spherical-earth geometry (a forward geodesic calculation), not a flat-map approximation, so it stays accurate however far you project it. The "closer spot" suggestion projects to roughly half the estimated distance, a sensible starting nudge along the correct line rather than a precise instruction — hedges, fences, and access will often matter more than the exact metre count.
Plus Codes
The short code shown alongside coordinates (like 8FVC9G8F+6X) is a Google Plus Code — officially called Open Location Code. Unlike some location-sharing systems, it's a fully open, published algorithm: no API, no account, no internet connection needed to generate one, and it's built into Google Maps' own search. It works by dividing the globe into a grid and encoding your position within that grid as a short string of letters and numbers, getting more precise the more characters you add. This tool generates a standard-precision code, accurate to roughly a 14m square, which is well within the accuracy the flight-time estimate can offer anyway.