diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # ChangeLog for yesod-core
 
+## 1.6.8
+* In the route syntax, allow trailing backslashes to indicate line
+    continuation. [#1558](https://github.com/yesodweb/yesod/pull/1558)
+
 ## 1.6.7
 
 * If no matches are found, `selectRep` chooses first representation regardless
diff --git a/Yesod/Routes/Parse.hs b/Yesod/Routes/Parse.hs
--- a/Yesod/Routes/Parse.hs
+++ b/Yesod/Routes/Parse.hs
@@ -65,7 +65,7 @@
 -- invalid input.
 resourcesFromString :: String -> [ResourceTree String]
 resourcesFromString =
-    fst . parse 0 . filter (not . all (== ' ')) . lines . filter (/= '\r')
+    fst . parse 0 . filter (not . all (== ' ')) . foldr lineContinuations [] . lines . filter (/= '\r')
   where
     parse _ [] = ([], [])
     parse indent (thisLine:otherLines)
@@ -285,3 +285,12 @@
     _ -> error $ "Unclosed bracket ('{'): " ++ str
 dropBracket x = x
 
+-- | If this line ends with a backslash, concatenate it together with the next line.
+--
+-- @since 1.6.8
+lineContinuations :: String -> [String] -> [String]
+lineContinuations this [] = [this]
+lineContinuations this below@(next:rest) = case unsnoc this of
+    Just (this', '\\') -> (this'++next):rest
+    _ -> this:below
+  where unsnoc s = if null s then Nothing else Just (init s, last s)
diff --git a/test/RouteSpec.hs b/test/RouteSpec.hs
--- a/test/RouteSpec.hs
+++ b/test/RouteSpec.hs
@@ -17,7 +17,7 @@
 import Data.Text (Text, pack, unpack, singleton)
 import Yesod.Routes.Class hiding (Route)
 import qualified Yesod.Routes.Class as YRC
-import Yesod.Routes.Parse (parseRoutesNoCheck, parseTypeTree, TypeTree (..))
+import Yesod.Routes.Parse (parseRoutesFile, parseRoutesNoCheck, parseTypeTree, TypeTree (..))
 import Yesod.Routes.Overlap (findOverlapNames)
 import Yesod.Routes.TH hiding (Dispatch)
 import Language.Haskell.TH.Syntax
@@ -219,10 +219,16 @@
         it "routes to subparam" $ disp "PUT" ["subparam", "6", "q"]
             @?= (pack "subparam 6 q", Just $ SubparamR 6 $ ParamRoute 'q')
 
-    describe "parsing" $ do
+    describe "route parsing" $ do
         it "subsites work" $ do
             parseRoute ([pack "subsite", pack "foo"], [(pack "bar", pack "baz")]) @?=
                 Just (SubsiteR $ MySubRoute ([pack "foo"], [(pack "bar", pack "baz")]))
+
+    describe "routing table parsing" $ do
+        it "recognizes trailing backslashes as line continuation directives" $ do
+            let routes :: [ResourceTree String]
+                routes = $(parseRoutesFile "test/fixtures/routes_with_line_continuations")
+            length routes @?= 3
 
     describe "overlap checking" $ do
         it "catches overlapping statics" $ do
diff --git a/yesod-core.cabal b/yesod-core.cabal
--- a/yesod-core.cabal
+++ b/yesod-core.cabal
@@ -1,5 +1,5 @@
 name:            yesod-core
-version:         1.6.7
+version:         1.6.8
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
