TLS Versions
The complete lineage of SSL and TLS protocol versions — SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3 — with the year each was introduced, its defining RFC, and whether it has been formally deprecated. TLS 1.0 and 1.1 were deprecated by RFC 8996 in 2021; SSL 2.0 and 3.0 were deprecated earlier by RFCs 6176 and 7568 respectively.
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/tls-versions.json
Or use as a typed import:
import { tlsVersions } from "https://staticdata.dev/v1/tls-versions.ts"
Formats
- JSON 731 B
/v1/tls-versions.json
min: 513 B · /v1/tls-versions.min.json
- CSV 244 B
/v1/tls-versions.csv
- TypeScript 931 B
/v1/tls-versions.ts
export const tlsVersions
type TlsVersion = (typeof tlsVersions)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| version | string | Protocol version identifier | TLS 1.3 |
| name | string | Human-readable protocol name | TLS 1.3 |
| year | number | Year the version was published or released | 2018 |
| rfc | string | null | Defining RFC identifier, or null if not formally specified | RFC 8446 |
| deprecated | boolean | Whether the version has been formally deprecated | false |
Preview
First 6 records.
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/tls-versions.json | jq '.[0]' import type { TlsVersion } from "https://staticdata.dev/v1/tls-versions.ts";
const res = await fetch("https://staticdata.dev/v1/tls-versions.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const tlsVersions: TlsVersion[] = await res.json();
console.log(tlsVersions[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/tls-versions.min.json") as r:
tlsVersions = json.load(r)
print(tlsVersions[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/tls-versions.min.json")
if err != nil { panic(err) }
defer resp.Body.Close()
var data []map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
panic(err)
}
fmt.Println(data[0])
} use serde_json::Value;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let body = ureq::get("https://staticdata.dev/v1/tls-versions.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
SSL (Secure Sockets Layer) was developed by Netscape in the mid-1990s. SSL 2.0 (1995) was the first publicly released version but contained serious cryptographic weaknesses and was deprecated by RFC 6176 (2011). SSL 3.0 (1996) — documented retroactively in RFC 6101 — was a significant redesign but was rendered insecure by the POODLE attack and deprecated by RFC 7568 (2015). The IETF took over protocol development with TLS 1.0 (RFC 2246, 1999), which was largely based on SSL 3.0 with minor changes.
TLS 1.1 (RFC 4346, 2006) added protections against CBC padding attacks. TLS 1.2 (RFC 5246, 2008) introduced per-record pseudorandom function (PRF) algorithm agility, SHA-256 as the default hash, and removed reliance on MD5/SHA-1 combinations. TLS 1.3 (RFC 8446, 2018) was a major overhaul: it removed weak cipher suites and legacy features, reduced the handshake to one round-trip (with optional 0-RTT resumption), and mandated forward secrecy. RFC 8996 (2021) formally deprecated TLS 1.0 and TLS 1.1.
Data is curated from IETF RFCs and the official deprecation documents. The rfc field holds the original defining RFC; TLS 1.3 has since been republished as RFC 9846 (July 2026), which obsoletes RFC 8446 and also RFC 5246. TLS 1.2 is not deprecated as of October 2026. The rfc field for SSL 2.0 is null because it was a proprietary Netscape specification never published as an RFC; all other versions have a canonical RFC document.
Versioning
URLs under /v1/ are stable: field names and types will not change in a way
that breaks consumers. Values can be corrected or records added when the upstream source
changes; schema-incompatible updates ship under a new version path. See the
tls-versions changelog for this dataset's history.
Related datasets
More Web datasets
- aria-attributes
- aria-roles
- character-encodings
- csp-directives
- credit-card-types
- dns-record-types
- dom-events
- emoji
- emoji-shortcodes
- html-elements
- html-entities
- html-attributes
- input-types
- http-auth-schemes
- http-cache-directives
- http-content-codings
- http-headers
- http-methods
- http-status-codes
- iframe-sandbox-tokens
- ip-protocol-numbers
- keyboard-event-codes
- link-relations
- media-type-suffixes
- mime-types
- oauth-grant-types
- ports
- referrer-policies
- ip-special-blocks
- svg-elements
- tcp-flags
- tlds
- tls-cipher-suites
- uri-schemes
- well-known-uris