lev-rs 0.6.0

An extremely fast Levenshtein distance and similarity ratio, also available for Python.
Documentation

lev

lev is an extremely fast Python library for the Levenshtein distance and similarity ratio, written in Rust. 🦀

Installation

uv add lev-rs

or if you prefer slow:

pip install lev-rs

Wheels are available for Python 3.10 through 3.15, including free-threaded builds (PEP 703), on Linux, macOS, and Windows.

Usage

import lev

lev.distance("kitten", "sitting")  # 3
lev.distance("résumé", "resume")  # 2
lev.distance("日本語", "日本")  # 1

lev.ratio("kitten", "sitting")  # 0.615...
lev.ratio("abc", "xyz")  # 0.0
lev.ratio("", "")  # 1.0

See the API Reference for details.

Rust

lev is also published as the lev-rs crate:

cargo add lev-rs
assert_eq!(lev::distance("kitten", "sitting"), 3);
assert_eq!(lev::ratio("abc", "xyz"), 0.0);

The crate requires Rust 1.91 or newer. See docs.rs for details.

Benchmarks

lev is compared against the fastest Levenshtein libraries for Python: rapidfuzz, polyleven, editdistance, and edlib. Each plot shows the total time for 1,000 calls (lower is better).

Plots were generated by GitHub Actions on Ubuntu 24.04 with Python 3.13. Reproduce them locally with uv run scripts/benchmark.py.

ASCII

Latin-1

CJK

Emoji

Realistic Text

A short customer support message with a few natural typos.

Benchmark Scripts

Reproduce benchmarks locally using the provided scripts:

# Compare against other libraries:
uv run scripts/benchmark.py

# Benchmark scaling across string lengths:
uv run scripts/benchmark_by_length.py

# Benchmark speedup across released versions:
uv run scripts/benchmark_by_version.py

Contact

Open an issue or email github@markusbilz.com.