String.prototype.localeCompare()
localeCompare(compareString[, locales[, options]]) Returns:
number · Added in vES1 · Updated March 13, 2026 · String Methods string locale internationalization sorting es1
The localeCompare() method compares two strings in the current locale (or a specified locale) and returns a number indicating whether the reference string comes before, after, or is equivalent to the compared string in sort order. This is essential for building multilingual applications that need locale-aware sorting and searching.
Syntax
localeCompare(compareString)
localeCompare(compareString, locales)
localeCompare(compareString, locales, options)
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
compareString | string | — | The string to compare against |
locales | string or array | undefined | BCP 47 language tag(s) (e.g., ‘en-US’, ‘de-DE’) |
options | object | undefined | Configuration for comparison behavior |
Options Object
| Property | Type | Description |
|---|---|---|
sensitivity | string | ’base’, ‘accent’, ‘case’, ‘variant’ |
ignorePunctuation | boolean | Whether to ignore punctuation |
numeric | boolean | Whether to use numeric ordering |
caseFirst | string | ’upper’ or ‘lower’ |
Return Value
Returns a negative number if the reference string sorts before compareString, a positive number if it sorts after, or 0 if they are equivalent.
Examples
Basic Comparison
const str = 'apple';
str.localeCompare('banana'); // -1 (apple comes before banana)
str.localeCompare('apple'); // 0 (equal)
str.localeCompare('zebra'); // 1 (apple comes after zebra)
Locale-Aware Sorting
const fruits = ['banana', 'Apple', 'cherry'];
// Default comparison
fruits.sort((a, b) => a.localeCompare(b));
// Result: ['Apple', 'banana', 'cherry']
// German phonebook ordering
fruits.sort((a, b) => a.localeCompare(b, 'de-DE'));
Numeric Sorting
const versions = ['v10', 'v2', 'v1', 'v20'];
// Numeric sorting (v1, v2, v10, v20 instead of v1, v10, v2, v20)
versions.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
// Result: ['v1', 'v2', 'v10', 'v20']
Browser Support
Supported in all modern browsers. Internet Explorer requires version 6+. For older browsers, consider using a polyfill.
See Also
- string::toLowerCase — Convert to lowercase
- string::toUpperCase — Convert to uppercase