diff --git a/lib/pleroma/web/views/error_view.ex b/lib/pleroma/web/views/error_view.ex
index 86a1744b77254f7ea15ad62e8009dbb0580decb3..f4c04131c949708251e4bdd95a045ecd02f7c1d3 100644
--- a/lib/pleroma/web/views/error_view.ex
+++ b/lib/pleroma/web/views/error_view.ex
@@ -4,13 +4,20 @@
 
 defmodule Pleroma.Web.ErrorView do
   use Pleroma.Web, :view
+  require Logger
 
   def render("404.json", _assigns) do
     %{errors: %{detail: "Page not found"}}
   end
 
-  def render("500.json", _assigns) do
-    %{errors: %{detail: "Internal server error"}}
+  def render("500.json", assigns) do
+    Logger.error("Internal server error: #{inspect(assigns[:reason])}")
+
+    if Mix.env() != :prod do
+      %{errors: %{detail: "Internal server error", reason: inspect(assigns[:reason])}}
+    else
+      %{errors: %{detail: "Internal server error"}}
+    end
   end
 
   # In case no render clause matches or no
diff --git a/test/web/views/error_view_test.exs b/test/web/views/error_view_test.exs
index 16a0c8cefb97b67ea25bf527cd1d73bd7231dbe4..d529fd2c358485edca29fceaed3a18510e1a0010 100644
--- a/test/web/views/error_view_test.exs
+++ b/test/web/views/error_view_test.exs
@@ -14,11 +14,16 @@ defmodule Pleroma.Web.ErrorViewTest do
 
   test "render 500.json" do
     assert render(Pleroma.Web.ErrorView, "500.json", []) ==
-             %{errors: %{detail: "Internal server error"}}
+             %{errors: %{detail: "Internal server error", reason: "nil"}}
   end
 
   test "render any other" do
     assert render(Pleroma.Web.ErrorView, "505.json", []) ==
-             %{errors: %{detail: "Internal server error"}}
+             %{errors: %{detail: "Internal server error", reason: "nil"}}
+  end
+
+  test "render 500.json with reason" do
+    assert render(Pleroma.Web.ErrorView, "500.json", reason: "test reason") ==
+             %{errors: %{detail: "Internal server error", reason: "\"test reason\""}}
   end
 end