UFO sightings, on the record: why I built ufosighting.report

I moderate the Reddit community r/UFOs, one of the largest online UFO communities It produces a constant stream of sighting reports. That stream is the best and worst thing about the subreddit. On a good night someone uploads clear footage of something that resists explanation, three other people in the same county chime in, and you remember why you volunteered for this. On a normal night it is a blurry dot filmed through a window screen, titled “WHAT IS THIS ORB??”, posted by someone who has never heard of Starlink.
A few months ago we ran a thread asking the community how to improve the sub. One comment stuck with me:
A lot of the sighting posts here are easily explainable as balloons, clouds, out-of-focus drones and aircraft, or Venus/Jupiter. It does get old after a while. I don't know what the solution is, maybe require sighting posts to include why they're not those things somehow.
That comment became a spec. The result is ufosighting.report, a permanent, searchable, media-backed archive of the community's sightings, plus a submission pipeline designed to raise the floor on report quality. This post is the longer story behind it: what it does, what the data revealed once I could see it in aggregate, and some notes on how it is built.
The quiet problem: sightings rot
Before the quality problem, there is a preservation problem that most people never notice.
Reddit is a terrible archive. Users delete their accounts and take their posts with them. Posts get removed. And even threads that survive slowly decay, because Reddit re-encodes uploaded media aggressively and old media links eventually stop resolving. Some of the most interesting sighting reports from even two years ago are now text skeletons with dead video embeds. If any of this material ever turns out to matter, it will matter as a body of evidence, and bodies of evidence should not depend on whether a stranger keeps their Reddit account.
So the first job of the site is boring and important: every post flaired “Sighting” on r/UFOs is ingested automatically, media and all. The video files, the images, the top comments, the original text. Around 8,000 sightings going back to early 2024 are already in, and new ones arrive within minutes of being posted. If the author later deletes their post, the archive keeps it, clearly labeled with what happened to the original. Reports that our own mod team removed for breaking the rules stay stored but out of the public archive; spam does not become history just by getting old.
Turning prose into pins

A Reddit sighting post is unstructured prose. “Saw this over the lake near my house around 9 last night” is a location and a time to a human and neither to a database.
The pipeline runs every incoming post (title, body, and the author's follow-up comments, because the useful details are always in a comment) through an LLM extraction step that pulls out the date, time, timezone, and location when they are actually stated, then geocodes the location to coordinates. I deliberately do not let it guess object shape, size, or behavior; free text is too easy to over-read, and hallucinated structure is worse than none. Dates and places it cannot corroborate stay blank.
About four in five archived sightings ended up with usable coordinates. That is what makes the map possible: nearly seven thousand pins, filterable by date. Set the date range to mid-November through late December 2024 and watch the New Jersey drone flap bloom across the East Coast. It is one thing to remember that period as a news cycle and another to see it as a point cloud.
What the data says once you can actually query it
Here is where it got fun. Once thousands of reports are structured, you can ask questions that are impossible to ask of a subreddit.

The hotspot map you expect is a population map. Every raw heatmap of UFO sightings lights up over big cities, because that is where the people are. Texas ranks second in raw sighting counts. Adjust for population and Texas falls to 35th. California drops from first to 15th. The map has a per-capita mode that normalizes each area against its local population, and when you flip it on, the glow migrates away from the metros and settles over the desert Southwest: Arizona, Nevada, New Mexico, plus a hot stripe of coastal New Jersey from the drone flap. Phoenix Lights country, Area 51 country, Roswell country. I make no claims about why. Reporting culture, dark skies, military airspace, and folklore all plausibly feed it. But the pattern is real and it is not where the people are.

Military bases are nearby more often than chance suggests. In the highest-anomaly states, 56 percent of sightings fall within 50 kilometers of a military installation, against 43 percent elsewhere. Bases sit on exactly the kind of open land that produces good sky views, so treat that gap gently. It is still an interesting gap.

A lot of UFOs have prosaic flight plans. For every mapped sighting with a time and place, the site computes what was actually overhead using orbital data: ISS passes, Starlink trains, bright satellites, and rocket launches. Of the sightings checked so far, roughly one in five coincided with a Starlink train visible from that location at that time. Two hundred and eighteen lined up with an ISS pass. Sixty-two happened within hours and a few hundred kilometers of a rocket launch, and a twilight rocket plume is responsible for more panicked video than almost anything else in the sky. Each sighting page shows this context automatically, along with links to historical aircraft traffic for that day and a sky chart for that exact spot and hour. The point is not to debunk anyone. The point is that “what else was up there” should be one click, not one research project.
Raising the floor on new reports

The other half of the site is the submission wizard, which is my answer to that comment from the feedback thread.
Posting a sighting through it requires actually describing the event: where, when, shape, movement, duration, distance, the “five observables” questions, and, centrally, a mandatory field asking why this is not a common object. You have to write down what you ruled out before the community sees it. It is friction, on purpose. Low-effort reports are cheap to produce and expensive for everyone else to wade through, and a little typing rebalances that.
Then there is the media handling, which I think is the strongest technical argument for the site:
- Originals are preserved untouched. Reddit re-encodes everything you upload. The site keeps the exact file, byte for byte. Upload from an iPhone and the original HEIC goes into storage, not a recompressed JPEG.
- Metadata becomes evidence, with consent. On upload, the site reads the file's EXIF: camera model, lens, exposure, capture time, GPS, even the compass heading you were facing. For a sighting, that heading is gold; it lets anyone reconstruct your exact view of the sky and check it against satellite and aircraft positions. You see everything the file contains before publishing, with checkboxes to withhold device details, timestamp, or location.
- Withheld means scrubbed, not hidden. If you choose not to share GPS, the coordinates are stripped from the published file itself. Privacy that depends on nobody checking is not privacy.
Finally, submissions are tied to Reddit identity. After you submit, a bot DMs you a verification link, and only after you confirm does the sighting go live and post to r/UFOs under your username, marked verified. Anonymous drive-by noise gets expensive; standing behind your report gets easy.
What is next
The shape and object data on new submissions will compound over time into something genuinely queryable, and I would like the community to help enrich the older records the same way a wiki fills in gaps. More viewing angles on the data are coming. And if you have ideas, the whole point of building this for a community is that the community gets a say.
Browse the archive at ufosighting.report, explore the map, and if you see something in the sky you cannot explain, put it on the record. Properly, this time. With the metadata.
























