Upload a file
  1. base64hub
  2. Keys & hashes
  3. SSH key fingerprint

SSH Key Fingerprint (SHA256 and MD5)

Paste an ssh-ed25519 AAAA… line, a whole authorized_keys file or a host certificate to get the same fingerprint line ssh-keygen -l prints, for every key at once.

Free no sign-up, no limits Local nothing uploaded Exact same output as ssh-keygen -l and -E md5 Updated Oct 27, 2026

Paste public keys, an authorized_keys or known_hosts file, a certificate, or a PEM public key.

Processed in your browser. This page cannot send your data anywhere – how we know

How to get an SSH key fingerprint

  1. Paste one or more public key lines into SSH keys, or drop a .pub, authorized_keys or known_hosts file.
  2. Each key gets a card with type, size or curve, comment, SHA256 and MD5 fingerprints and the exact ssh-keygen -l line.
  3. Choose what the Output pane holds: SHA256 fingerprints, MD5 fingerprints, a PEM public key (SPKI or PKCS#1), RFC 4716, or normalized OpenSSH lines.
  4. Copy output or Download the result. Copy fingerprint on a card copies just that one value.

Accepted input goes beyond plain .pub lines: authorized_keys options such as from="10.0.0.0/8",command="…", known_hosts lines with host names or hashed |1|… entries, RFC 4716 ---- BEGIN SSH2 PUBLIC KEY ---- blocks, OpenSSH certificates, PEM public keys, and -----BEGIN OPENSSH PRIVATE KEY----- files.

How the fingerprint is calculated

An OpenSSH public key line has three parts: the type, the Base64 key blob and a comment.

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4ZlfvPsoxxd6tpkc1MDAJvZf8exJSDeW7a3xQRKA7d alice@laptop

The fingerprint is a hash of the decoded blob, 51 bytes for Ed25519:

FormatValue for the key above
SHA256 (OpenSSH 6.8+ default)SHA256:XSOBs9uz/dFf9ci88yKGbLMcjtzblRna8F0VOmxZiv8
MD5 (legacy)MD5:93:07:89:27:05:e1:7a:5d:92:6e:ab:13:1e:48:90:d5

SHA256 fingerprints are written in Base64 with the trailing = removed, which is why they are always 43 characters after the prefix. The same calculation in Python:

import base64, hashlib, sys

line = open(sys.argv[1]).read().split()
blob = base64.b64decode(line[1])
digest = hashlib.sha256(blob).digest()
print("SHA256:" + base64.b64encode(digest).decode().rstrip("="))

See padding explained for why the = can be dropped, and Base64 in Python for more.

Checking a host key before you trust it

The first time you connect, OpenSSH asks: ED25519 key fingerprint is SHA256:…. Are you sure you want to continue connecting? The right answer depends on comparing that value with one obtained another way:

  • on the server console: ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
  • from your provider’s published host key fingerprints
  • from a colleague who already has the host in known_hosts: paste that file here and every entry is listed with its fingerprint

To see what a server offers without logging in, ssh-keyscan host.example.com | ssh-keygen -lf - prints all its host key fingerprints.

Recognizing key types by their Base64

The blob begins with the key type as a length-prefixed string, so each type has a fixed Base64 opening:

Begins withKey type
AAAAC3NzaC1lZDI1NTE5ssh-ed25519
AAAAB3NzaC1yc2Essh-rsa
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTecdsa-sha2-nistp256
AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tsk-ssh-ed25519@openssh.com (FIDO security key)
AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxEd25519 certificate

If the type word on the line and the blob disagree, the card warns about the mismatch. That usually means a line was edited by hand.

Warnings and limits

  • RSA under 2048 bits is flagged as weak, and DSA keys are flagged because modern OpenSSH disables them.
  • Certificates (*-cert-v01@openssh.com) show key ID, serial, user or host type, principals, validity, critical options, extensions and the fingerprint of the signing CA key.
  • FIDO keys (sk-…) and Ed448 decode, but have no PEM conversion.
  • The comment stored inside a private key file is not shown.
  • SHA256 uses the browser’s WebCrypto API, which needs an https page. MD5 is computed by the page itself.

FAQ

How do I find the fingerprint of my SSH key?

Paste the contents of your .pub file above, or run ssh-keygen -lf ~/.ssh/id_ed25519.pub. Both print a line like 256 SHA256:XSOBs9uz… alice@laptop (ED25519).

Why does my fingerprint look different on another server or service?

Usually it is the hash: older tools and some web consoles show MD5 in colon-separated hex (MD5:93:07:89:…), modern OpenSSH shows SHA256 in Base64. Switch Output to MD5 fingerprints to compare against the old form.

Is it safe to paste my private key file here?

The tool reads only the public section of an OPENSSH PRIVATE KEY file, which is stored unencrypted even in password-protected keys, and does not touch the private part. Pasting the .pub file is still the better habit.

What does the SHA256 fingerprint actually hash?

The binary key blob, that is the Base64 part of the .pub line after decoding. The comment and the key type text in front are not included, so renaming a key does not change its fingerprint.