Some benchmarks of community-made JavaScript/TypeScript libraries for converting units.
Generated automatically at Thu, 30 Oct 2025 18:02:26 GMT with Node.js v24.11.0 (V8 v13.6.233.10-node.28) 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) | 40ns (100%) | 50ns (125%) | 25,000,000/sec | 
| convert-units (popular) | 100ns (250%) | 100ns (250%) | 10,000,000/sec | 
| convert (fast) | 140ns (350%) | 150ns (375%) | 7,142,857/sec | 
| simple-units (fast) | 150ns (375%) | 150ns (375%) | 6,666,667/sec | 
| uom (fast) | 210ns (525%) | 211ns (528%) | 4,761,905/sec | 
| moment (popular) | 351ns (878%) | 361ns (903%) | 2,849,003/sec | 
| dayjs (popular) | 521ns (1,303%) | 531ns (1,328%) | 1,919,386/sec | 
| safe-units (fast) | 631ns (1,578%) | 641ns (1,602%) | 1,584,786/sec | 
| luxon (popular) | 1,072ns (2,680%) | 1,092ns (2,730%) | 932,836/sec | 
| js-quantities (popular) | 1,773ns (4,433%) | 1,803ns (4,508%) | 564,016/sec | 
| Library | Median execution time | 75th percentile execution time | Executions per second | 
|---|---|---|---|
| convert (fast) | 552ns (100%) | 621ns (113%) | 1,811,594/sec | 
| convert-units (popular) | 1,714ns (311%) | 1,824ns (330%) | 583,431/sec | 
| byte-size (popular) | 26,591ns (4,817%) | 28,015ns (5,075%) | 37,607/sec | 
| Library | Median execution time | 75th percentile execution time | Executions per second | 
|---|---|---|---|
| math (baseline) | 60ns (100%) | 60ns (100%) | 16,666,667/sec | 
| simple-units (fast) | 120ns (200%) | 130ns (217%) | 8,333,333/sec | 
| convert-units (popular) | 130ns (217%) | 140ns (233%) | 7,692,308/sec | 
| convert (fast) | 140ns (233%) | 141ns (235%) | 7,142,857/sec | 
| uom (fast) | 210ns (350%) | 221ns (368%) | 4,761,905/sec | 
| safe-units (fast) | 621ns (1,035%) | 631ns (1,052%) | 1,610,306/sec | 
| js-quantities (popular) | 1,964ns (3,273%) | 2,013ns (3,355%) | 509,165/sec | 
| Library | Median execution time | 75th percentile execution time | Executions per second | 
|---|---|---|---|
| math (baseline) | 40ns (100%) | 49ns (123%) | 25,000,000/sec | 
| simple-units (fast) | 100ns (250%) | 100ns (250%) | 10,000,000/sec | 
| convert (fast) | 110ns (275%) | 120ns (300%) | 9,090,909/sec | 
| convert-units (popular) | 141ns (353%) | 150ns (375%) | 7,092,199/sec | 
| uom (fast) | 471ns (1,178%) | 481ns (1,203%) | 2,123,142/sec | 
| safe-units (fast) | 1,532ns (3,830%) | 1,542ns (3,855%) | 652,742/sec | 
| js-quantities (popular) | 2,645ns (6,613%) | 2,725ns (6,813%) | 378,072/sec | 
| Library | Median execution time | 75th percentile execution time | Executions per second | 
|---|---|---|---|
| ms (popular) | 210ns (100%) | 220ns (105%) | 4,761,905/sec | 
| @lukeed/ms (fast) | 221ns (105%) | 230ns (110%) | 4,524,887/sec | 
| convert (fast) | 311ns (148%) | 321ns (153%) | 3,215,434/sec | 
| Library | Median execution time | 75th percentile execution time | Executions per second | 
|---|---|---|---|
| math (baseline) | 49ns (100%) | 50ns (102%) | 20,408,163/sec | 
| convert (fast) | 90ns (184%) | 90ns (184%) | 11,111,111/sec |