Short answer: ML-KEM and ML-DSA keys, ciphertexts and signatures are measured in hundreds to thousands of bytes. For example, an ML-KEM-768 public key is 1,184 bytes and an ML-DSA-65 signature is 3,309 bytes. That is why post-quantum migration involves size and bandwidth planning, not just algorithm swaps. The figures below come from a 2026 arXiv paper and a third-party cheat sheet, and anyone implementing should check them against FIPS 203 and FIPS 204.
ML-KEM sizes
ML-KEM is a lattice-based key-encapsulation mechanism derived from CRYSTALS-Kyber, specified in FIPS 203. The arXiv paper says FIPS 203 defines three parameter sets, ML-KEM-512, ML-KEM-768 and ML-KEM-1024, offering roughly 128, 192 and 256 bits of classical security. It says public keys range from 800 to 1,568 bytes, ciphertexts from 768 to 1,568 bytes, and every variant produces a 32-byte shared secret. The cheat sheet breaks this down:
| Parameter set | Public key | Ciphertext |
|---|---|---|
| ML-KEM-512 | 800 bytes | 768 bytes |
| ML-KEM-768 | 1,184 bytes | 1,088 bytes |
| ML-KEM-1024 | 1,568 bytes | 1,568 bytes |
The cheat sheet labels ML-KEM-768 as its recommended default for most use cases and ML-KEM-512 as the smallest and fastest. That is the cheat sheet's opinion, not a statement from the standard.
ML-DSA sizes
ML-DSA is the lattice-based signature scheme specified in FIPS 204. The same cheat sheet lists:
| Parameter set | Public key | Signature |
|---|---|---|
| ML-DSA-44 | 1,312 bytes | 2,420 bytes |
| ML-DSA-65 | 1,952 bytes | 3,309 bytes |
| ML-DSA-87 | 2,592 bytes | 4,627 bytes |
Signatures are larger than public keys in every row. The cheat sheet also lists a hash-based signature, SLH-DSA-SHA2-128s, with a 32-byte public key and a 7,856-byte signature, which shows the trade-off between key size and signature size differs by scheme.
Why the sizes matter
Larger keys and signatures mean more bytes on the wire and more storage wherever they are carried, such as in handshakes or certificates. The arXiv paper is about running ML-KEM and ML-DSA on a very constrained microcontroller, an ARM Cortex-M0+ on the RP2040 board, which shows that size and speed on small devices are an active research topic. We have not verified its performance numbers and do not quote them.
What this does not tell you
Neither source used here gives RSA or ECDSA byte counts, so this article does not make a numeric comparison with them. It also describes no deployment. Check current sizes in FIPS 203 and FIPS 204 before relying on any figure.
FAQ
How big is an ML-KEM-768 public key?
1,184 bytes according to the third-party cheat sheet, with a 1,088-byte ciphertext.
What range do ML-KEM public keys and ciphertexts cover?
Public keys range from 800 to 1,568 bytes and ciphertexts from 768 to 1,568 bytes, according to the arXiv paper.
How big is an ML-DSA-65 signature?
3,309 bytes, with a 1,952-byte public key, according to the cheat sheet.
How large is the shared secret from ML-KEM?
32 bytes for all variants, according to the arXiv paper.
Where should I confirm exact sizes?
In the standards themselves, FIPS 203 for ML-KEM and FIPS 204 for ML-DSA.
All field notes