diff --git a/doc/lua-filters.md b/doc/lua-filters.md
index 5e43afb26..16f6bfd56 100644
--- a/doc/lua-filters.md
+++ b/doc/lua-filters.md
@@ -132,6 +132,10 @@ Elements without matching functions are left untouched.
 See [module documentation](pandoc-module.html) for a list of pandoc
 elements.
 
+The global `FORMAT` is set to the format of the pandoc writer
+being used (`html5`, `latex`, etc.), so the behavior of a filter
+can be made conditional on the eventual output format.
+
 # Pandoc Module
 
 The `pandoc` lua module is loaded into the filter's lua
diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs
index 89a804176..c26b8e768 100644
--- a/src/Text/Pandoc/App.hs
+++ b/src/Text/Pandoc/App.hs
@@ -514,7 +514,7 @@ convertWithOpts opts = do
               >=> maybe return extractMedia (optExtractMedia opts)
               >=> return . flip (foldr addMetadata) metadata
               >=> applyTransforms transforms
-              >=> applyLuaFilters datadir (optLuaFilters opts) [format]
+              >=> applyLuaFilters datadir (optLuaFilters opts) format
               >=> applyFilters readerOpts datadir filters' [format]
               )
     media <- getMediaBag
@@ -850,12 +850,12 @@ expandFilterPath mbDatadir fp = liftIO $ do
                _ -> return fp
 
 applyLuaFilters :: MonadIO m
-                => Maybe FilePath -> [FilePath] -> [String] -> Pandoc
+                => Maybe FilePath -> [FilePath] -> String -> Pandoc
                 -> m Pandoc
-applyLuaFilters mbDatadir filters args d = do
+applyLuaFilters mbDatadir filters format d = do
   expandedFilters <- mapM (expandFilterPath mbDatadir) filters
   let go f d' = liftIO $ do
-        res <- E.try (runLuaFilter mbDatadir f args d')
+        res <- E.try (runLuaFilter mbDatadir f format d')
         case res of
              Right x -> return x
              Left (LuaException s) -> E.throw (PandocFilterError f s)
diff --git a/src/Text/Pandoc/Lua.hs b/src/Text/Pandoc/Lua.hs
index 2860b84df..ab3b5f4ca 100644
--- a/src/Text/Pandoc/Lua.hs
+++ b/src/Text/Pandoc/Lua.hs
@@ -51,14 +51,14 @@ import qualified Data.Map as Map
 import qualified Foreign.Lua as Lua
 
 runLuaFilter :: (MonadIO m)
-             => Maybe FilePath -> FilePath -> [String] -> Pandoc -> m Pandoc
-runLuaFilter datadir filterPath args pd = liftIO . Lua.runLua $ do
+             => Maybe FilePath -> FilePath -> String -> Pandoc -> m Pandoc
+runLuaFilter datadir filterPath format pd = liftIO . Lua.runLua $ do
   Lua.openlibs
   -- store module in global "pandoc"
   pushPandocModule datadir
   Lua.setglobal "pandoc"
-  push args
-  Lua.setglobal "arg"
+  push format
+  Lua.setglobal "FORMAT"
   top <- Lua.gettop
   stat <- Lua.dofile filterPath
   if stat /= OK