---
title: "UK Ministry of Justice's Splink Merges Messy Records Without Shared IDs"
subtitle: "Splink is a Python library from the UK Ministry of Justice that deduplicates millions of records without unique IDs, running on a laptop."
url: "https://alphasignal.ai/news/uk-ministry-of-justice-s-splink-merges-messy-records-without-shared-ids"
author: "AlphaSignal Newsroom"
author_url: "https://alphasignal.ai/editorial-team"
company: "AlphaSignal"
company_url: "https://alphasignal.ai/company/alphasignal"
published: "2026-04-28T14:42:10.000Z"
updated: "2026-08-22T15:25:55.438Z"
type: "Repo"
topics:
  - "Data"
  - "Retrieval"
subtopics:
  - "Data Curation"
  - "Document Understanding"
upvotes: 40
source_url: "https://github.com/moj-analytical-services/splink"
comments: 0
truncated: true
---

# UK Ministry of Justice's Splink Merges Messy Records Without Shared IDs

> Splink is a Python library from the UK Ministry of Justice that deduplicates millions of records without unique IDs, running on a laptop.

Anyone who has tried to join two customer tables, patient databases, or fraud lists knows the pain: names are misspelled, dates of birth are inconsistent, and there is no shared primary key to fall back on. [Splink](https://github.com/moj-analytical-services/splink), an open-source Python library maintained by the UK Ministry of Justice's analytical services team, tackles exactly this problem, and it has quietly become one of the most capable tools in the entity-resolution space with more than 2,100 GitHub stars and an MIT license.

The package handles probabilistic record linkage, letting you deduplicate and join datasets that lack unique identifiers. Adoption spans government, academia, and industry. Under the hood, Splink implements the Fellegi-Sunter statistical model with modern enhancements for accuracy and scalability, the same framework used by the R fastLink package and most serious probabilistic linkage tooling.

![Example of duplicate records with inconsistent name, date of birth and city fields](https://raw.githubusercontent.com/moj-analytical-services/splink/master/docs/img/README/splink_01_input_records.png) 

## From messy rows to a single entity ID

Given a table with fuzzy, inconsistent columns like name, date of birth, and city, Splink predicts which rows refer to the same real-world entity, then clusters those pairwise links into a single estimated identifier. The workflow has three stages:

1. Compare record pairs across configured columns using exact, fuzzy, or custom logic.
2. Estimate match probabilities using the Expectation-Maximization algorithm.

_Preview only. Full text requires an AlphaSignal Pro account._

## Sources

- [moj-analytical-services/splink](https://github.com/moj-analytical-services/splink)
- [Splink Documentation](https://moj-analytical-services.github.io/splink/)
- [Splink: Free software for probabilistic record linkage at scale](https://ijpds.org/article/view/1794)
- [Splink overview on DeepWiki](https://deepwiki.com/moj-analytical-services/splink)
