Skip to main content
Enhanced MS provides a simple API for converting between milliseconds and human-readable duration strings. This guide covers the basic usage patterns you’ll use most often.

Formatting milliseconds

The most common use case is converting milliseconds into readable duration strings. Simply pass a number to the ms function:
import ms from 'enhanced-ms';

ms(90061);
// "1 minute 30 seconds"

ms(90061000);
// "1 day 1 hour 1 minute 1 second"
By default, Enhanced MS includes years, days, hours, minutes, and seconds in the output. Values less than one second return null:
ms(0);
// null

ms(500);
// null (less than 1 second)

Parsing duration strings

You can also parse human-readable duration strings back into milliseconds. The parser accepts both full unit names and abbreviations:
ms('1 minute 30 seconds');
// 90000

ms('1 day 1 hour 1 minute 1 second');
// 90061000

ms('2 hours 45 minutes');
// 9900000
The parser is flexible and accepts mixed formats. You can combine full unit names with abbreviations in the same string.

Including milliseconds

By default, milliseconds aren’t included in formatted output. To include them, use the includeMs option:
ms(90061, { includeMs: true });
// "1 minute 30 seconds 61 milliseconds"

ms(1500, { includeMs: true });
// "1 second 500 milliseconds"
When parsing, milliseconds are automatically recognized:
ms('1 minute 30 seconds 61 milliseconds');
// 90061

ms('1m 30s 61ms');
// 90061

Handling invalid input

Enhanced MS handles invalid input gracefully: Formatting invalid numbers:
ms(NaN);
// throws TypeError: Expected a finite number

ms(Infinity);
// throws TypeError: Expected a finite number

ms(-1000);
// throws TypeError: Expected a positive number
Parsing invalid strings:
ms('invalid');
// 0

ms('no numbers here');
// 0

ms('');
// 0
When parsing fails to find valid duration units, it returns 0 instead of throwing an error. This makes it safe to use with user input.

Common use cases

Here are some practical examples of how you might use Enhanced MS in your applications:

Display uptime

const uptimeMs = process.uptime() * 1000;
const uptime = ms(uptimeMs);
console.log(`Server uptime: ${uptime}`);
// "Server uptime: 2 days 3 hours 15 minutes 42 seconds"

Parse configuration values

const config = {
  timeout: '30 seconds',
  cacheExpiry: '1 hour',
  retryDelay: '5 minutes'
};

const timeoutMs = ms(config.timeout);
setTimeout(() => {
  // Do something after timeout
}, timeoutMs);

Format elapsed time

const startTime = Date.now();
// ... do some work ...
const elapsed = Date.now() - startTime;

console.log(`Operation completed in ${ms(elapsed, { includeMs: true })}`);
// "Operation completed in 2 seconds 145 milliseconds"

Build docs developers (and LLMs) love