Post-quantum sizes: the cheat sheet
Exact sizes for every NIST post-quantum signature and KEM, next to the classical algorithms they replace, plus the encoded lengths you actually have to store and send.
ML-DSAFIPS 204 signatures, encodings, column sizes
ML-DSA JWTsToken, cookie and header limits
SLH-DSAFIPS 205 / SPHINCS+, all 6 sizes
ML-KEMFIPS 203 and X25519MLKEM768
Signatures
| Algorithm | Standard | Public key | Signature | Base64 signature | vs. Ed25519 | Column for Base64 sig |
|---|---|---|---|---|---|---|
| Ed25519 | classical | 32 | 64 | 88 | 1.0× | VARCHAR(128) |
| ECDSA P-256 | classical | 64 | 64 | 88 | 1.0× | VARCHAR(128) |
| RSA-2048 | classical | 256 | 256 | 344 | 4.0× | VARCHAR(512) |
| FN-DSA-512 | FIPS 206 (draft) | 897 | 666 | 888 | 10× | VARCHAR(2048) |
| ML-DSA-44 | FIPS 204 | 1,312 | 2,420 | 3,228 | 38× | VARCHAR(4096) |
| ML-DSA-65 | FIPS 204 | 1,952 | 3,309 | 4,412 | 52× | VARCHAR(8192) |
| ML-DSA-87 | FIPS 204 | 2,592 | 4,627 | 6,172 | 72× | VARCHAR(8192) |
| SLH-DSA-128s | FIPS 205 | 32 | 7,856 | 10,476 | 123× | VARCHAR(16384) |
| SLH-DSA-128f | FIPS 205 | 32 | 17,088 | 22,784 | 267× | VARCHAR(32768) |
| SLH-DSA-192s | FIPS 205 | 48 | 16,224 | 21,632 | 254× | VARCHAR(32768) |
| SLH-DSA-192f | FIPS 205 | 48 | 35,664 | 47,552 | 557× | VARCHAR(65536) |
| SLH-DSA-256s | FIPS 205 | 64 | 29,792 | 39,724 | 466× | VARCHAR(65536) |
| SLH-DSA-256f | FIPS 205 | 64 | 49,856 | 66,476 | 779× | VARCHAR(131072) |
Bytes. FN-DSA (Falcon) signatures are variable-length; 666 B is the padded FN-DSA-512 size. FIPS 206 is still a draft. Column sizes: Base64 length +25%, next power of two.
Key encapsulation (KEMs)
| Algorithm | Public key | Ciphertext | Shared secret |
|---|---|---|---|
| X25519 | 32 | 32 | 32 |
| ML-KEM-512 | 800 | 768 | 32 |
| ML-KEM-768 | 1,184 | 1,088 | 32 |
| ML-KEM-1024 | 1,568 | 1,568 | 32 |
| X25519MLKEM768 (TLS hybrid) | 1,216 | 1,120 | 64 → KDF |
Certificate chains in TLS 1.3
| Algorithm | One certificate | 1-cert chain | 2-cert chain | 3-cert chain | vs. 16 KiB buffer |
|---|---|---|---|---|---|
| ECDSA P-256 | 378 | 391 | 774 | 1,157 | fits |
| FN-DSA-512 | 1,817 | 1,830 | 3,652 | 5,474 | fits |
| ML-DSA-44 | 3,986 | 3,999 | 7,990 | 11,981 | fits |
| ML-DSA-65 | 5,515 | 5,528 | 11,048 | 16,568 | +184 |
| ML-DSA-87 | 7,473 | 7,486 | 14,964 | 22,442 | +6,058 |
| SLH-DSA-128s | 8,140 | 8,153 | 16,298 | 24,443 | +8,059 |
TLS 1.3 Certificate message bytes, minimal 244 B X.509 metadata per certificate. How these are calculated →
Find every limit these sizes break in your stack
Paste a migration, an nginx.conf or an mbedTLS header into the checker, or ask us for a free scan of the whole repository.