diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.4.2
+
+* Added --quiet flag to suppress output for up to date cabal files [#29](https://github.com/snoyberg/packdeps/pull/29)
+
 ## 0.4.1
 
 * Cli improvements: UI tweaks and --recursive flag [#28](https://github.com/snoyberg/packdeps/pull/28)
diff --git a/packdeps.cabal b/packdeps.cabal
--- a/packdeps.cabal
+++ b/packdeps.cabal
@@ -1,5 +1,5 @@
 name:            packdeps
-version:         0.4.1
+version:         0.4.2
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
diff --git a/tools/packdeps-cli.hs b/tools/packdeps-cli.hs
--- a/tools/packdeps-cli.hs
+++ b/tools/packdeps-cli.hs
@@ -1,5 +1,5 @@
 import Distribution.PackDeps
-import Control.Monad (forM_, foldM)
+import Control.Monad (forM_, foldM, when)
 import System.Environment (getArgs, getProgName)
 import System.Exit (exitFailure, exitSuccess)
 import Distribution.Text (display)
@@ -15,15 +15,17 @@
         ["help"] -> usageExit
         _ | "-h" `elem` args || "--help" `elem` args -> usageExit
         _ -> do
-            isGood <- run ("--recursive" `elem` args) (filter (/= "--recursive") args)
+            isGood <- run ("--recursive" `elem` args) ("--quiet" `elem` args) (filter (\arg -> arg /= "--recursive" && arg /= "--quiet") args)
             if isGood then exitSuccess else exitFailure
 
 type CheckDeps = Newest -> DescInfo -> (PackageName, Version, CheckDepsRes)
 
-checkDepsCli :: CheckDeps -> Newest -> DescInfo -> IO Bool
-checkDepsCli cd newest di =
+checkDepsCli :: Bool -> CheckDeps -> Newest -> DescInfo -> IO Bool
+checkDepsCli quiet cd newest di =
     case cd newest di of
-        (pn, v, AllNewest) -> do
+        (pn, v, AllNewest)
+          | quiet -> return True
+          | otherwise -> do
             putStrLn $ concat
                 [ unPackageName pn
                 , "-"
@@ -42,9 +44,10 @@
             return False
 
 run :: Bool        -- ^ Check transitive dependencies
+    -> Bool        -- ^ Quiet -- only report packages that are not up to date
     -> [FilePath]  -- ^ .cabal filenames
     -> IO Bool
-run deep args = do
+run deep quiet args = do
     newest <- loadNewest
     foldM (go newest) True args
   where
@@ -53,12 +56,12 @@
         di <- case mdi of
              Just di -> return di
              Nothing -> error $ "Could not parse cabal file: " ++ fp
-        allGood <- checkDepsCli checkDeps newest di
+        allGood <- checkDepsCli quiet checkDeps newest di
         depsGood <- if deep
                        then do putStrLn $ "\nTransitive dependencies:"
-                               allM (checkDepsCli checkLibDeps newest) (deepLibDeps newest [di])
+                               allM (checkDepsCli quiet checkLibDeps newest) (deepLibDeps newest [di])
                        else return True
-        putStrLn ""
+        when (not (allGood && depsGood)) $ putStrLn ""
         return $ wasAllGood && allGood && depsGood
 
 unPackageName :: PackageName -> String
@@ -69,10 +72,12 @@
 usageExit = do
     pname <- getProgName
     putStrLn $ "\n"
-        ++ "Usage: " ++ pname ++ " [--recursive] pkgname.cabal pkgname2.cabal...\n\n"
+        ++ "Usage: " ++ pname ++ " [--recursive] [--quiet] pkgname.cabal pkgname2.cabal...\n\n"
         ++ "Check the given cabal file's dependency list to make sure that it does not exclude\n"
         ++ "the newest package available. Its probably worth running the 'cabal update' command\n"
-        ++ "immediately before running this program.\n"
+        ++ "immediately before running this program.\n\n"
+        ++ "  --quiet\n"
+        ++ "      Suppress output for .cabal files which can accept the newest packages available.\n"
     exitSuccess
 
 -- | Non short-circuiting monadic version of 'all'
