AI Discovers 1,400 Anomalies in Hubble Archive With AI

AI Discovers 1,400 Anomalies in Hubble Archive With AI
source: gettyimages
January 28, 2026

ESA researchers David O’Ryan and Pablo Gómez used a machine-learning tool, AnomalyMatch, to comb through nearly 100 million image cutouts from the Hubble Legacy Archive, hunting for unusual objects that merit human review. They describe space data as vast, noisy, and easy to overwhelm, making AI a valuable ally in spotting patterns that might escape traditional analysis.

The study shows why sifting through space data is so challenging: the telescope generates a flood of information from a 35-year dataset. AnomalyMatch completed the search in about two and a half days, a pace far quicker than a human team could achieve.

The results, published in Astronomy & Astrophysics, identified roughly 1,400 anomalous objects. Most of these appear to be merging or interacting galaxies, but the catalog also includes gravitational lenses, jellyfish galaxies with trailing streams of gas, and galaxies with large clumps of stars. Notably, several dozen objects resisted straightforward classification.

“This is a fantastic use of AI to maximise the scientific output of the Hubble archive,” Gómez said. “Finding so many anomalous objects in Hubble data, where you might expect many to have already been found, is a great result. It also shows how useful this tool will be for other large datasets.”

The team emphasizes that AnomalyMatch can help unlock hidden data across big astronomical archives and could be applied to other large-scale surveys to accelerate discoveries.

Related links

By submitting, I confirm I have the right to share this link and I agree to link back to this article from the submitted page. Duplicate URLs are rejected. Up to 5 links per page.

GraphQL · 143 ms
query Q($id: Int!, $domain: Int!, $srcId: Int!, $hasSrc: Boolean!, $hasSelf: Boolean!) {
  self: qa_ai(where: {id: {_eq: $id}}, limit: 1) @include(if: $hasSelf) {
    id
    title
    text
    date
  }
  linksarticle: qa_ai(where: {domain: {_eq: $domain}, id: {_neq: $id}}, order_by: {id: desc}, limit: 8) {
    id
    title
  }
  linksbottom: qa_ai(where: {domain: {_neq: $domain}, id: {_lt: $id}}, order_by: {id: desc}, limit: 3) {
    id
    title
    domain
  }
  source: qa_ai(where: {id: {_eq: $srcId}}, limit: 1) @include(if: $hasSrc) {
    id
    title
  }
}
{
  "id": 6645195,
  "domain": 6,
  "srcId": 0,
  "hasSrc": false,
  "hasSelf": true
}