diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+# 1.4.1.1
+
+* Add afp-tledump utility.
+
 # 1.4.1
 
 * Remove iconv dependency.
diff --git a/OpenAFP-Utils.cabal b/OpenAFP-Utils.cabal
--- a/OpenAFP-Utils.cabal
+++ b/OpenAFP-Utils.cabal
@@ -1,5 +1,5 @@
 Name:               OpenAFP-Utils
-Version:            1.4.1
+Version:            1.4.1.1
 License:            PublicDomain
 License-file:       LICENSE
 Author:             Audrey Tang
@@ -19,6 +19,10 @@
 
 Executable afp-olndump
     Main-is:            afp-olndump.hs
+    Build-depends:      OpenAFP >= 1.4, base >= 4 && < 5, bytestring, containers, binary
+
+Executable afp-tledump
+    Main-is:            afp-tledump.hs
     Build-depends:      OpenAFP >= 1.4, base >= 4 && < 5, bytestring, containers, binary
 
 Executable afp-dump
diff --git a/afp-tledump.hs b/afp-tledump.hs
new file mode 100644
--- /dev/null
+++ b/afp-tledump.hs
@@ -0,0 +1,20 @@
+module Main where
+import OpenAFP
+import System.Exit
+import Data.Char (isDigit, isAlphaNum)
+import Data.List (find)
+import qualified Data.ByteString.Char8 as C
+
+main :: IO ()
+main = do
+    args    <- getArgs
+    if null args then error "Usage: afp-tledump file.afp" else do
+    let (inFile:_) = args
+    cs <- readAFP inFile
+    forM_ (filter (~~ _TLE) cs) $ \tle -> do
+        let Just (fqn:av:_) = tle_Chunks `applyToChunk` tle
+            Just key = t_fqn `applyToChunk` fqn
+            Just val = t_av `applyToChunk` av
+        putStr (filter (/= '\x00') $ fromAStr key)
+        putStr "="
+        putStrLn (filter (/= '\x00') $ fromAStr val)
