howsmyssl is the web app behind https://howsmyssl.com.
This is a Go project.
The HTML code goes in templates/. Templates are generated with Go's
html/template package. Determining the client's security is done in
client_info.go.
go build will generate a static binary called howsmyssl. This repo is go get'able, of course.
It has a fork of Go 1.26.6's crypto/tls library at ./tls1266/ in order to expose the client's ClientHello details (offered cipher suites, compression methods, supported versions, curves, and signature algorithms) on the ConnectionState struct.
It's been useful to me to use justrun to recompile the project while modifying the template. Typical use is simply:
justrun -c "go build && ./howsmyssl" -i howsmyssl . templates/
(Justrun has the benefit of controlling the lifecycle of a process, unlike most other file watch utilities.)