diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex
index c40bf16569abc5d3b44f49d72cd76dd88c53ff96..59b0ce3e15754af2bb699641a52417c7de3d86ef 100644
--- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex
+++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex
@@ -63,6 +63,24 @@ def nodeinfo(conn, %{"version" => "2.0"}) do
         %{}
       end
 
+    features = [
+      "pleroma_api",
+      "mastodon_api",
+      "mastodon_api_streaming",
+      if Keyword.get(media_proxy, :enabled) do
+        "media_proxy"
+      end,
+      if Keyword.get(gopher, :enabled) do
+        "gopher"
+      end,
+      if Keyword.get(chat, :enabled) do
+        "chat"
+      end,
+      if Keyword.get(suggestions, :enabled) do
+        "suggestions"
+      end
+    ]
+
     response = %{
       version: "2.0",
       software: %{
@@ -84,7 +102,6 @@ def nodeinfo(conn, %{"version" => "2.0"}) do
       metadata: %{
         nodeName: Keyword.get(instance, :name),
         nodeDescription: Keyword.get(instance, :description),
-        mediaProxy: Keyword.get(media_proxy, :enabled),
         private: !Keyword.get(instance, :public, true),
         suggestions: %{
           enabled: Keyword.get(suggestions, :enabled, false),
@@ -94,10 +111,9 @@ def nodeinfo(conn, %{"version" => "2.0"}) do
           web: Keyword.get(suggestions, :web, "")
         },
         staffAccounts: staff_accounts,
-        chat: Keyword.get(chat, :enabled),
-        gopher: Keyword.get(gopher, :enabled),
         federation: federation_response,
-        postFormats: Keyword.get(instance, :allowed_post_formats)
+        postFormats: Keyword.get(instance, :allowed_post_formats),
+        features: features
       }
     }