diff --git a/lib/home73k_web/controllers/err_controller.ex b/lib/home73k_web/controllers/err_controller.ex
new file mode 100644
index 0000000..dc50038
--- /dev/null
+++ b/lib/home73k_web/controllers/err_controller.ex
@@ -0,0 +1,68 @@
+defmodule Home73kWeb.ErrController do
+  use Home73kWeb, :controller
+  plug :put_layout, false
+  plug :put_root_layout, false
+
+  @valid_codes [
+    400,
+    401,
+    402,
+    403,
+    404,
+    405,
+    406,
+    407,
+    408,
+    409,
+    410,
+    411,
+    412,
+    413,
+    414,
+    415,
+    416,
+    417,
+    418,
+    421,
+    422,
+    423,
+    424,
+    425,
+    426,
+    428,
+    429,
+    431,
+    451,
+    500,
+    501,
+    502,
+    503,
+    504,
+    505,
+    506,
+    507,
+    508,
+    510,
+    511
+  ]
+
+  def err(conn, params) do
+    code = Map.get(params, "code", "404") |> err_code_as_int()
+    code = (code in @valid_codes && code) || 404
+
+    conn
+    |> put_status(code)
+    |> put_layout(false)
+    |> put_root_layout(false)
+    |> put_view(Home73kWeb.ErrorView)
+    |> render("#{code}.html")
+  end
+
+  defp err_code_as_int(code) do
+    try do
+      String.to_integer(code)
+    rescue
+      _ -> 404
+    end
+  end
+end
diff --git a/lib/home73k_web/controllers/home_controller.ex b/lib/home73k_web/controllers/home_controller.ex
index 5ca59bf..dcd9766 100644
--- a/lib/home73k_web/controllers/home_controller.ex
+++ b/lib/home73k_web/controllers/home_controller.ex
@@ -16,29 +16,4 @@ defmodule Home73kWeb.HomeController do
   def folio(conn, _params) do
     render(conn, "folio.html", page_title: "Folio")
   end
-
-  @valid_codes [400..418, 421..426, 428..429, 500..508]
-    |> Enum.map(&Enum.to_list/1)
-    |> Enum.concat()
-    |> Enum.concat([431, 451, 510, 511])
-
-  def err(conn, params) do
-    code = Map.get(params, "code", "404") |> err_code_as_int()
-    code = code in @valid_codes && code || 404
-
-    conn
-    |> put_status(code)
-    |> put_layout(false)
-    |> put_root_layout(false)
-    |> put_view(Home73kWeb.ErrorView)
-    |> render("#{code}.html")
-  end
-
-  defp err_code_as_int(code) do
-    try do
-      String.to_integer(code)
-    rescue
-      _ -> 404
-    end
-  end
 end
diff --git a/lib/home73k_web/router.ex b/lib/home73k_web/router.ex
index a276747..a0b54e5 100644
--- a/lib/home73k_web/router.ex
+++ b/lib/home73k_web/router.ex
@@ -24,8 +24,6 @@ defmodule Home73kWeb.Router do
     get "/about", HomeController, :about
     get "/resume", HomeController, :resume
     get "/folio", HomeController, :folio
-    get "/err", HomeController, :err
-    get "/err/:code", HomeController, :err
 
     # Blog
     live "/blog", BlogLive, :index
@@ -35,6 +33,10 @@ defmodule Home73kWeb.Router do
 
     # Feeds
     get "/feed", FeedController, :rss
+
+    # Error fun/testing
+    get "/err", ErrController, :err
+    get "/err/:code", ErrController, :err
   end
 
   # Other scopes may use custom stacks.