21 String Metrics
Edit distance, token-based, subsequence, alignment, and hybrid metrics — including Ratcliff-Obershelp, Needleman-Wunsch, Gotoh, and Monge-Elkan.
Rust-Powered Speed
All core logic runs in compiled Rust with Rayon parallelism. 2-5x faster than pure Python alternatives.
Record Linkage Pipeline
Full pipeline with 11 blocking strategies, field comparators, 8 classifiers, DBSCAN/OPTICS clustering, and quality metrics.
Pandas & Polars Integration
DataFrame accessors for fuzzy merge, phonetic encoding, and deduplication. Native Polars plugin for zero-GIL overhead.
10 Phonetic Algorithms
Soundex, Metaphone, Double Metaphone, NYSIIS, Caverphone, Cologne, Beider-Morse, Phonex, MRA, and Daitch-Mokotoff.
Interactive Playground
Try every function in your browser. Upload CSV files, compare metrics side-by-side, and build pipelines visually.
Quick Example
from reclink import jaro_winkler, match_best, cdist
# Compare two strings
jaro_winkler("Jon Smith", "John Smyth") # 0.832
# Find the best match from candidates
match_best("Jon", ["John", "Jane", "James"])
# ("John", 0.933, 0)
# All-pairs similarity matrix (parallelized)
cdist(["Jon", "Jane"], ["John", "Janet"], scorer="jaro_winkler")
# array([[0.93, 0.0 ],
# [0.0 , 0.93]])Performance
Pairwise comparison benchmarks (microseconds per pair, lower is better):
| Metric | reclink | rapidfuzz | jellyfish |
|---|---|---|---|
| levenshtein | 0.55 μs | 0.18 μs | 1.28 μs |
| jaro_winkler | 0.31 μs | 0.20 μs | 0.68 μs |
| damerau_levenshtein | 0.93 μs | 0.24 μs | 2.41 μs |
2-3x faster than jellyfish, 5x faster than thefuzz — with a far richer feature set.
