# fastest-levenshtein

> Fastest Levenshtein distance implementation in JS.

Latest version **1.0.16** (published 2022-08-02) · MIT license · 0 weekly downloads

## Install

```sh
npm install fastest-levenshtein
pnpm add fastest-levenshtein
yarn add fastest-levenshtein
bun add fastest-levenshtein
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.16 |
| Published | 2022-08-02 |
| First published | 2020-07-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >= 4.9.1 |
| Dependencies | 0 |
| Unpacked size | 20.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 774 |
| Author | Kasper U. Weihe |
| Maintainers | ka-weihe |
| Keywords | levenshtein, distance, fast, fastest, edit, string, similarity, algorithm, match, comparison, fuzzy, search, string, matching, similar, node, difference |

## Links

- npm: https://www.npmjs.com/package/fastest-levenshtein
- Repository: https://github.com/ka-weihe/fastest-levenshtein
- Homepage: https://github.com/ka-weihe/fastest-levenshtein#README
- Issues: https://github.com/ka-weihe/fastest-levenshtein/issues
- npm.io page: https://npm.io/package/fastest-levenshtein

## Alternatives

- [ext-list](https://npm.io/package/ext-list.md) — 6.3M weekly downloads
- [@lexical/selection](https://npm.io/package/@lexical/selection.md) — 3.8M weekly downloads
- [@lexical/text](https://npm.io/package/@lexical/text.md) — 3.6M weekly downloads
- [@lexical/clipboard](https://npm.io/package/@lexical/clipboard.md) — 3.0M weekly downloads
- [@tiptap/extension-mention](https://npm.io/package/@tiptap/extension-mention.md) — 3.0M weekly downloads

## Recent versions

- 1.0.16 (latest) — 2022-08-02
- 1.0.15 — 2022-08-02
- 1.0.14 — 2022-07-19
- 1.0.13 — 2022-07-19
- 1.0.12 — 2020-08-07
- 1.0.11 — 2020-08-07
- 1.0.10 — 2020-07-25
- 1.0.9 — 2020-07-22
- 1.0.8 — 2020-07-22
- 1.0.7 — 2020-07-22
- 1.0.6 — 2020-07-22
- 1.0.5 — 2020-07-22
- 1.0.4 — 2020-07-22
- 1.0.3 — 2020-07-22
- 1.0.2 — 2020-07-22
- … 2 more at https://npm.io/package/fastest-levenshtein/versions

## README

# fastest-levenshtein :rocket: 
> Fastest JS/TS implemenation of [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance).<br>
> Measure the difference between two strings.

[![Build Status](https://travis-ci.org/ka-weihe/fastest-levenshtein.svg?branch=master)](https://travis-ci.org/ka-weihe/fastest-levenshtein)
[![Coverage Status](https://coveralls.io/repos/github/ka-weihe/node-levenshtein/badge.svg?branch=master)](https://coveralls.io/github/ka-weihe/node-levenshtein?branch=master)
[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/ka-weihe/fastest-levenshtein.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/ka-weihe/fastest-levenshtein/context:javascript)
![npm](https://img.shields.io/npm/dm/fastest-levenshtein)
```bash
$ npm i fastest-levenshtein
```

## Usage
### Node
```javascript
const {distance, closest} = require('fastest-levenshtein')

// Print levenshtein-distance between 'fast' and 'faster' 
console.log(distance('fast', 'faster'))
//=> 2

// Print string from array with lowest edit-distance to 'fast'
console.log(closest('fast', ['slow', 'faster', 'fastest']))
//=> 'faster'
```

### Deno
```javascript
import {distance, closest} from 'https://deno.land/x/fastest_levenshtein/mod.ts'

// Print levenshtein-distance between 'fast' and 'faster' 
console.log(distance('fast', 'faster'))
//=> 2

// Print string from array with lowest edit-distance to 'fast'
console.log(closest('fast', ['slow', 'faster', 'fastest']))
//=> 'faster'
```

## Benchmark
I generated 500 pairs of strings with length N. I measured the ops/sec each library achieves to process all the given pairs. Higher is better. 

| Test Target               | N=4   | N=8   | N=16  | N=32 | N=64  | N=128 | N=256 | N=512 | N=1024 |
|---------------------------|-------|-------|-------|------|-------|-------|-------|-------|--------|
| fastest-levenshtein       | 44423 | 23702 | 10764 | 4595 | 1049  | 291.5 | 86.64 | 22.24 | 5.473  |
| js-levenshtein            | 21261 | 10030 | 2939  | 824  | 223   | 57.62 | 14.77 | 3.717 | 0.934  |
| leven                     | 19688 | 6884  | 1606  | 436  | 117   | 30.34 | 7.604 | 1.929 | 0.478  |
| fast-levenshtein          | 18577 | 6112  | 1265  | 345  | 89.41 | 22.70 | 5.676 | 1.428 | 0.348  |
| levenshtein-edit-distance | 22968 | 7445  | 1493  | 409  | 109   | 28.07 | 7.095 | 1.789 | 0.445  |

### Relative Performance
This image shows the relative performance between `fastest-levenshtein` and `js-levenshtein` (the 2nd fastest). `fastest-levenshtein` is always a lot faster. y-axis shows "times faster".

![Benchmark](/images/relaperf.png)

## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details

---
_Source: https://npm.io/package/fastest-levenshtein · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
