Some benchmarks of community-made JavaScript/TypeScript libraries for converting units.
Generated automatically at Sun, 12 Oct 2025 02:04:42 GMT with Node.js v22.20.0 (V8 v12.4.254.21-node.33) on runnervmwhb2z (Linux-x64 AMD EPYC 7763 64-Core Processor)
Each test was called 10,000 times to allow the runtime to warmup. Afterward 100,000 trials were performed for each library. Information about the execution times are shown below. Lower execution times and higher executions per second are better.
A baseline of raw math is included when relevant.
If you want a different library to be added to the benchmark, make an issue or create a pull request if you're comfortable.
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
math (baseline) | 50 ns (100%) |
50 ns (100%) |
20,000,000 /sec |
convert (fast) | 110 ns (220%) |
111 ns (222%) |
9,090,909 /sec |
convert-units (popular) | 130 ns (260%) |
131 ns (262%) |
7,692,308 /sec |
simple-units (fast) | 150 ns (300%) |
151 ns (302%) |
6,666,667 /sec |
uom (fast) | 231 ns (462%) |
241 ns (482%) |
4,329,004 /sec |
moment (popular) | 411 ns (822%) |
421 ns (842%) |
2,433,090 /sec |
safe-units (fast) | 461 ns (922%) |
470 ns (940%) |
2,169,197 /sec |
dayjs (popular) | 561 ns (1,122%) |
581 ns (1,162%) |
1,782,531 /sec |
luxon (popular) | 1,062 ns (2,124%) |
1,073 ns (2,146%) |
941,620 /sec |
js-quantities (popular) | 2,014 ns (4,028%) |
2,034 ns (4,068%) |
496,524 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
convert (fast) | 681 ns (100%) |
752 ns (110%) |
1,468,429 /sec |
convert-units (popular) | 1,853 ns (272%) |
2,065 ns (303%) |
539,665 /sec |
byte-size (popular) | 26,479 ns (3,888%) |
29,215 ns (4,290%) |
37,766 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
math (baseline) | 50 ns (100%) |
50 ns (100%) |
20,000,000 /sec |
convert (fast) | 111 ns (222%) |
120 ns (240%) |
9,009,009 /sec |
convert-units (popular) | 130 ns (260%) |
140 ns (280%) |
7,692,308 /sec |
simple-units (fast) | 130 ns (260%) |
130 ns (260%) |
7,692,308 /sec |
uom (fast) | 240 ns (480%) |
250 ns (500%) |
4,166,667 /sec |
safe-units (fast) | 461 ns (922%) |
470 ns (940%) |
2,169,197 /sec |
js-quantities (popular) | 2,135 ns (4,270%) |
2,155 ns (4,310%) |
468,384 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
math (baseline) | 50 ns (100%) |
50 ns (100%) |
20,000,000 /sec |
simple-units (fast) | 110 ns (220%) |
111 ns (222%) |
9,090,909 /sec |
convert (fast) | 120 ns (240%) |
121 ns (242%) |
8,333,333 /sec |
convert-units (popular) | 151 ns (302%) |
160 ns (320%) |
6,622,517 /sec |
uom (fast) | 511 ns (1,022%) |
521 ns (1,042%) |
1,956,947 /sec |
safe-units (fast) | 1,122 ns (2,244%) |
1,132 ns (2,264%) |
891,266 /sec |
js-quantities (popular) | 2,927 ns (5,854%) |
2,955 ns (5,910%) |
341,647 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
ms (popular) | 210 ns (100%) |
211 ns (100%) |
4,761,905 /sec |
@lukeed/ms (fast) | 231 ns (110%) |
231 ns (110%) |
4,329,004 /sec |
convert (fast) | 271 ns (129%) |
280 ns (133%) |
3,690,037 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
math (baseline) | 50 ns (100%) |
50 ns (100%) |
20,000,000 /sec |
convert (fast) | 100 ns (200%) |
100 ns (200%) |
10,000,000 /sec |