cmpstr
v3.2.1
Published
CmpStr is a lightweight, fast and well performing package for calculating string similarity
Downloads
12,242
Maintainers
Keywords
Readme
CmpStr – Modern String Similarity Package
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. The current version emphasizes determinism, performance, and architectural clarity while remaining approachable for everyday usage.
Key Features
- Unified API for string similarity, distance measurement, and matching
- Modular metric system with built-in support for 11 different metrics
- Integrated phonetic algorithms (e.g. Soundex, Metaphone) with a configurable registry
- Configurable normalization and filtering pipeline for consistent input processing
- Single, batch, and pairwise comparisons with structured, type-safe results
- Phonetic-aware search and comparison
- Structured data comparison via property extraction
- Utilities for text structure and readability analysis (e.g. syllables, word statistics)
- Diffing utilities with CLI-friendly output formats
- TypeScript-native design with full type declarations
- Optional asynchronous APIs for scalable, non-blocking workloads
- Extensible architecture for custom algorithms, processors, and filters
Getting Started
Install CmpStr using npm:
npm install cmpstrMinimal 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)
