HTML Preparation code:
Script Preparation code:
Tests:

Historical Performance Data aggregated from 219 community runs

Desktop Results:
Chrome 159 runs
clsx
4.3M/s
String based (return struct)
4.2M/s
String based (if-else struct)
4.1M/s
Entries, filter, map, join
3.7M/s
Array based
3.2M/s
classnames
3.0M/s

Fastest: clsx (1.4x faster)

View exact numbers
  • clsx: 4,286,187 ops/sec
  • String based (return struct): 4,221,818 ops/sec
  • String based (if-else struct): 4,131,678 ops/sec
  • Entries, filter, map, join: 3,671,159 ops/sec
  • Array based: 3,151,103 ops/sec
  • classnames: 3,000,096 ops/sec
Firefox 26 runs
String based (return struct)
4.3M/s
String based (if-else struct)
4.1M/s
Entries, filter, map, join
3.5M/s
clsx
3.3M/s
Array based
2.3M/s
classnames
1.9M/s

Fastest: String based (return struct) (2.3x faster)

View exact numbers
  • String based (return struct): 4,280,106 ops/sec
  • String based (if-else struct): 4,073,326 ops/sec
  • Entries, filter, map, join: 3,521,328 ops/sec
  • clsx: 3,262,263 ops/sec
  • Array based: 2,250,690 ops/sec
  • classnames: 1,865,758 ops/sec
Other 13 runs
String based (return struct)
3.5M/s
clsx
3.4M/s
String based (if-else struct)
3.4M/s
Entries, filter, map, join
3.0M/s
Array based
2.7M/s
classnames
2.5M/s

Fastest: String based (return struct) (1.4x faster)

View exact numbers
  • String based (return struct): 3,471,511 ops/sec
  • clsx: 3,436,258 ops/sec
  • String based (if-else struct): 3,412,698 ops/sec
  • Entries, filter, map, join: 3,006,164 ops/sec
  • Array based: 2,672,436 ops/sec
  • classnames: 2,532,890 ops/sec
Mobile Results:
Chrome 14 runs
String based (if-else struct)
1.9M/s
String based (return struct)
1.9M/s
clsx
1.8M/s
Entries, filter, map, join
1.3M/s
Array based
1.1M/s
classnames
996K/s

Fastest: String based (if-else struct) (1.9x faster)

View exact numbers
  • String based (if-else struct): 1,878,985 ops/sec
  • String based (return struct): 1,856,678 ops/sec
  • clsx: 1,827,926 ops/sec
  • Entries, filter, map, join: 1,324,924 ops/sec
  • Array based: 1,108,808 ops/sec
  • classnames: 995,821 ops/sec
Safari 7 runs
clsx
3.9M/s
classnames
3.5M/s
String based (return struct)
3.3M/s
String based (if-else struct)
3.3M/s
Entries, filter, map, join
2.9M/s
Array based
2.5M/s

Fastest: clsx (1.6x faster)

View exact numbers
  • clsx: 3,926,152 ops/sec
  • classnames: 3,451,928 ops/sec
  • String based (return struct): 3,284,123 ops/sec
  • String based (if-else struct): 3,281,034 ops/sec
  • Entries, filter, map, join: 2,871,479 ops/sec
  • Array based: 2,469,090 ops/sec

Results show median performance across all community submissions. Run this benchmark yourself to verify on your device.

Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results
  • Test case name Result
    classnames
    clsx
    Array based
    String based (return struct)
    String based (if-else struct)
    Entries, filter, map, join

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 8 months ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
Chrome 142 on Mac OS X 10.15.7
View result in a separate tab
clsx
11.9M/s
String based (return struct)
10.8M/s
String based (if-else struct)
10.7M/s
Entries, filter, map, join
7.4M/s
Array based
5.7M/s
classnames
5.2M/s
View exact numbers
Test name Executions per second
clsx 11,903,754 Ops/sec
String based (return struct) 10,769,444 Ops/sec
String based (if-else struct) 10,744,460 Ops/sec
Entries, filter, map, join 7,381,368 Ops/sec
Array based 5,708,622 Ops/sec
classnames 5,156,558 Ops/sec