Key Encapsulation Mechanisms

A standalone comparison of public-key and ciphertext sizes for KEMs — not tied to any NIST competition round. Click column headers to sort; use the filters to narrow down.

Sizes reflect the latest known specifications (ML-KEM: FIPS 203; HQC: 2025-08-22 draft). For ECDH the “ciphertext” is the ephemeral public key and keygen/encaps/decaps map to the static/ephemeral key generation and the two ECDH derivations. See the signatures comparison for the NIST on-ramp signature schemes.

Filters ▼

pk size vs. ciphertext size (log–log scale)

Shape = family · tap point for details

Scroll to zoom · drag to pan

Performance note: Keygen / encapsulation / decapsulation timings are from our own benchmarks on a Intel(R) Xeon(R) Platinum 8488C (ML-KEM and HQC use AVX2; ECDH uses OpenSSL) — see the environment details below.
Assumption
ECDH Pre-QuantumClassicX25519N/A32326435.8 µs67.9 µs34.6 µsElliptic Curves
ECDH Pre-QuantumClassicX448N/A5656112146.4 µs328.8 µs183.6 µsElliptic Curves
ECDH Pre-QuantumClassicP-256N/A656513017.1 µs79.6 µs65.5 µsElliptic Curves
MIKE IsogeniesResearch proposalfast-I18080160588.8 µs4.76 ms4.17 msModule isogeny action
MIKE IsogeniesResearch proposalrigorous-I196961921.31 ms10.73 ms9.44 msModule isogeny action
ECDH Pre-QuantumClassicP-384N/A9797194136.3 µs472.4 µs326.4 µsElliptic Curves
MIKE IsogeniesResearch proposalfast-III31221222441.93 ms15.42 ms13.51 msModule isogeny action
MIKE IsogeniesResearch proposalrigorous-III31441442884.19 ms32.71 ms28.54 msModule isogeny action
MIKE IsogeniesResearch proposalfast-V51601603204.04 ms30.91 ms26.87 msModule isogeny action
MIKE IsogeniesResearch proposalrigorous-V51921923849.33 ms71.07 ms61.77 msModule isogeny action
BAT LatticesAcademic257-51215214739945.17 ms5.1 µs22.4 µsNTRU
SMAUG-T LatticesKpqC standardSMAUG-T12816726721,3449.1 µs7.7 µs10.5 µsMLWE / MLWR
NTRU LatticesR3 finalistntruhps204850916996991,39842.2 µs12.7 µs10.3 µsNTRU
SABER LatticesR3 finalistLightSaber16727361,40816.2 µs15.7 µs13.7 µsModule Learning With Rounding (MLWR)
ML-KEM LatticesFIPS51218007681,5687.7 µs8.6 µs10.1 µsMLWE
NTRU LatticesR3 finalistntruhps204867739309301,86065.4 µs16.4 µs13.8 µsNTRU
NTRU Prime LatticesR3 alternatesntrup65329948971,891175.4 µs15.6 µs16.1 µsNTRU
SABER LatticesR3 finalistSaber39921,0882,08022.3 µs22.8 µs20.9 µsModule Learning With Rounding (MLWR)
SMAUG-T LatticesKpqC standardSMAUG-T19231,0889922,08013.1 µs12.6 µs16.8 µsMLWE / MLWR
NTRU Prime LatticesR3 alternatesntrup76121,1581,0392,197233.9 µs17.7 µs17.2 µsNTRU
BAT LatticesAcademic769-102451,2301,0062,23628.63 ms8.8 µs44.8 µsNTRU
ML-KEM LatticesFIPS76831,1841,0882,27211.5 µs12.4 µs14.6 µsMLWE
NTRU LatticesR3 finalistntruhrss70111,1381,1382,27659.4 µs10.3 µs14.4 µsNTRU
NTRU+ LatticesKpqC standardNTRU+76811,1521,1522,3048.3 µs10.2 µs7.0 µsNTRU
NTRU LatticesR3 finalistntruhps409682151,2301,2302,46090.0 µs18.8 µs17.7 µsNTRU
NTRU Prime LatticesR3 alternatesntrup85731,3221,1842,506301.7 µs21.0 µs23.0 µsNTRU
NTRU+ LatticesKpqC standardNTRU+86431,2961,2962,5928.9 µs11.5 µs8.2 µsNTRU
SABER LatticesR3 finalistFireSaber51,3121,4722,78430.2 µs31.4 µs30.0 µsModule Learning With Rounding (MLWR)
SMAUG-T LatticesKpqC standardSMAUG-T25651,4401,3762,81616.1 µs15.8 µs21.3 µsMLWE / MLWR
NTRU Prime LatticesR3 alternatesntrup95341,5051,3492,854399.6 µs25.4 µs26.8 µsNTRU
NTRU Prime LatticesR3 alternatesntrup101341,6231,4553,078475.9 µs27.2 µs27.3 µsNTRU
ML-KEM LatticesFIPS102451,5681,5683,13616.4 µs17.6 µs20.8 µsMLWE
NTRU+ LatticesKpqC standardNTRU+115251,7281,7283,45613.0 µs14.8 µs10.1 µsNTRU
NTRU Prime LatticesR3 alternatesntrup127752,0671,8473,914695.7 µs34.3 µs37.0 µsNTRU
HQC Code-basedStd pending12812,2414,4336,67421.3 µs40.6 µs90.7 µsQuasi-Cyclic Syndrome Decoding
HQC Code-basedStd pending19234,5148,97813,49252.2 µs102.2 µs206.3 µsQuasi-Cyclic Syndrome Decoding
FrodoKEM LatticesISO640-AES19,6169,75219,368263.0 µs313.5 µs312.1 µsLWE
FrodoKEM LatticesISO640-SHAKE19,6169,75219,368673.6 µs720.0 µs718.6 µsLWE
HQC Code-basedStd pending25657,23714,42121,658103.5 µs209.6 µs406.8 µsQuasi-Cyclic Syndrome Decoding
FrodoKEM LatticesISO976-AES315,63215,79231,424532.0 µs588.2 µs574.2 µsLWE
FrodoKEM LatticesISO976-SHAKE315,63215,79231,4241.40 ms1.45 ms1.44 msLWE
FrodoKEM LatticesISO1344-AES521,52021,69643,216949.2 µs1.02 ms1.02 msLWE
FrodoKEM LatticesISO1344-SHAKE521,52021,69643,2162.39 ms2.48 ms2.45 msLWE
Classic McEliece Code-basedISOmceliece3488641261,12096261,21612.45 ms11.0 µs37.2 µsSyndrome Decoding (binary Goppa)
Classic McEliece Code-basedISOmceliece4608963524,160156524,31650.50 ms28.5 µs82.8 µsSyndrome Decoding (binary Goppa)
Classic McEliece Code-basedISOmceliece668812851,044,9922081,045,200102.49 ms87.4 µs115.2 µsSyndrome Decoding (binary Goppa)
Classic McEliece Code-basedISOmceliece696011951,047,3191941,047,51389.56 ms104.4 µs110.6 µsSyndrome Decoding (binary Goppa)
Classic McEliece Code-basedISOmceliece819212851,357,8242081,358,03299.47 ms147.9 µs122.7 µsSyndrome Decoding (binary Goppa)
48 parameter sets
Legend: 💣 pre-quantum (classical security only) · 🧨 broken · ⚠️ security warning · ℹ️ note · value estimated from cycle counts · tap icons for details

Benchmark environment

Date 6 October 2026
CPU Intel(R) Xeon(R) Platinum 8488C — 16 cores, 2 threads/core,  MHz max, governor: unknown, turbo: unknown
OS Ubuntu 26.04.1 LTS (kernel 7.0.0-1014-aws)
Compiler cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0
OpenSSL OpenSSL 3.5.5 27 Jan 2026 (Library: OpenSSL 3.5.5 27 Jan 2026)
Method KEM keygen/encapsulation/decapsulation. Median over 1000 iterations (fewer for slow schemes). Cycle counter: rdpmc CPU_CYCLES (real core cycles, user-space). Wall clock: clock_gettime(CLOCK_MONOTONIC). Benchmark thread pinned to one core.
Implementation sources ▸

Benchmark data licensed under CC-BY-4.0 — Thom Wiggers / PQShield

Built by Thom Wiggers / PQShield. Data licensed under CC BY-SA 4.0. Most recent scheme data is dated 2026-09-08.

GitHub · eBACS: more comprehensive benchmarks on more platforms