diff --git a/language-docker.cabal b/language-docker.cabal
--- a/language-docker.cabal
+++ b/language-docker.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: ae482d4758686e114cb8d504d57ff8a1de39b6262598d3823f9b1b195035e9b0
+-- hash: 288e8bea2c06314b9ba46925a5e5fa3c9c64e936b4c768874597c11d8bb53de4
 
 name:           language-docker
-version:        9.1.2
+version:        9.1.3
 synopsis:       Dockerfile parser, pretty-printer and embedded DSL
 description:    All functions for parsing and pretty-printing Dockerfiles are exported through @Language.Docker@. For more fine-grained operations look for specific modules that implement a certain functionality.
                 See the <https://github.com/hadolint/language-docker GitHub project> for the source-code and examples.
diff --git a/src/Language/Docker/Parser/Instruction.hs b/src/Language/Docker/Parser/Instruction.hs
--- a/src/Language/Docker/Parser/Instruction.hs
+++ b/src/Language/Docker/Parser/Instruction.hs
@@ -41,8 +41,13 @@
 parseArg = do
   reserved "ARG"
   (try nameWithDefault <?> "the arg name")
+    <|> (try nameWithoutDefault <?> "the arg name")
     <|> Arg <$> untilEol "the argument name" <*> pure Nothing
   where
+    nameWithoutDefault = do
+      name <- someUnless "the argument name" (== '=')
+      void $ untilEol "the rest"
+      return $ Arg name Nothing
     nameWithDefault = do
       name <- someUnless "the argument name" (== '=')
       void $ char '='
diff --git a/test/Language/Docker/ParserSpec.hs b/test/Language/Docker/ParserSpec.hs
--- a/test/Language/Docker/ParserSpec.hs
+++ b/test/Language/Docker/ParserSpec.hs
@@ -31,6 +31,8 @@
   describe "parse ARG" $ do
     it "no default" $
       assertAst "ARG FOO" [Arg "FOO" Nothing]
+    it "no default with =" $
+      assertAst "ARG FOO=" [Arg "FOO" Nothing]
     it "with default" $
       assertAst "ARG FOO=bar" [Arg "FOO" (Just "bar")]
   describe "parse FROM" $ do
