Skip to content

komed3/cmpstr

Repository files navigation

CmpStr – Modern String Similarity Package

Static Badge Static Badge NPM License GitHub package.json version GitHub Actions Workflow Status NPM Downloads jsDelivr hits (npm) npm package minimized gzipped size Static Badge Static Badge

ko-fi

CmpStr is a modern TypeScript library for advanced string comparison, similarity measurement, phonetic indexing, and text analysis. It provides a comprehensive collection of established algorithms such as Levenshtein, Dice–Sørensen, Jaro-Winkler, LCS, q-Gram, and more.

The library is dependency-free, fully typed, and designed with extensibility in mind. Custom metrics, phonetic mappings, normalization filters, and processing pipelines can be integrated without modifying the core. CmpStr offers a unified, consistent API for single comparisons, batch processing, and pairwise matching across synchronous and asynchronous workflows.

Originally released in 2023 with a minimal feature set, CmpStr was fundamentally redesigned in 2025 to support a broader range of algorithms, scalable processing, and more demanding real-world use cases.

Key Features

Getting Started

Install CmpStr using npm:

npm install cmpstr

or with yarn:

yarn add cmpstr

Minimal Example

import { CmpStr } from 'cmpstr';

const cmp = CmpStr.create().setMetric( 'levenshtein' ).setFlags( 'i' );
const result = cmp.test( [ 'hello', 'hola' ], 'Hallo' );

console.log( result );
// { source: 'hello', target: 'Hallo', match: 0.8 }

Asynchronous Usage

import { CmpStrAsync } from 'cmpstr';

const cmp = CmpStrAsync.create().setProcessors( {
  phonetic: { algo: 'soundex' }
} );

const result = await cmp.searchAsync( 'Maier', [
  'Meyer', 'Müller', 'Miller', 'Meyers', 'Meier'
] );

console.log( result );
// [ 'Meyer', 'Meier' ]

Try it online with OneCompiler.

CLI Tool

CmpStr can also be used directly from the command line via cmpstr-cli. The CLI exposes many of the library’s features for interactive use, scripting, and automated processing, making it suitable for data cleaning, analysis, and batch workflows.

Documentation

Comprehensive documentation, API references, and advanced usage examples are available in the GitHub Wiki.

Check out the technical documentation created with TypeDoc, which exposes all classes, methods and types.

License

MIT License — © 2023–2026 Paul Köhler (komed3)

Sponsor this project

Contributors