diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py
index 192fc024cbd890f01aa5ef079c139a0039c6a373..99e3dc40cfe676e3c04bdb538030ce49ab60f50e 100644
--- a/api/funkwhale_api/music/serializers.py
+++ b/api/funkwhale_api/music/serializers.py
@@ -387,6 +387,10 @@ class TrackActivitySerializer(activity_serializers.ModelSerializer):
         return "Audio"
 
 
+def get_embed_url(type, id):
+    return settings.FUNKWHALE_EMBED_URL + "?type={}&id={}".format(type, id)
+
+
 class OembedSerializer(serializers.Serializer):
     format = serializers.ChoiceField(choices=["json"])
     url = serializers.URLField()
@@ -473,10 +477,7 @@ class OembedSerializer(serializers.Serializer):
         data[
             "html"
         ] = '<iframe width="{}" height="{}" scrolling="no" frameborder="no" src="{}"></iframe>'.format(
-            data["width"],
-            data["height"],
-            settings.FUNKWHALE_EMBED_URL
-            + "?type={}&id={}".format(embed_type, embed_id),
+            data["width"], data["height"], get_embed_url(embed_type, embed_id)
         )
         return data
 
diff --git a/api/funkwhale_api/music/spa_views.py b/api/funkwhale_api/music/spa_views.py
index e71612caefd427578936e4285ba7bc9e6acd6cbb..351431d0f1e451898a78bb58d400175cc9f0fe3c 100644
--- a/api/funkwhale_api/music/spa_views.py
+++ b/api/funkwhale_api/music/spa_views.py
@@ -6,6 +6,20 @@ from django.urls import reverse
 from funkwhale_api.common import utils
 
 from . import models
+from . import serializers
+
+
+def get_twitter_card_metas(type, id):
+    return [
+        {"tag": "meta", "property": "twitter:card", "content": "player"},
+        {
+            "tag": "meta",
+            "property": "twitter:player",
+            "content": serializers.get_embed_url(type, id),
+        },
+        {"tag": "meta", "property": "twitter:player:width", "content": "600"},
+        {"tag": "meta", "property": "twitter:player:height", "content": "400"},
+    ]
 
 
 def library_track(request, pk):
@@ -72,6 +86,8 @@ def library_track(request, pk):
                 ),
             }
         )
+        # twitter player is also supported in various software
+        metas += get_twitter_card_metas(type="track", id=obj.pk)
     return metas
 
 
@@ -131,6 +147,8 @@ def library_album(request, pk):
                 ),
             }
         )
+        # twitter player is also supported in various software
+        metas += get_twitter_card_metas(type="album", id=obj.pk)
     return metas
 
 
diff --git a/api/tests/music/test_spa_views.py b/api/tests/music/test_spa_views.py
index 7761e313f33747c0c30f5ad62ed1992b2d376566..901c6fe436850ccd284970c26569413487be52a4 100644
--- a/api/tests/music/test_spa_views.py
+++ b/api/tests/music/test_spa_views.py
@@ -3,6 +3,7 @@ import urllib.parse
 from django.urls import reverse
 
 from funkwhale_api.common import utils
+from funkwhale_api.music import serializers
 
 
 def test_library_track(spa_html, no_api_auth, client, factories, settings):
@@ -68,6 +69,14 @@ def test_library_track(spa_html, no_api_auth, client, factories, settings):
                 )
             ),
         },
+        {"tag": "meta", "property": "twitter:card", "content": "player"},
+        {
+            "tag": "meta",
+            "property": "twitter:player",
+            "content": serializers.get_embed_url("track", id=track.id),
+        },
+        {"tag": "meta", "property": "twitter:player:width", "content": "600"},
+        {"tag": "meta", "property": "twitter:player:height", "content": "400"},
     ]
 
     metas = utils.parse_meta(response.content.decode())
@@ -122,6 +131,14 @@ def test_library_album(spa_html, no_api_auth, client, factories, settings):
                 )
             ),
         },
+        {"tag": "meta", "property": "twitter:card", "content": "player"},
+        {
+            "tag": "meta",
+            "property": "twitter:player",
+            "content": serializers.get_embed_url("album", id=album.id),
+        },
+        {"tag": "meta", "property": "twitter:player:width", "content": "600"},
+        {"tag": "meta", "property": "twitter:player:height", "content": "400"},
     ]
 
     metas = utils.parse_meta(response.content.decode())
diff --git a/changes/changelog.d/578.enhancement b/changes/changelog.d/578.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..194ad211190ada13307941451ccb092118016ad7
--- /dev/null
+++ b/changes/changelog.d/578.enhancement
@@ -0,0 +1 @@
+Added twitter:* meta tags to detect tracks and albums players automatically on more sites (#578)