supported_groups
supported_groups lists the key exchange groups a client supports, such as X25519MLKEM768, x25519 and secp256r1.
What it is
supported_groups (extension 10) tells the server which key exchange groups the client can use: elliptic curves such as x25519 and secp256r1, finite-field Diffie-Hellman groups such as ffdhe2048, and post-quantum hybrids such as X25519MLKEM768. It was first defined as elliptic_curves in RFC 4492, now replaced by RFC 8422, and renamed when RFC 7919 added finite-field groups; RFC 8446 uses it for TLS 1.3.
The order is the client's preference. In TLS 1.3 the client also sends a key share for one or two of these groups in key_share, so its favorite group usually comes first and matches the share it sent.
Chrome-based clients put a GREASE value in this list too, as RFC 8701 describes, so servers keep tolerating group codes they do not know.
Servers pick the group from this list.
Who sends it
Measured on 2026-10-25 against our own test server: sent by 12 of 12 clients. Position counts from 1 and ignores GREASE values.
Why it matters for fingerprinting
Every measured client sends it. Its content goes into a dedicated JA3 field, so the groups and their order change the JA3 hash directly. See the supported groups hub for which client offers which group.
Check whether your client sends it
Open the test from your browser, or call it from your script, and look for supported_groups in the TLS details.
Run the TLS fingerprint testReferences
- RFC 8422: Elliptic Curve Cryptography (ECC) Cipher Suites for TLS Versions 1.2 and Earlier
- RFC 7919: Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for TLS
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
- IANA TLS parameters registry
- RFC 8701: Applying Generate Random Extensions And Sustain Extensibility (GREASE) to TLS Extensibility