Benchmark
How Rune compares.
Real, in-process measurements against the popular React QR libraries - no synthetic or placeholder numbers. Reproduce them yourself with pnpm bench (source in /bench).
toSVGString is the apples-to-apples SVG-generation path, and it's the fastest here. The React adapter is on par with qrcode.react while rendering a fully-styled SVG element. Absolute numbers depend on the machine (measured on Node v24.13.0); the ranking is what matters.
Throughput
SVG renders / second - unique input, higher is better
Rune (toSVGString)
1,266
qrcode.react
864
Rune (React)
676
react-qr-code
457
SSR latency
ms per render - lower is better
| Library | median | p95 |
|---|---|---|
| Rune (toSVGString) | 1.3627 | 3.2285 |
| qrcode.react | 1.3649 | 2.7036 |
| Rune (React) | 1.647 | 3.4701 |
| react-qr-code | 1.8991 | 4.0807 |
Bundle size
minified + gzip, React external
| Rune (core) | 8.1 KB gzip | 19.3 KB min |
| qrcode.react | 6.5 KB gzip | 17.3 KB min |
| react-qr-code | 9.2 KB gzip | 24.4 KB min |
Feature comparison
| Feature | Rune | qrcode.react | qr-code-styling | react-qr-code |
|---|---|---|---|---|
| SVG output | ✓ | ✓ | ✓ | ✓ |
| PNG / JPEG / WebP export | PNG·JPEG·WebP | PNG | PNG | - |
| PDF export | ✓ | - | - | - |
| toSVGString - sync, no DOM | ✓ | - | - | - |
| SSR / Edge safe | ✓ | ✓ | - | ✓ |
| Zero dependencies (core) | ✓ | ✓ | - | - |
| Dot shape styles | 8 | - | ~6 | - |
| Finder/corner styles | 5 × 3 | - | 3 × 2 | - |
| Gradient fills | ✓ | - | ✓ | - |
| Frames + CTA text | ✓ | - | - | - |
| Background image | ✓ | - | ✓ | - |
| Logo - image | ✓ | ✓ | ✓ | - |
| Logo - framework node | ✓ | - | - | - |
| Data builders (WiFi/vCard/…) | ✓ | - | - | - |
| Frameworks | 4 | React | any | React |
| Error correction level | ✓ | ✓ | ✓ | ✓ |
| QR version control | ✓ | ✓ | ✓ | - |
| TypeScript built-in | ✓ | ✓ | ✓ | ✓ |
| ESM + CJS dual export | ✓ | ✓ | - | ✓ |
| Accessibility (aria/role) | ✓ | ✓ | - | ✓ |
Comparison compiled July 2026 from each library's public API. Corrections welcome via GitHub.