Measure the difference between two strings with the fastest JS implementation of the Levenshtein distance algorithm
JavaScript
734
44 commits
updated Sep 26, 2026
Measure the difference between two strings using the Levenshtein distance algorithm
npm install leven
import leven from 'leven';
leven('cat', 'cow');
//=> 2
Type: string
First string.
Type: string
Second string.
Type: object
Type: number
Maximum distance to calculate.
If the actual distance exceeds this value, the function will return maxDistance instead of the actual distance. This can significantly improve performance when you only care about matches within a certain threshold.
Negative and non-integer values are ignored, and the distance is then not capped.
[!TIP] Without
maxDistance, the time grows with the product of the string lengths, so two long strings can block for seconds. With it, the time grows only with the string length timesmaxDistance. Set it for untrusted input.
import leven from 'leven';
leven('abcdef', '123456', {maxDistance: 3});
//=> 3
leven('cat', 'cow', {maxDistance: 5});
//=> 2
Find the closest matching string from an array of candidates.
Type: string
The string to find matches for.
Type: string[]
Array of candidate strings to search through.
Type: object
Same options as leven().
Type: number
Maximum distance to consider. Candidates with a distance greater than this value will be ignored.
Returns the closest matching string from candidates, or undefined if no candidates are provided or if no match is found within maxDistance.
import {closestMatch} from 'leven';
closestMatch('kitten', ['sitting', 'kitchen', 'mittens']);
//=> 'kitchen'
closestMatch('hello', ['jello', 'yellow', 'bellow'], {maxDistance: 2});
//=> 'jello'
// No match within distance threshold
closestMatch('abcdef', ['123456', '1234567890'], {maxDistance: 2});
//=> undefined
Overall
Maintained
Code review
npm
Latest release
Releases this year
2,035 followers · starred Jan 2016
1,172 followers · starred Sep 2017
1,055 followers · starred Sep 2014
766 followers · starred Oct 2017
Measure the difference between two strings with the fastest JS implementation of the Levenshtein distance algorithm
JavaScript
734
44 commits
updated Sep 26, 2026
Measure the difference between two strings using the Levenshtein distance algorithm
npm install leven
import leven from 'leven';
leven('cat', 'cow');
//=> 2
Type: string
First string.
Type: string
Second string.
Type: object
Type: number
Maximum distance to calculate.
If the actual distance exceeds this value, the function will return maxDistance instead of the actual distance. This can significantly improve performance when you only care about matches within a certain threshold.
Negative and non-integer values are ignored, and the distance is then not capped.
[!TIP] Without
maxDistance, the time grows with the product of the string lengths, so two long strings can block for seconds. With it, the time grows only with the string length timesmaxDistance. Set it for untrusted input.
import leven from 'leven';
leven('abcdef', '123456', {maxDistance: 3});
//=> 3
leven('cat', 'cow', {maxDistance: 5});
//=> 2
Find the closest matching string from an array of candidates.
Type: string
The string to find matches for.
Type: string[]
Array of candidate strings to search through.
Type: object
Same options as leven().
Type: number
Maximum distance to consider. Candidates with a distance greater than this value will be ignored.
Returns the closest matching string from candidates, or undefined if no candidates are provided or if no match is found within maxDistance.
import {closestMatch} from 'leven';
closestMatch('kitten', ['sitting', 'kitchen', 'mittens']);
//=> 'kitchen'
closestMatch('hello', ['jello', 'yellow', 'bellow'], {maxDistance: 2});
//=> 'jello'
// No match within distance threshold
closestMatch('abcdef', ['123456', '1234567890'], {maxDistance: 2});
//=> undefined
Overall
Maintained
Code review
npm
Latest release
Releases this year
2,035 followers · starred Jan 2016
1,172 followers · starred Sep 2017
1,055 followers · starred Sep 2014
766 followers · starred Oct 2017