diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.1.0.4
+
+  * Add support for lzo (`.lzo`, `.tzo`) compression
+
 # 0.1.0.3
 
   * Add support for snappy (`.sz`) compressed archive with `with-snappy` flag
diff --git a/hstar.cabal b/hstar.cabal
--- a/hstar.cabal
+++ b/hstar.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.0
 name:               hstar
-version:            0.1.0.3
+version:            0.1.0.4
 license:            BSD3
 license-file:       LICENSE
 copyright:          Copyright: (c) 2019-2020 Vanessa McHale
@@ -68,7 +68,8 @@
         zlib -any,
         zstd -any,
         lz4-hs >=0.1.1.0,
-        lzlib >=1.0.1.0
+        lzlib >=1.0.1.0,
+        lzo >=0.1.1.0
 
     if flag(with-snappy)
         build-depends: snappy-lazy -any
diff --git a/man/hstar.1 b/man/hstar.1
--- a/man/hstar.1
+++ b/man/hstar.1
@@ -48,9 +48,13 @@
 .IP \[bu] 2
 lz4
 .IP \[bu] 2
+lzo
+.IP \[bu] 2
 deflate
 .IP \[bu] 2
 brotli (optional)
+.IP \[bu] 2
+snappy (optional)
 .SH SHELL COMPLETIONS
 .PP
 To get shell completions in your current session:
diff --git a/src/Compression.cpphs b/src/Compression.cpphs
--- a/src/Compression.cpphs
+++ b/src/Compression.cpphs
@@ -9,6 +9,7 @@
 import qualified Codec.Compression.BZip       as BZip
 import qualified Codec.Compression.GZip       as GZip
 import qualified Codec.Compression.Lzma       as Lzma
+import qualified Codec.Compression.Lzo        as Lzo
 #ifdef SNAPPY
 import qualified Codec.Compression.Snappy.BSL as Snappy
 #endif
@@ -26,6 +27,7 @@
     | Zstd
     | Deflate
     | Lz4
+    | Lzo
 #ifdef BROTLI
     | Brotli
 #endif
@@ -48,6 +50,8 @@
                         | ".tar.zst" `isSuffixOf` fp = Zstd
                         | ".tar.Z" `isSuffixOf` fp   = Deflate
                         | ".tar.lz4" `isSuffixOf` fp = Lz4
+                        | ".tar.lzo" `isSuffixOf` fp = Lzo
+                        | ".tzo" `isSuffixOf` fp     = Lzo
 #ifdef BROTLI
                         | ".tbr" `isSuffixOf` fp     = Brotli
                         | ".tar.br" `isSuffixOf` fp  = Brotli
@@ -66,6 +70,7 @@
 decompressor Zstd    = Zstd.decompress
 decompressor Deflate = Zlib.decompress
 decompressor Lz4     = Lz4.decompress
+decompressor Lzo     = Lzo.decompressFile
 #ifdef BROTLI
 decompressor Brotli  = Brotli.decompress
 #endif
@@ -76,6 +81,7 @@
 
 compressor :: Compressor -> (BSL.ByteString -> BSL.ByteString)
 compressor Lzma    = Lzma.compress
+compressor Lzo     = Lzo.compressFile
 compressor Bz2     = BZip.compress
 compressor GZip    = GZip.compress
 compressor Lz      = Lzip.compress
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -22,9 +22,9 @@
 sanitize :: FilePath -> IO ()
 sanitize fp = do
     let enc = compressionByFileExt fp
-    contents <- decompressor enc <$> BSL.readFile fp
-    forceBSL contents
-    let es = either throw id $ readArchiveBytes contents
+    contents <- BSL.readFile fp
+    decoded <- decompressor enc contents <$ forceBSL contents
+    let es = either throw id $ readArchiveBytes decoded
         paxContents = writeArchiveBytes es
     BSL.writeFile fp (compressor enc paxContents)
 
diff --git a/src/Version.cpphs b/src/Version.cpphs
--- a/src/Version.cpphs
+++ b/src/Version.cpphs
@@ -3,6 +3,7 @@
 import           Archive
 import           Archive.Generic
 import           Codec.Compression.BZip
+import           Codec.Compression.Lzo  (lzoVersionString)
 import           Codec.Lz4              (lZ4VersionString)
 import           Codec.Lzip
 import qualified Data.Version           as V
@@ -21,6 +22,8 @@
     ++ "lz4-hs: " ++ VERSION_lz4_hs ++ "\n"
     ++ "lz4: " ++ lZ4VersionString ++ "\n"
     ++ "zstd-hs: " ++ VERSION_zstd ++ "\n"
+    ++ "lzo: " ++ lzoVersionString ++ "\n"
+    ++ "lzo-hs: " ++ VERSION_lzo ++ "\n"
 #ifdef BROTLI
     ++ "brotli-hs: " ++ VERSION_brotli ++ "\n"
 #endif
