diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex
index 3bb0718e4..c460a3bc5 100644
--- a/lib/pleroma/application.ex
+++ b/lib/pleroma/application.ex
@@ -59,6 +59,7 @@ def start(_type, _args) do
             restart: :temporary
           }
         ] ++
+        oauth_cleanup_child(oauth_cleanup_enabled?()) ++
         streamer_child(@env) ++
         chat_child(@env, chat_enabled?()) ++
         [
@@ -134,12 +135,20 @@ defp build_cachex(type, opts),
 
   defp chat_enabled?, do: Pleroma.Config.get([:chat, :enabled])
 
+  defp oauth_cleanup_enabled?,
+    do: Pleroma.Config.get([:oauth2, :clean_expired_tokens], false)
+
   defp streamer_child(:test), do: []
 
   defp streamer_child(_) do
     [Pleroma.Web.Streamer]
   end
 
+  defp oauth_cleanup_child(true),
+       do: [Pleroma.Web.OAuth.Token.CleanWorker]
+
+  defp oauth_cleanup_child(_), do: []
+
   defp chat_child(:test, _), do: []
 
   defp chat_child(_env, true) do
diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex
index e39a4986a..f50098302 100644
--- a/lib/pleroma/web/oauth/token/clean_worker.ex
+++ b/lib/pleroma/web/oauth/token/clean_worker.ex
@@ -8,35 +8,28 @@ defmodule Pleroma.Web.OAuth.Token.CleanWorker do
   """
   use GenServer
 
-  # 10 seconds
-  @start_interval 10_000
+  @ten_seconds 10_000
+  @one_day 86_400_000
+
   @interval Pleroma.Config.get(
-              # 24 hours
               [:oauth2, :clean_expired_tokens_interval],
-              86_400_000
+              @one_day
             )
-  @queue :background
 
   alias Pleroma.Web.OAuth.Token
 
-  def start_link(_), do: GenServer.start_link(__MODULE__, nil)
+  def start_link(_), do: GenServer.start_link(__MODULE__, %{})
 
   def init(_) do
-    if Pleroma.Config.get([:oauth2, :clean_expired_tokens], false) do
-      Process.send_after(self(), :perform, @start_interval)
-      {:ok, nil}
-    else
-      :ignore
-    end
+    Process.send_after(self(), :perform, @ten_seconds)
+    {:ok, nil}
   end
 
   @doc false
   def handle_info(:perform, state) do
+    Token.delete_expired_tokens()
+
     Process.send_after(self(), :perform, @interval)
-    PleromaJobQueue.enqueue(@queue, __MODULE__, [:clean])
     {:noreply, state}
   end
-
-  # Job Worker Callbacks
-  def perform(:clean), do: Token.delete_expired_tokens()
 end