About

Watching the wild, quietly, together.

Public wildlife cameras stream around the clock, mostly to no one. WildWatch keeps them company. Every camera in the network is checked once a minute, every animal that steps into frame is named and noted, and the record of who came, and when, is waiting here — whether or not anyone happened to be watching.

20Cameras watched
28k+Sightings logged
244k+Frames with animals
60sScan interval
Method

How a frame becomes a sighting.

I.

Frame capture

Once a minute, every camera in the network gives up a single frame. Most arrive as plain snapshots over HTTP; the true video feeds are HLS streams that ffmpeg opens just long enough to take one picture. Cameras are polled in parallel, and one that has gone dark is set aside to retry later rather than holding up the line.

II.

Detection

The frame goes to Google's SpeciesNet, running on a local GPU. MegaDetector v5 draws a box around every animal it can find, and an EfficientNet V2 classifier says what each one is. Everything in the frame is recorded — the fox at the edge as well as the deer in the middle.

III.

Putting a name to it

A single frame is a poor witness. Classifier confidence is summed up the taxonomic tree, and the deepest rank that clears its bar wins — so a hesitant guess settles at 'Penguin' rather than cycling through ten lookalike species. Recent frames from the same camera then vote among themselves, and the label firms up as the evidence does.

IV.

From frames to sightings

A bear that fishes the same stretch of river for twenty minutes is one visit, not twenty discoveries. Runs of frames showing the same species collapse into a single sighting: when it arrived, when it left, and the clearest picture taken while it was there. The per-frame record survives alongside it — one number for how busy the camera was, another for how many animals actually came.

V.

Serving it

Each camera's statistics are totalled once a day and cached, so opening a page costs one read, not a fresh query per visitor. Snapshots live for two weeks. The detection records behind the charts are far smaller, and those are kept for a year.

What the labels are worth

Every label on this site is a machine's best guess, not a verified record. The model is good at a large animal in plain view and worse at anything small, distant, or half-behind a branch; it knows common species better than rare ones. When it can't reach a species it doesn't pretend to — it stops at a family, or simply says “Bird.” The boxes are drawn onto each snapshot at the moment of inference, so what you see is exactly what the model saw.

The cameras

WildWatch owns no cameras. Every stream here belongs to a zoo, a reserve, or a conservation group that mounted it, aims it, and pays for the bandwidth; our part is only the watching. Each camera page links back to its source — and if one of these animals is worth your time, it's worth seeing on the stream its keepers built.

Technology

Next.js 14
Supabase
SpeciesNet
MegaDetector v5
Tailwind CSS
Vercel
hls.js
ffmpeg
PyTorch + CUDA