Some benchmarks of community-made JavaScript/TypeScript libraries for converting units.
Generated automatically at Tue, 29 Jul 2025 01:51:34 GMT with Node.js v22.17.1 (V8 v12.4.254.21-node.27) on pkrvmpptgkbjq6m (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-units (popular) | 130 ns (260%) |
131 ns (262%) |
7,692,308 /sec |
convert (fast) | 140 ns (280%) |
140 ns (280%) |
7,142,857 /sec |
simple-units (fast) | 140 ns (280%) |
141 ns (282%) |
7,142,857 /sec |
uom (fast) | 240 ns (480%) |
250 ns (500%) |
4,166,667 /sec |
moment (popular) | 401 ns (802%) |
411 ns (822%) |
2,493,766 /sec |
safe-units (fast) | 471 ns (942%) |
471 ns (942%) |
2,123,142 /sec |
dayjs (popular) | 551 ns (1,102%) |
561 ns (1,122%) |
1,814,882 /sec |
luxon (popular) | 1,032 ns (2,064%) |
1,042 ns (2,084%) |
968,992 /sec |
js-quantities (popular) | 2,012 ns (4,024%) |
2,032 ns (4,064%) |
497,018 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
convert (fast) | 611 ns (100%) |
681 ns (111%) |
1,636,661 /sec |
convert-units (popular) | 1,603 ns (262%) |
1,754 ns (287%) |
623,830 /sec |
byte-size (popular) | 26,495 ns (4,336%) |
28,527 ns (4,669%) |
37,743 /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) | 120 ns (240%) |
120 ns (240%) |
8,333,333 /sec |
convert (fast) | 140 ns (280%) |
140 ns (280%) |
7,142,857 /sec |
convert-units (popular) | 150 ns (300%) |
150 ns (300%) |
6,666,667 /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,083 ns (4,166%) |
2,111 ns (4,222%) |
480,077 /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) | 120 ns (240%) |
121 ns (242%) |
8,333,333 /sec |
convert (fast) | 121 ns (242%) |
140 ns (280%) |
8,264,463 /sec |
convert-units (popular) | 151 ns (302%) |
160 ns (320%) |
6,622,517 /sec |
uom (fast) | 501 ns (1,002%) |
521 ns (1,042%) |
1,996,008 /sec |
safe-units (fast) | 1,082 ns (2,164%) |
1,092 ns (2,184%) |
924,214 /sec |
js-quantities (popular) | 2,897 ns (5,794%) |
2,925 ns (5,850%) |
345,185 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
ms (popular) | 200 ns (100%) |
201 ns (100%) |
5,000,000 /sec |
@lukeed/ms (fast) | 230 ns (115%) |
231 ns (116%) |
4,347,826 /sec |
convert (fast) | 280 ns (140%) |
281 ns (141%) |
3,571,429 /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) | 91 ns (182%) |
100 ns (200%) |
10,989,011 /sec |