---
title: "BLAKE3"
description: "A Merkle tree of 1 KiB chunks with a 32-byte digest. Absurdly fast and no HMAC mode"
canonical_url: "https://hashes.agntn.dev/algorithms/blake3"
---
# BLAKE3

> A Merkle tree of 1 KiB chunks with a 32-byte digest. Absurdly fast and no HMAC mode

<algorithm-facts name="blake3">



</algorithm-facts>

BLAKE3 splits the input into 1 KiB chunks, hashes them as leaves of a binary tree and compresses its way up to one root. The tree is what makes it parallel, and why it runs so fast on large inputs. This implementation is plain TypeScript and checked against the reference `blake3` on 285 input lengths up to 1 MiB, so it's right. It isn't SIMD fast, though.

```ts
create("blake3").hash("").digest;
// "af1349b9f5f9a1a6a0404dea36dcc9499bcb25c9adc112b7cc9a93cae41f3262"
create("blake3").hash("abc").digest;
// "6437b3ac38465133ffb63b75273a8db548c558465d79db03fd359c6cd5bd9d85"
```

No HMAC. BLAKE3 has its own keyed mode, which isn't HMAC and isn't here, so a `key` is refused instead of quietly ignored.


## Sitemap

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