---
title: "MD5"
description: "A 128-bit hash broken for collisions since 2004. Still on download pages and in checksum files and it has HMAC"
canonical_url: "https://hashes.agntn.dev/algorithms/md5"
---
# MD5

> A 128-bit hash broken for collisions since 2004. Still on download pages and in checksum files and it has HMAC

<algorithm-facts name="md5">



</algorithm-facts>

Broken. Collisions have been cheap since 2004 and chosen-prefix collisions since 2007, which is how Flame forged a Microsoft signature. Don't sign anything with it, don't dedup anything an attacker gets to choose.

And yet it's on every mirror's checksum file, in old databases and in ETags. So it's here, in the `legacy` category, for matching what somebody else computed.

```ts
create("md5").hash("").digest; // "d41d8cd98f00b204e9800998ecf8427e"
create("md5").hash("hello").digest; // "5d41402abc4b2a76b9719d911017c592"
```

HMAC-MD5 isn't broken the way MD5 is, since HMAC doesn't need collision resistance. It's still a bad choice for anything new.


## Sitemap

See the full [sitemap](https://hashes.agntn.dev/sitemap.md) for all pages.
