Updated Jul 15, 2026

Recon

Collect TLS certificates, SANs, and fingerprints

TLS grabber for certificates, SANs, and JARM or JA3 fingerprints.

Agent

overview

What tlsx does

Feed -host or -list after httpx or dnsx surfaces live names. Set -port when TLS is not on 443. Certificate and fingerprint data write to FILE and FOLDER for downstream filtering.

Operators reach for it when live hosts need cert fields, negotiated versions, ciphers, or JARM and JA3 hashes. Enable -san or -cn to mine names; -json keeps each probe as a filterable record.

It is a grabber, not a deep protocol auditor. Pair with httpx for HTTP context, or use sslscan when you need richer per-host cipher and protocol analysis.

source github.com/projectdiscovery/tlsx

use cases

Where tlsx fits

Mine certificate SANs for new hosts

Enable -san on a live host list so Subject Alternative Names expand the attack surface inventory.

Fingerprint TLS stacks with JARM

Add -jarm to group hosts by TLS implementation and spot outliers that share the same stack.

Bulk grab certs across a port list

Point -list and -port at many hosts so certificate and version data land in one JSONL stream.

Find expired or self-signed certificates

Use -expired or -self-signed filters to highlight hosts with weak or neglected TLS posture.

reference

tlsx inputs and flags

53 inputs
NameTypeFlagDescription
hostSTRING-hostTarget host or hosts to scan, comma-separated.
listFILE-listFile of targets to scan.
portSTRING-portTarget port to connect (default 443).
subject-alternative-namesBOOLEAN-sanDisplay subject alternative names from certificates.
jarmBOOLEAN-jarmDisplay JARM fingerprint hash.
jsonBOOLEAN-jsonWrite output in JSON format.
silentBOOLEAN-silentDisplay silent output.
concurrencySTRING-concurrencyNumber of concurrent threads (default 300).

Showing key inputs. tlsx exposes 53 inputs in total.

Full flag reference (53 inputs)
NameTypeFlagDescription
dnsBOOLEAN-dnsdisplay unique hostname from SSL certificate response
ja3BOOLEAN-ja3display ja3 fingerprint hash (using ztls)
sniSTRING-snitls sni hostname to use
hashBOOLEAN-hashdisplay certificate fingerprint hashes (md5,sha1,sha256)
hostSTRING-hosttarget host(s) to scan (comma-separated)
jarmBOOLEAN-jarmdisplay jarm fingerprint hash
jsonBOOLEAN-jsonjson format output
listFILE-listtarget list to scan
portSTRING-porttarget port to connect (default 443)
delaySTRING-delayduration to wait between each connection per thread (eg: 200ms, 1s)
retrySTRING-retrynumber of retries to perform for failures (default 3)
cacertFILE-cacertclient certificate authority file
cipherBOOLEAN-cipherdisplay used cipher
configFILE-configtlsx configuration file
serialBOOLEAN-serialdisplay certificate serial number
silentBOOLEAN-silentdisplay silent output
expiredBOOLEAN-expireddisplay validity status of certificate
revokedBOOLEAN-revokeddisplay host with revoked certificate
timeoutSTRING-timeouttls connection timeout in seconds (default 5)
verboseBOOLEAN-verbosedisplay verbose output
hardfailBOOLEAN-hardfailstrategy to use if encountered errors while checking revocation status
resolversFILE-resolverslist of resolvers to use
resp-onlyBOOLEAN-resp-onlydisplay tls response only
scan-modeSTRING-scan-modetls connection mode to use (ctls, ztls, openssl, auto) (default "auto")
tls-chainBOOLEAN-tls-chaindisplay tls chain in json output
untrustedBOOLEAN-untrusteddisplay host with untrusted certificate
ip-versionSTRING-ip-versionip version to use (4, 6) (default 4)
mismatchedBOOLEAN-mismatcheddisplay host with mismatched certificate
random-sniBOOLEAN-random-sniuse random sni when empty
all-ciphersBOOLEAN-all-cipherssend all ciphers as accepted inputs (default true)
certificateBOOLEAN-certificateinclude certificates in json output (PEM format)
cipher-enumBOOLEAN-cipher-enumenumerate and display supported cipher
cipher-typeSTRING-cipher-typeciphers types to enumerate. possible values: all/secure/insecure/weak (comma-separated) (default all)
concurrencySTRING-concurrencynumber of concurrent threads to process (default 300)
max-versionSTRING-max-versionmaximum tls version to accept (ssl30,tls10,tls11,tls12,tls13)
min-versionSTRING-min-versionminimum tls version to accept (ssl30,tls10,tls11,tls12,tls13)
self-signedBOOLEAN-self-signeddisplay status of self-signed certificate
tls-versionBOOLEAN-tls-versiondisplay used tls version
verify-certBOOLEAN-verify-certenable verification of server certificate
cipher-inputSTRING-cipher-inputciphers to use with tls connection
client-helloBOOLEAN-client-helloinclude client hello in json output (ztls mode only)
common-namesBOOLEAN-cndisplay subject common names
health-checkBOOLEAN-health-checkrun diagnostic check up
probe-statusBOOLEAN-probe-statusdisplay tls probe status
scan-all-ipsBOOLEAN-scan-all-ipsscan all ips for a host (default false)
server-helloBOOLEAN-server-helloinclude server hello in json output (ztls mode only)
version-enumBOOLEAN-version-enumenumerate and display supported tls versions
pre-handshakeBOOLEAN-pre-handshakeenable pre-handshake tls connection (early termination) using ztls
wildcard-certBOOLEAN-wildcard-certdisplay host with wildcard ssl certificate
openssl-binaryFILE-openssl-binaryOpenSSL Binary Path
cipher-concurrencySTRING-cipher-concurrencycipher enum concurrency for each target (default 10)
subject-alternative-namesBOOLEAN-sandisplay subject alternative names
subject-organization-nameBOOLEAN-sodisplay subject organization name

example

Run tlsx

tlsx · command
# grab SANs and JARM from a host list as JSONLtlsx -list hosts.txt -san -jarm -json -silent -port 443
sample output
example.com:443 [tls13] [CN=example.com] [SAN=example.com,www.example.com]api.example.com:443 [tls13] [CN=api.example.com]www.example.com:443 [tls12] [CN=www.example.com] [SAN=www.example.com,example.com]mail.example.com:443 [tls13] [CN=mail.example.com]staging.example.com:443 [tls12] [CN=*.example.com] [SAN=*.example.com,example.com]198.51.100.10:443 [tls13] [CN=example.com]203.0.113.25:443 [tls12] [CN=api.example.com]

guidance

Choosing tlsx

Use tlsx when you need TLS and certificate data across a host list, including SAN mining or JARM clustering. For deep protocol-level audits, run sslscan or testssl alongside it.

sslscan

Deep per-host SSL/TLS protocol and cipher audit. Richer than tlsx, less suited to wide scopes.

httpx

General HTTP prober that also reports some TLS data. tlsx goes deeper on certificates and fingerprints.

subfinder

Passive subdomain discovery. tlsx complements it by extracting more names from certificate SANs.

faq

tlsx questions

Set -host example.com (add -silent for quiet lines). Add -json for structured records.

Run tlsx yourself

A host list feeds tlsx, which grabs certificate and TLS data from each one and writes the results, including SANs, as a queryable output.

Facts on this page come from the live Trickest tool library.