diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py
index b207b68fcc24ca0a0c82f1a6455f91ea968f8022..df4e701335e4ab7fedcdda4ffe5274ea6f7d61db 100644
--- a/api/funkwhale_api/music/serializers.py
+++ b/api/funkwhale_api/music/serializers.py
@@ -214,7 +214,10 @@ class AlbumSerializer(OptionalDescriptionMixin, serializers.Serializer):
     def get_is_playable(self, obj):
         try:
             return any(
-                [bool(getattr(t, "playable_uploads", [])) for t in obj.tracks.all()]
+                [
+                    bool(getattr(t, "is_playable_by_actor", None))
+                    for t in obj.tracks.all()
+                ]
             )
         except AttributeError:
             return None
diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py
index 314162420f9481990ab07bbabee1a65037d918b1..df01f5902aff20286e8dbe98c811281411686068 100644
--- a/api/funkwhale_api/music/views.py
+++ b/api/funkwhale_api/music/views.py
@@ -185,9 +185,7 @@ class AlbumViewSet(
     queryset = (
         models.Album.objects.all()
         .order_by("-creation_date")
-        .prefetch_related(
-            "artist__channel", "attributed_to", "attachment_cover", "tracks"
-        )
+        .prefetch_related("artist__channel", "attributed_to", "attachment_cover")
     )
     serializer_class = serializers.AlbumSerializer
     permission_classes = [oauth_permissions.ScopePermission]
@@ -223,8 +221,14 @@ class AlbumViewSet(
             queryset = queryset.exclude(artist__channel=None).filter(
                 artist__attributed_to=self.request.user.actor
             )
-        qs = queryset.prefetch_related(TAG_PREFETCH)
-        return qs
+
+        tracks = models.Track.objects.all().prefetch_related("album")
+        tracks = tracks.annotate_playable_by_actor(
+            utils.get_actor_from_request(self.request)
+        )
+        return queryset.prefetch_related(
+            Prefetch("tracks", queryset=tracks), TAG_PREFETCH
+        )
 
     libraries = action(methods=["get"], detail=True)(
         get_libraries(filter_uploads=lambda o, uploads: uploads.filter(track__album=o))
diff --git a/api/tests/music/test_views.py b/api/tests/music/test_views.py
index 673bc13abce74a110f258670233f2eb39e72b1c1..4c4d407a2f3ceb131e98d69b9e5d572adb8d9b6d 100644
--- a/api/tests/music/test_views.py
+++ b/api/tests/music/test_views.py
@@ -58,7 +58,12 @@ def test_album_list_serializer(api_request, factories, logged_in_api_client):
     ).track
     album = track.album
     request = api_request.get("/")
-    qs = album.__class__.objects.with_tracks_count()
+
+    tracks = models.Track.objects.all().prefetch_related("album")
+    tracks = tracks.annotate_playable_by_actor(None)
+
+    qs = album.__class__.objects.with_tracks_count().annotate_playable_by_actor(None)
+    qs = qs.prefetch_related(Prefetch("tracks", queryset=tracks))
     serializer = serializers.AlbumSerializer(
         qs, many=True, context={"request": request}
     )