diff --git a/Cargo.lock b/Cargo.lock
index dfc549a264..314223f754 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2136,9 +2136,9 @@ dependencies = [
 
 [[package]]
 name = "fsst-rs"
-version = "0.5.0"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61c274306bb4da50d928487c0d99e4e52a920df7d901072dd17374a25a11f2e9"
+checksum = "4bef086b2717e557af9d9ca2def97a8ef727cb808a8db00bff6b7590446c9099"
 
 [[package]]
 name = "funty"
diff --git a/Cargo.toml b/Cargo.toml
index 0509188e1c..0a59d664b9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -92,7 +92,7 @@ fastlanes = "0.1.8"
 flatbuffers = "25"
 flexbuffers = "25"
 flume = "0.11"
-fsst-rs = "0.5.0"
+fsst-rs = "0.5.1"
 futures = { version = "0.3.31", default-features = false }
 futures-executor = "0.3.31"
 futures-util = "0.3.31"
diff --git a/encodings/fsst/src/canonical.rs b/encodings/fsst/src/canonical.rs
index b9e4da727c..f10196cfe3 100644
--- a/encodings/fsst/src/canonical.rs
+++ b/encodings/fsst/src/canonical.rs
@@ -59,14 +59,9 @@ fn fsst_into_varbin_view(
 
     // Bulk-decompress the entire array.
     let mut uncompressed_bytes = ByteBufferMut::with_capacity(total_size + 7);
-    // SAFETY: uncompressed bytes is large enough to contain all data + the 7 additional bytes
-    //  of padding required for vectorized decompression. See the docstring for `decompress_into`
-    //  for more details.
-    unsafe {
-        let len =
-            decompressor.decompress_into(bytes.as_slice(), uncompressed_bytes.spare_capacity_mut());
-        uncompressed_bytes.set_len(len);
-    };
+    let len =
+        decompressor.decompress_into(bytes.as_slice(), uncompressed_bytes.spare_capacity_mut());
+    unsafe { uncompressed_bytes.set_len(len) };
 
     let block_offset = u32::try_from(block_offset)?;