diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+- 0.5.12.0
+    * Add support for shebang at start of file
+
 - 0.5.11.2
     * Bump `filepath` dependency to 1.5
 
diff --git a/src/Language/Haskell/Stylish/Parse.hs b/src/Language/Haskell/Stylish/Parse.hs
--- a/src/Language/Haskell/Stylish/Parse.hs
+++ b/src/Language/Haskell/Stylish/Parse.hs
@@ -7,6 +7,7 @@
 --------------------------------------------------------------------------------
 import           Data.Maybe                      (fromMaybe, listToMaybe)
 import qualified Language.Haskell.Exts.Annotated as H
+import Data.List (isPrefixOf)
 
 
 --------------------------------------------------------------------------------
@@ -27,6 +28,14 @@
 
 
 --------------------------------------------------------------------------------
+-- | Remove shebang from the first line
+unShebang :: String -> String
+unShebang str
+    | "#!" `isPrefixOf` str = unlines $ drop 1 $ lines str
+    | otherwise             = str
+
+
+--------------------------------------------------------------------------------
 -- | If the given string is prefixed with an UTF-8 Byte Order Mark, drop it
 -- because haskell-src-exts can't handle it.
 dropBom :: String -> String
@@ -55,10 +64,10 @@
             }
 
         -- Preprocessing
-        noCpp    =
+        processed = unShebang $
             if H.EnableExtension H.CPP `elem` exts then unCpp noBom else noBom
 
-    case H.parseModuleWithComments mode noCpp of
+    case H.parseModuleWithComments mode processed of
         H.ParseOk md -> return md
         err          -> Left $
             "Language.Haskell.Stylish.Parse.parseModule: could not parse " ++
diff --git a/stylish-haskell.cabal b/stylish-haskell.cabal
--- a/stylish-haskell.cabal
+++ b/stylish-haskell.cabal
@@ -1,5 +1,5 @@
 Name:          stylish-haskell
-Version:       0.5.11.2
+Version:       0.5.12.0
 Synopsis:      Haskell code prettifier
 Homepage:      https://github.com/jaspervdj/stylish-haskell
 License:       BSD3
diff --git a/tests/Language/Haskell/Stylish/Parse/Tests.hs b/tests/Language/Haskell/Stylish/Parse/Tests.hs
--- a/tests/Language/Haskell/Stylish/Parse/Tests.hs
+++ b/tests/Language/Haskell/Stylish/Parse/Tests.hs
@@ -21,6 +21,7 @@
     , testCase "Extra extensions"      testExtraExtensions
     , testCase "Multiline CPP"         testMultilineCpp
     , testCase "Haskell2010 extension" testHaskell2010
+    , testCase "Shebang"               testShebang
     ]
 
 
@@ -55,6 +56,15 @@
     [ "{-# LANGUAGE Haskell2010 #-}"
     , "module X where"
     , "foo x | Just y <- x = y"
+    ]
+
+
+--------------------------------------------------------------------------------
+testShebang :: Assertion
+testShebang = assert $ isRight $ parseModule [] Nothing $ unlines
+    [ "#!runhaskell"
+    , "module Main where"
+    , "main = return ()"
     ]
 
 
