PAGES
← all tools
◆ Web Application Security

testssl.sh

v3.2.4 open-source

Testing TLS/SSL encryption anywhere on any port

Summary

testssl.sh is a free, open-source command-line tool, written in bash, that checks a server's TLS/SSL configuration on any port for supported protocols, cipher suites, and known cryptographic flaws. You run it directly against a target host from Linux, macOS, FreeBSD, NetBSD or WSLWSLWindows Subsystem for Linux, a Microsoft-built compatibility layer that lets a Linux environment run directly on Windows without a virtual machine, giving cyber tools access to Linux binaries, filesystems, and syscalls on a Windows host., with no installation beyond the script itself, and it prints a clear pass/fail-style readout rather than a raw dump of handshake data. That makes it a fit for application developers, sysadmins and security auditors who need to verify a server's TLS posture before or after deployment, rather than for teams scanning web application logic. First committed in 2014, it remains active, with 172 contributors, 281 commits in the past year, and a release only 71 days ago.

Testing TLS/SSL encryption anywhere on any port

How testssl.sh helps

Which protocols and cipher suites will a server still accept from an outdated client?

negotiates handshakes across every SSL and TLS version and cipher combination it knows and reports each one as offered or refused, so weak protocols left enabled for compatibility show up explicitly

Is a server exposed to any of the known TLS implementation flaws?

runs targeted checks for named vulnerabilities such as padding oracle and renegotiation issues and marks each one vulnerable or not, rather than leaving that judgment to a raw handshake trace

Is this certificate actually trustworthy and set up correctly?

checks the chain, expiry, hostname match and key strength presented in the handshake and flags mismatches or weak keys directly in the readout

Did a configuration change on this server just weaken its TLS posture?

run before and after a deployment and diff the pass/fail readouts to see which checks flipped

Which of several servers in my fleet have the worst TLS configuration?

produces the same pass/fail-style readout for each host so results can be compared side by side rather than re-reading raw handshake dumps

Can I get a pass/fail verdict without waiting for every possible check to run?

scales back to only the checks needed to produce an overall rating, trading completeness for a faster answer on the same target

all 15 features, with the evidence for each →

Languages

Not documented

Features

15 capabilities across 2 capability groups · 1 backed by code, an API document or a real run

Built from testssl.sh's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • testssl.sh covers 1 of the 8 vulnerability assessment methods capabilities we track.
  • testssl.sh covers 1 of the 2 vulnerability management capabilities we track.

What testssl.sh offers you

  • Command-line interface5
  • CSV data export1
  • JSON data export1
Web vulnerability scanning 2 features Vulnerability assessment methods since 2015
HTTP header and User-Agent customization shipped Supports custom headers for application-layer testing or WAF bypass, custom User-Agents, and HTTP Basic Auth for header checks. 2 releases · 2 other sources · first seen Sep 2015

Shared capability: Web vulnerability scanning

Also counts toward: Command-line interface

release

example

  • Pass custom headers for testing application-layer behavior or bypassing simple WAFs. ./testssl.sh --reqheader "Authorization: Bearer token123" <target> v3.2rc3 · Oct 2023 · source
  • Use a custom User-Agent for testing servers that block default scripts. ./testssl.sh --user-agent "Mozilla/5.0" <target> v3.2rc3 · Oct 2023 · source
HSTS and renegotiation testing shipped Enforces strict parsing for HSTS headers and performs SSL renegotiation checks with configurable attempt limits. 2 releases · first seen Oct 2023

Shared capability: Web vulnerability scanning

release

Vulnerability scanning 1 feature Vulnerability management since 2017
Known vulnerability scanning shipped Tests for specific historical and known TLS/SSL vulnerabilities such as Winshock. 6 releases · 1 other source · first seen May 2017

Shared capability: Vulnerability scanning

release

example

  • Run the ROBOT check against a target server ./testssl.sh -R <target> 3.0rc1 · Sep 2018 · source
Other / not yet classified 12 features Features we have not matched to a capability yet. A suggested match is marked.
TLS/SSL protocol and cipher testing shipped Tests TLS handshake parameters, supports custom ciphers, checks server preference handling, verifies support for specific TLS versions (1.2/1.3), EdDSA certificates, and certificate compression. 19 releases · 1 other source · first seen May 2017

release 19 total

  • Adds support for missing TLS signature schemes in detection logic v3.2.4 · Jul 2026 · source · release history
  • Adds OpenSSL 4 compatibility for standard scans v3.2.4 · Jul 2026 · source · release history
  • Adds support for missing TLS 1.3 Brainpool groups v3.2.4 · Jul 2026 · source · release history
  • SecP256r1MLKEM768, X25519MLKEM768, SecP384r1MLKEM1024, and X25519Kyber768Draft00 cipher suites are now tested v3.2rc4 · Jan 2025 · source · release history
  • Stapled OCSP responses using SHA-256 are now supported v3.2rc4 · Jan 2025 · source · release history
  • RFC 9150 cipher suites (TLS 1.3) are now supported v3.2rc4 · Jan 2025 · source · release history

docs

  • NAME NAME SYNOPSIS DESCRIPTION REQUIREMENTS GENERAL OPTIONS AND PARAMETERS EXAMPLES RFCs and other standards EXIT STATUS FILES AUTHORS COPYRIGHT LIMITATION BUGS SEE ALSO testssl(1) testssl(1) NAME testssl NAME testssl.sh -- check encryption of SSL/TLS servers SYNOPSIS testssl.sh [OPTIONS] <URI> testssl.sh [OPTIONS]… docs update · Oct 2026 · source
STARTTLS service testing shipped Scans non-TLS services for STARTTLS support and vulnerabilities, including SMTP, POP3, IMAP, NNTP, LMTP, MySQL, PostgreSQL, XMPP, and Active Directory services. 8 releases · first seen Sep 2017

release 8 total

Strict timeout and connectivity management shipped Provides fine-grained control over connection timeouts, socket timeouts, batch scanning hangs, and specific test timeouts like the ROBOT check. 4 releases · 2 other sources · first seen Sep 2017

Also counts toward: Command-line interface

release

  • New --connect-timeout flag to set socket connection timeouts v3.0 · Oct 2021 · source · release history
  • Adds --connect-timeout flag to set socket timeouts for connections. 3.0rc6 · Dec 2019 · source · release history
  • Switches initial server check to use raw sockets to minimize false warning "doesn't seem to be a TLS/SSL enabled server" 3.0rc4 · Feb 2019 · source · release history
  • Adds -t <seconds> option to supply timeout value for openssl connect v2.9.5-1 · Sep 2017 · source · release history

example

  • Run testssl.sh with a custom 30-second timeout for the ROBOT check. ROBOT_TIMEOUT=30 ./testssl.sh <target> v3.2.3 · Feb 2026 · source
  • Set a specific socket timeout for batch scanning to avoid hangs. ./testssl.sh --connect-timeout 10 <target> v3.0 · Oct 2021 · source
Export formats and data integration shipped Provides capabilities to export scan results in various structured formats including flat JSON, CSV, non-flat JSON with severity filtering, HTML, and nmap grepable format for automated processing or spreadsheet integration. 4 releases · 2 other sources · first seen May 2017

Also counts toward: CSV data export, JSON data export

release

  • Adds Non-flat JSON output support for findings export v2.9.5-1 · Sep 2017 · source · release history
  • Adds nmap grep(p)able (-oG) format support for mass testing file input v2.9.5-1 · Sep 2017 · source · release history
  • --jsonfile exports results in flat JSON format for automated processing v2.8 · May 2017 · source · release history
  • --csvfile exports results in CSV format for spreadsheet integration v2.8 · May 2017 · source · release history

example

  • Export findings with severity filtering in non-flat JSON format testssl.sh -e --severity HIGH --format json-nonflat example.com v2.9.5-1 · Sep 2017 · source
  • Output results directly as HTML without external converter testssl.sh -f html example.com > report.html v2.9.5-1 · Sep 2017 · source
TLS/SSL rating verified Rates a target's TLS/SSL configuration and supports a minimal scan mode that performs only the checks required to produce a rating. 2 releases · 1 other source · first seen Sep 2015

Also counts toward: Command-line interface

release

  • Enables testing multiple IP addresses in one shot with --ip=<address|"one">. v2.6 · Sep 2015 · source · release history
  • Adds Extended validation certificate detection. v2.6 · Sep 2015 · source · release history

command line

  • --rating-only — makes testssl.sh do the bare minimum to allow rating to succeed. See RATING for more v3.3dev-snapshot-2602 · Feb 2026 · command-line history
CA store and root certificate updates shipped Maintains an up-to-date Linux CA store bundle and supports new root certificates like Sectigo R46. 2 releases · first seen May 2017

release

  • Updates the Linux CA store bundle and adds support for the Sectigo R46 root certificate. v3.2.3 · Feb 2026 · source · release history
  • Adds trust chain validation against Apple, Linux, Microsoft, and Mozilla certificate stores v2.8 · May 2017 · source · release history
Android 15 TLS compatibility testing shipped Simulates TLS handshakes specific to Android 15 devices to test server compatibility with its strict TLS requirements. 1 release · 1 other source · first seen Jun 2025

Also counts toward: Command-line interface

release

  • Add --android15 flag to simulate TLS handshakes for Android 15 devices v3.2.1 · Jun 2025 · source · release history

example

  • Test a server's compatibility with Android 15 TLS requirements by simulating its specific handshake. testssl.sh --android15 example.com v3.2.1 · Jun 2025 · source
Client simulation testing shipped Simulates TLS handshakes using configurable client profiles to test server compatibility with various devices, browsers, and operating systems. 2 releases · first seen Sep 2022

release

  • >4 simulations removed from the default run. v3.0.8 · Sep 2022 · source · release history
  • Major update of client simulation with 9 new simulations and >4 removed in default run. v3.0.8 · Sep 2022 · source · release history
Client certificate authentication support shipped suggested Allows the tool to use client certificates for mutual TLS authentication during scans. 2 releases · first seen May 2017

Suggested capability: Credentialed vulnerability scanning. This is our guess, not confirmed.

release

  • Adds initial client certificate support v3.0 · Oct 2021 · source · release history
  • Supports x509 client certificate authentication for servers requiring mutual TLS v2.8 · May 2017 · source · release history
Detailed cipher inspection (wide mode) shipped Provides detailed output for negotiated ciphers including hexcodes, key exchange methods, strength, and DH/ECDH bit counts. 1 release · first seen Sep 2015

release

  • Adds wide mode option for checks like RC4, BEAST, PFS to display hexcode, kx, strength, DH bits, RFC name. v2.6 · Sep 2015 · source · release history
Mass testing from file shipped Reads test commands or targets from a file to perform batch scanning operations. 1 release · first seen Sep 2015

Also counts toward: Command-line interface

release

  • Adds --file option to read test commands from a mass testing file. v2.6 · Sep 2015 · source · release history
Proxy support for scanning shipped Allows the tool to route connections through an HTTP proxy via openssl and sockets. 1 release · first seen Sep 2015

release

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for testssl.sh, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail testssl.sh puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

16 entries

  1. October 20261
  2. July 20261
  3. February 20261
  4. June 20251
  5. January 20251
  6. October 20231
  7. September 20221
  8. October 20211
  9. December 20191
  10. February 20191
  11. November 20181
  12. October 20181
  13. September 20181
  14. September 20171
  15. May 20171
  16. September 20151
    Show

    16 entries

    Project health

    Issue, contributor and maintainer activity in drwetter/testssl.sh, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 14 −8 vs prior 12 months
    2. Maintainers 1 +0 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed not measured of issues opened, last 12 months
    5. Median time to close not measured issues closed, last 12 months
    6. Open backlog not measured open issues today
    1. Issues opened / month not measured
    2. Open backlog not measured
    3. Contributors / month 2
    4. Commits / month 22
    5. Stars 9,202
    Issue themes, last 12 months not measured

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →