jaro-winkler
Original, standard and customisable versions of the Jaro-Winkler functions.
What it is and what it does
jaro-winkler is a Python implementation of the Jaro and Jaro-Winkler string similarity algorithms. It provides three main functions: jaro_metric() for the standard Jaro algorithm, jaro_winkler_metric() for Winkler's variant (which boosts scores for matching prefixes), and original_metric() which replicates the reference C implementation including typo tables. The package also offers custom_metric() for users who want to tune parameters like prefix scaling, boost thresholds, and typo penalties.
The library has no external runtime dependencies and installs as a pure Python wheel. It is designed for comparing pairs of strings and returning a normalized score; null strings are treated as equal, and the caller is responsible for case normalization and whitespace handling. The package is abandoned as of August 2022 with no recent maintenance.
Use it for:
- Detect potential duplicate records in databases by scoring name or address field similarity
- Implement fuzzy matching in search interfaces to find close matches when exact matches fail
- Validate data entry by comparing user input against reference strings with a configurable threshold
- Deduplicate contact lists or customer records where names may be spelled slightly differently
- Score spelling corrections or typo suggestions in text processing pipelines
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Computes Jaro and Jaro-Winkler string similarity scores, returning values from 0 (no match) to 1 (perfect match) for comparing two strings.
Yes, if you need a lightweight, dependency-free Jaro-Winkler implementation for a stable use case. The package works and has no known vulnerabilities, but it is abandoned—no updates are expected. The GPLv3 license is a blocker for proprietary projects. Suitable for internal tools, open-source projects, or research where you can accept no future maintenance.
Install
jaro-winkler on PyPI
pip
pip install jaro-winkleruv
uv add jaro-winklerpoetry
poetry add jaro-winklerInstalling jaro-winkler
Before you install
Low install friction with no runtime dependencies. However, the package is abandoned—last release was 2022-08-05 and no commits since then. Use only if the existing functionality meets your needs without expecting updates or maintenance.
License in practice
Licensed under GPLv3 (copyleft). Any derivative work or modification must also be released under GPLv3; proprietary or closed-source projects cannot incorporate this package without licensing implications.
Quickstart
pip install jaro-winkler
import jaro
score = jaro.jaro_winkler_metric('SHACKLEFORD', 'SHACKELFORD')
print(score) # Returns similarity score between 0 and 1
Verify before relying
- Whether the package works correctly with modern Python versions (python_support is unspecified in the fact sheet)
- Performance characteristics when comparing large numbers of string pairs
- Behavior with non-ASCII or special Unicode characters beyond the documented unicode string expectation
Package facts
| License | GNU General Public License v3 (GPLv3) (copyleft) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | abandoned — 1,470 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,106,729/month — #4,363 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: jaro_winkler-2.0.3-py3-none-any.whl
Tags
More Text Processing packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyparsingpyparsing provides a library for building text…
permissive · top 1,000 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
RapidFuzzRapidFuzz provides fast fuzzy string matching…
permissive · top 1,000 on PyPI
tinycss2tinycss2 parses CSS strings into token and…
permissive · top 1,000 on PyPI
llama-parseLlamaParse parses complex documents (PDFs,…
permissive · top 1,000 on PyPI
jarowinklerCalculates Jaro and Jaro-Winkler string…
permissive · top 15,000 on PyPI
pyjarowinklerComputes Jaro and Jaro-Winkler similarity and…
permissive · top 15,000 on PyPI
strsimpyImplements a dozen string similarity and…
permissive · top 15,000 on PyPI
textdistanceComputes distance and similarity between text…
permissive · top 5,000 on PyPI
pysimstringProvides fast approximate string matching and…
unclear · top 15,000 on PyPI
python-LevenshteinComputes Levenshtein edit distance, string…
copyleft · top 5,000 on PyPI
ngramExtends Python's set class to perform fuzzy…
copyleft · top 15,000 on PyPI
phoneticsComputes phonetic keys of strings using…
permissive · top 15,000 on PyPI
pyjsonCompares the similarity between two JSON files…
permissive · top 15,000 on PyPI
jsoncomparisonCompares two JSON-like objects and returns a…
permissive · top 5,000 on PyPI