{"_id":"leven","_rev":"4180181","name":"leven","description":"Measure the difference between two strings using the Levenshtein distance algorithm","dist-tags":{"latest":"4.1.0"},"maintainers":[{"name":"sindresorhus","email":""}],"time":{"modified":"2026-03-01T21:47:07.000Z","created":"2014-08-09T20:36:43.382Z","4.1.0":"2025-09-11T12:27:52.301Z","4.0.0":"2021-08-10T12:17:03.365Z","3.1.0":"2019-04-04T04:55:27.958Z","3.0.0":"2019-03-12T06:00:52.366Z","2.1.0":"2017-02-18T08:16:38.032Z","2.0.0":"2015-09-07T08:47:31.501Z","1.0.2":"2015-05-16T03:31:53.449Z","1.0.1":"2014-10-07T17:23:37.460Z","1.0.0":"2014-08-09T20:36:43.382Z"},"users":{"finnpauls":true,"kemitchell":true,"edin-m":true,"mimmo1":true,"j.su":true,"jtbrinkmann":true,"tur-nr":true,"itskdk":true,"ethan_":true,"danielkalen":true,"farskipper":true,"heartnett":true,"dada1134":true,"wkronmiller":true,"zillding":true,"thuanhai":true,"thetimmaeh":true,"restuta":true,"monjer":true,"mysticatea":true,"simonfan":true,"shanewholloway":true,"wolfram77":true,"keyn":true,"jochemstoel":true,"seangenabe":true},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"repository":{"type":"git","url":"git+https://github.com/sindresorhus/leven.git"},"versions":{"4.1.0":{"name":"leven","version":"4.1.0","description":"Measure the difference between two strings using the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/leven.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","sideEffects":false,"engines":{"node":"^12.20.0 || ^14.13.1 || >=16.0.0"},"scripts":{"test":"xo && ava","bench":"node bench.js"},"keywords":["leven","levenshtein","distance","algorithm","string","difference","diff","fast","fuzzy","similar","similarity","compare","comparison","edit","text","match","matching"],"devDependencies":{"ava":"^3.15.0","fast-levenshtein":"^3.0.0","ld":"^0.1.0","levdist":"^2.2.10","levenshtein":"^1.0.5","levenshtein-component":"^0.0.1","levenshtein-edit-distance":"^3.0.0","natural":"^5.0.4","talisman":"^1.1.4","tinybench":"^4.0.1","xo":"^0.44.0"},"_id":"leven@4.1.0","gitHead":"235e7758c8ec95fc3a30ef32528ce1fa409c040a","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven#readme","_nodeVersion":"20.19.1","_npmVersion":"10.9.2","dist":{"shasum":"1e37150e1711d18bb14e380a5c779995235a710e","size":3724,"noattachment":false,"key":"/leven/-/leven-4.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-4.1.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/leven_4.1.0_1757593672111_0.10203871312336643"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-11T12:27:52.301Z","publish_time":1757593672301,"_source_registry_name":"default","_cnpm_publish_time":1757593672301},"4.0.0":{"name":"leven","version":"4.0.0","description":"Measure the difference between two strings using the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/leven.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","engines":{"node":"^12.20.0 || ^14.13.1 || >=16.0.0"},"scripts":{"test":"xo && ava && tsd","bench":"matcha bench.js"},"keywords":["leven","levenshtein","distance","algorithm","string","difference","diff","fast","fuzzy","similar","similarity","compare","comparison","edit","text","match","matching"],"devDependencies":{"ava":"^3.15.0","fast-levenshtein":"^3.0.0","ld":"^0.1.0","levdist":"^2.2.10","levenshtein":"^1.0.5","levenshtein-component":"^0.0.1","levenshtein-edit-distance":"^3.0.0","matcha":"^0.7.0","natural":"^5.0.4","talisman":"^1.1.4","tsd":"^0.17.0","xo":"^0.44.0"},"gitHead":"447058af4df87e45724ad608c8892eb263aa1276","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven#readme","_id":"leven@4.0.0","_nodeVersion":"16.2.0","_npmVersion":"7.13.0","dist":{"shasum":"b9c39c803f835950fabef9e122a9b47b95708710","size":2454,"noattachment":false,"key":"/leven/-/leven-4.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-4.0.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/leven_4.0.0_1628597823183_0.03613786828444443"},"_hasShrinkwrap":false,"publish_time":1628597823365,"_cnpm_publish_time":1628597823365},"3.1.0":{"name":"leven","version":"3.1.0","description":"Measure the difference between two strings using the fastest JS implementation of the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/leven.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=6"},"scripts":{"test":"xo && ava && tsd","bench":"matcha bench.js"},"keywords":["leven","levenshtein","distance","algorithm","algo","string","difference","diff","fast","fuzzy","similar","similarity","compare","comparison","edit","text","match","matching"],"devDependencies":{"ava":"^1.4.1","fast-levenshtein":"^2.0.6","ld":"^0.1.0","levdist":"^2.2.9","levenshtein":"^1.0.5","levenshtein-component":"^0.0.1","levenshtein-edit-distance":"^2.0.3","matcha":"^0.7.0","natural":"^0.6.3","talisman":"^0.21.0","tsd":"^0.7.2","xo":"^0.24.0"},"gitHead":"749476f3ef2cb958cace9ca1327e1928fd8d10ea","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven#readme","_id":"leven@3.1.0","_nodeVersion":"8.15.0","_npmVersion":"6.9.0","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"77891de834064cccba82ae7842bb6b14a13ed7f2","size":2496,"noattachment":false,"key":"/leven/-/leven-3.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-3.1.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/leven_3.1.0_1554353727812_0.5760859331516206"},"_hasShrinkwrap":false,"publish_time":1554353727958,"_cnpm_publish_time":1554353727958},"3.0.0":{"name":"leven","version":"3.0.0","description":"Measure the difference between two strings using the fastest JS implementation of the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/leven.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=6"},"scripts":{"test":"xo && ava && tsd-check","bench":"matcha bench.js"},"keywords":["leven","levenshtein","distance","algorithm","algo","string","difference","diff","fast","fuzzy","similar","similarity","compare","comparison","edit","text","match","matching"],"devDependencies":{"ava":"^1.3.1","fast-levenshtein":"^2.0.5","ld":"^0.1.0","levdist":"^2.0.0","levenshtein":"^1.0.4","levenshtein-component":"0.0.1","levenshtein-edit-distance":"^2.0.0","matcha":"^0.7.0","natural":"^0.6.3","talisman":"^0.21.0","tsd-check":"^0.3.0","xo":"^0.24.0"},"gitHead":"254cdab92b2a3154dfb219ec0fcaa9645096e0f1","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven#readme","_id":"leven@3.0.0","_nodeVersion":"8.15.0","_npmVersion":"6.9.0","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"04e58837c50a6293af03b4dea25ad86ef2c19637","size":2393,"noattachment":false,"key":"/leven/-/leven-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-3.0.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/leven_3.0.0_1552370452233_0.47335064155668505"},"_hasShrinkwrap":false,"publish_time":1552370452366,"_cnpm_publish_time":1552370452366},"2.1.0":{"name":"leven","version":"2.1.0","description":"Measure the difference between two strings using the fastest JS implementation of the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/leven.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=0.10.0"},"scripts":{"test":"xo && ava","bench":"matcha bench.js"},"files":["index.js"],"keywords":["leven","levenshtein","distance","algorithm","algo","string","difference","diff","fast","fuzzy","similar","similarity","compare","comparison","edit","text","match","matching"],"devDependencies":{"ava":"^0.17.0","fast-levenshtein":"^2.0.5","ld":"^0.1.0","levdist":"^2.0.0","levenshtein":"^1.0.4","levenshtein-component":"0.0.1","levenshtein-edit-distance":"^2.0.0","matcha":"^0.7.0","natural":"^0.4.0","talisman":"^0.18.0","xo":"^0.16.0"},"gitHead":"0630566a69b5a73aae2e52bb47ea863892a4b5f0","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven#readme","_id":"leven@2.1.0","_shasum":"c2e7a9f772094dee9d34202ae8acce4687875580","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"c2e7a9f772094dee9d34202ae8acce4687875580","size":2338,"noattachment":false,"key":"/leven/-/leven-2.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-2.1.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/leven-2.1.0.tgz_1487405796149_0.5572073105722666"},"directories":{},"publish_time":1487405798032,"_cnpm_publish_time":1487405798032,"_hasShrinkwrap":false},"2.0.0":{"name":"leven","version":"2.0.0","description":"Measure the difference between two strings using the fastest JS implementation of the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"https://github.com/sindresorhus/leven"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=0.10.0"},"scripts":{"test":"xo && ava","bench":"matcha bench.js"},"files":["index.js"],"keywords":["leven","levenshtein","distance","algorithm","algo","string","difference","diff","fast","fuzzy","similar","similarity","compare","comparison","edit","text","match","matching"],"devDependencies":{"ava":"*","fast-levenshtein":"^1.0.3","ld":"^0.1.0","levdist":"^2.0.0","levenshtein":"^1.0.4","levenshtein-component":"0.0.1","levenshtein-edit-distance":"^1.0.0","matcha":"^0.6.0","natural":"^0.2.1","xo":"*"},"gitHead":"cc8d61ca30cbe61b8a5d13741f8aa2f4901b1395","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven","_id":"leven@2.0.0","_shasum":"74c45744439550da185801912829f61d22071bc1","_from":".","_npmVersion":"2.13.3","_nodeVersion":"3.0.0","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"74c45744439550da185801912829f61d22071bc1","size":2006,"noattachment":false,"key":"/leven/-/leven-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-2.0.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"publish_time":1441615651501,"_cnpm_publish_time":1441615651501,"_hasShrinkwrap":false},"1.0.2":{"name":"leven","version":"1.0.2","description":"Measure the difference between two strings using the fastest JS implementation of the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"https://github.com/sindresorhus/leven"},"bin":{"leven":"cli.js"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=0.10.0"},"scripts":{"test":"node test.js","bench":"matcha bench.js"},"files":["index.js","cli.js"],"keywords":["cli","bin","leven","levenshtein","distance","algorithm","algo","string","difference","diff","fast","fuzzy","similar","similarity","compare","comparison","edit","text","match","matching"],"devDependencies":{"ava":"0.0.4","fast-levenshtein":"^1.0.3","ld":"^0.1.0","levdist":"^1.0.0","levenshtein":"^1.0.4","levenshtein-component":"0.0.1","levenshtein-edit-distance":"^0.1.0","matcha":"^0.6.0","natural":"^0.2.1"},"gitHead":"c5035efd44401a8a43dfd0bead24c51386499e4b","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven","_id":"leven@1.0.2","_shasum":"9144b6eebca5f1d0680169f1a6770dcea60b75c3","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"9144b6eebca5f1d0680169f1a6770dcea60b75c3","size":2214,"noattachment":false,"key":"/leven/-/leven-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-1.0.2.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"publish_time":1431747113449,"_cnpm_publish_time":1431747113449,"_hasShrinkwrap":false},"1.0.1":{"name":"leven","version":"1.0.1","description":"Measure the difference between two strings using the fastest JS implementation of the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"https://github.com/sindresorhus/leven"},"bin":{"leven":"cli.js"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"http://sindresorhus.com"},"engines":{"node":">=0.10.0"},"scripts":{"test":"node test.js","bench":"matcha bench.js"},"files":["index.js","cli.js"],"keywords":["cli","bin","leven","levenshtein","distance","algorithm","algo","string","difference","diff","fast","fuzzy","similar","compare","comparison"],"devDependencies":{"ava":"0.0.4","fast-levenshtein":"^1.0.3","ld":"^0.1.0","levdist":"^1.0.0","levenshtein":"^1.0.4","levenshtein-component":"0.0.1","levenshtein-edit-distance":"^0.1.0","matcha":"^0.5.0","natural":"^0.1.28"},"gitHead":"16bf343c490aafa597aab1b00a5329a1bc3ef46c","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven","_id":"leven@1.0.1","_shasum":"98944f5e868c8c351797bb23e8b6752852fc8ba1","_from":".","_npmVersion":"2.1.2","_nodeVersion":"0.10.32","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"maintainers":[{"name":"sindresorhus","email":""}],"dist":{"shasum":"98944f5e868c8c351797bb23e8b6752852fc8ba1","size":1558,"noattachment":false,"key":"/leven/-/leven-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-1.0.1.tgz"},"directories":{},"publish_time":1412702617460,"_cnpm_publish_time":1412702617460,"_hasShrinkwrap":false},"1.0.0":{"name":"leven","version":"1.0.0","description":"Measure the difference between two strings using the fastest JS implementation of the Levenshtein distance algorithm","license":"MIT","repository":{"type":"git","url":"git://github.com/sindresorhus/leven"},"bin":{"leven":"cli.js"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"http://sindresorhus.com"},"engines":{"node":">=0.10.0"},"scripts":{"test":"node test.js","bench":"matcha bench.js"},"files":["index.js","cli.js"],"keywords":["cli","bin","leven","levenshtein","distance","algorithm","algo","string","difference","diff","fast","fuzzy","similar","compare","comparison"],"devDependencies":{"ava":"0.0.3","fast-levenshtein":"^1.0.3","ld":"^0.1.0","levdist":"^1.0.0","levenshtein":"^1.0.4","levenshtein-component":"0.0.1","levenshtein-edit-distance":"^0.1.0","matcha":"^0.5.0","natural":"^0.1.28"},"gitHead":"7e2b14a90a0712aa84b6a3e13e081b042610e4d1","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"homepage":"https://github.com/sindresorhus/leven","_id":"leven@1.0.0","_shasum":"ab55e2765c6434485e13d1603bfbe4b434412908","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"maintainers":[{"name":"sindresorhus","email":""}],"dist":{"shasum":"ab55e2765c6434485e13d1603bfbe4b434412908","size":1524,"noattachment":false,"key":"/leven/-/leven-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/leven/download/leven-1.0.0.tgz"},"directories":{},"publish_time":1407616603382,"_cnpm_publish_time":1407616603382,"_hasShrinkwrap":false}},"readme":"# leven\n\n> Measure the difference between two strings using the [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) algorithm\n\n## Install\n\n```sh\nnpm install leven\n```\n\n## Usage\n\n```js\nimport leven from 'leven';\n\nleven('cat', 'cow');\n//=> 2\n```\n\n## API\n\n### leven(first, second, options?)\n\n#### first\n\nType: `string`\n\nFirst string.\n\n#### second\n\nType: `string`\n\nSecond string.\n\n#### options\n\nType: `object`\n\n##### maxDistance\n\nType: `number`\n\nMaximum distance to calculate.\n\nIf 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.\n\n```js\nimport leven from 'leven';\n\nleven('abcdef', '123456', {maxDistance: 3});\n//=> 3\n\nleven('cat', 'cow', {maxDistance: 5});\n//=> 2\n```\n\n### closestMatch(target, candidates, options?)\n\nFind the closest matching string from an array of candidates.\n\n#### target\n\nType: `string`\n\nThe string to find matches for.\n\n#### candidates\n\nType: `string[]`\n\nArray of candidate strings to search through.\n\n#### options\n\nType: `object`\n\nSame options as `leven()`.\n\n##### maxDistance\n\nType: `number`\n\nMaximum distance to consider. Candidates with a distance greater than this value will be ignored.\n\nReturns the closest matching string from candidates, or `undefined` if no candidates are provided or if no match is found within `maxDistance`.\n\n```js\nimport {closestMatch} from 'leven';\n\nclosestMatch('kitten', ['sitting', 'kitchen', 'mittens']);\n//=> 'kitchen'\n\nclosestMatch('hello', ['jello', 'yellow', 'bellow'], {maxDistance: 2});\n//=> 'jello'\n\n// No match within distance threshold\nclosestMatch('abcdef', ['123456', '1234567890'], {maxDistance: 2});\n//=> undefined\n```\n\n## Related\n\n- [leven-cli](https://github.com/sindresorhus/leven-cli) - CLI for this module\n","_attachments":{},"homepage":"https://github.com/sindresorhus/leven#readme","bugs":{"url":"https://github.com/sindresorhus/leven/issues"},"license":"MIT"}