TLS_CHACHA20_POLY1305_SHA256
A TLS 1.3 cipher suite built on ChaCha20-Poly1305, fast on devices without AES hardware. Every measured client offers it.
What it is
TLS_CHACHA20_POLY1305_SHA256 (code 0x1303) is the third common TLS 1.3 cipher suite in RFC 8446. Instead of AES it uses the ChaCha20 stream cipher with the Poly1305 authenticator, the AEAD construction described in RFC 8439. SHA-256 is the hash for key derivation.
ChaCha20-Poly1305 was designed to be fast and constant-time in plain software. On phones and small devices without AES instructions it is often faster than AES-GCM and less exposed to timing side channels. On CPUs with AES hardware, AES-GCM is usually faster.
Like every TLS 1.3 suite, it does not describe the key exchange or the certificate type, which are negotiated through extensions. It is widely supported by browsers, OpenSSL, BoringSSL and Go, and is considered secure. RFC 8446 lists it as a suite implementations SHOULD support.
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 TLS 1.3 client offers this suite, so its presence says little on its own. What separates clients is the order: Chrome, curl_cffi and curl-impersonate chrome116 put the three TLS 1.3 suites first in the order AES-128, AES-256, ChaCha20, the Firefox profile of curl-impersonate puts ChaCha20 second, and OpenSSL-based libraries such as Python requests, httpx, Node.js fetch and Guzzle lead with AES-256. Go net/http lists its TLS 1.2 suites first and the TLS 1.3 ones at the end. JA3 keeps that order, while JA4 sorts the suites before hashing, so the order shows up in JA3 but not in the JA4 cipher hash.
macOS curl, which uses a different TLS library, puts ChaCha20 at position 1, ahead of both AES suites. That alone separates it from curl on Linux.
Check whether your client sends it
Open the test from your browser, or call it from your script, and look for TLS_CHACHA20_POLY1305_SHA256 in the TLS details.
Run the TLS fingerprint test