diff --git a/api/funkwhale_api/common/models.py b/api/funkwhale_api/common/models.py
index 52a02cad9433f4e79972b6cfe858534c830cb513..9fd1a3c7647922bcea73113bb9af45762a84a483 100644
--- a/api/funkwhale_api/common/models.py
+++ b/api/funkwhale_api/common/models.py
@@ -73,7 +73,7 @@ class LocalFromFidQuerySet:
             return self.filter(~query)
 
 
-class MutationQuerySet(models.QuerySet):
+class GenericTargetQuerySet(models.QuerySet):
     def get_for_target(self, target):
         content_type = ContentType.objects.get_for_model(target)
         return self.filter(target_content_type=content_type, target_id=target.pk)
@@ -119,7 +119,7 @@ class Mutation(models.Model):
     )
     target = GenericForeignKey("target_content_type", "target_id")
 
-    objects = MutationQuerySet.as_manager()
+    objects = GenericTargetQuerySet.as_manager()
 
     def get_federation_id(self):
         if self.fid:
diff --git a/api/funkwhale_api/federation/models.py b/api/funkwhale_api/federation/models.py
index df81cd500653cf5cdeb80ecb4eacf1a227cbf196..fa5050e34b3625e16966faf509e9d173aae3b8c2 100644
--- a/api/funkwhale_api/federation/models.py
+++ b/api/funkwhale_api/federation/models.py
@@ -248,6 +248,7 @@ class Actor(models.Model):
 
     def get_stats(self):
         from funkwhale_api.music import models as music_models
+        from funkwhale_api.moderation import models as moderation_models
 
         data = Actor.objects.filter(pk=self.pk).aggregate(
             outbox_activities=models.Count("outbox_activities", distinct=True),
@@ -260,6 +261,7 @@ class Actor(models.Model):
         data["artists"] = music_models.Artist.objects.filter(
             from_activity__actor=self.pk
         ).count()
+        data["reports"] = moderation_models.Report.objects.get_for_target(self).count()
         data["albums"] = music_models.Album.objects.filter(
             from_activity__actor=self.pk
         ).count()
diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py
index 8a4f91e7786fd1a8ff375050b11359f9c6236632..a016f4326a279f1510e429898dc6f81d274b8089 100644
--- a/api/funkwhale_api/manage/views.py
+++ b/api/funkwhale_api/manage/views.py
@@ -41,6 +41,7 @@ def get_stats(tracks, target):
     ).count()
     data["libraries"] = uploads.values_list("library", flat=True).distinct().count()
     data["uploads"] = uploads.count()
+    data["reports"] = moderation_models.Report.objects.get_for_target(target).count()
     data.update(get_media_stats(uploads))
     return data
 
@@ -248,6 +249,7 @@ class ManageLibraryViewSet(
             "tracks": tracks.count(),
             "albums": albums.count(),
             "artists": len(artists),
+            "reports": moderation_models.Report.objects.get_for_target(library).count(),
         }
         data.update(get_media_stats(uploads.all()))
         return response.Response(data, status=200)
diff --git a/api/funkwhale_api/moderation/models.py b/api/funkwhale_api/moderation/models.py
index c2b91760d916dd62f4eb59dc4e21ac6a3f2b89cc..e6b9cf09eb2d0032985962ffcdf534f5721c5abb 100644
--- a/api/funkwhale_api/moderation/models.py
+++ b/api/funkwhale_api/moderation/models.py
@@ -10,6 +10,7 @@ from django.dispatch import receiver
 from django.urls import reverse
 from django.utils import timezone
 
+from funkwhale_api.common import models as common_models
 from funkwhale_api.federation import models as federation_models
 from funkwhale_api.federation import utils as federation_utils
 
@@ -152,6 +153,8 @@ class Report(federation_models.FederationMixin):
         "Note", content_type_field="target_content_type", object_id_field="target_id"
     )
 
+    objects = common_models.GenericTargetQuerySet.as_manager()
+
     def get_federation_id(self):
         if self.fid:
             return self.fid
diff --git a/api/tests/federation/test_models.py b/api/tests/federation/test_models.py
index d6f862bb356300e9d93fb02c0300f266eef0a6bf..a7460b01cba857f40f17d4e80c0d31075c76912b 100644
--- a/api/tests/federation/test_models.py
+++ b/api/tests/federation/test_models.py
@@ -124,6 +124,7 @@ def test_actor_stats(factories):
         "albums": 0,
         "uploads": 0,
         "artists": 0,
+        "reports": 0,
         "outbox_activities": 0,
         "received_library_follows": 0,
         "emitted_library_follows": 0,
diff --git a/api/tests/manage/test_views.py b/api/tests/manage/test_views.py
index 7f17fce1128216de423709251bec0bbf7a3f1d56..70520ab759df5afc79f092cb183a49be3dcbeb7d 100644
--- a/api/tests/manage/test_views.py
+++ b/api/tests/manage/test_views.py
@@ -189,6 +189,7 @@ def test_artist_detail_stats(factories, superuser_api_client):
         "listenings": 0,
         "playlists": 0,
         "mutations": 0,
+        "reports": 0,
         "track_favorites": 0,
         "media_total_size": 0,
         "media_downloaded_size": 0,
@@ -238,6 +239,7 @@ def test_album_detail_stats(factories, superuser_api_client):
         "listenings": 0,
         "playlists": 0,
         "mutations": 0,
+        "reports": 0,
         "track_favorites": 0,
         "media_total_size": 0,
         "media_downloaded_size": 0,
@@ -284,6 +286,7 @@ def test_track_detail_stats(factories, superuser_api_client):
         "listenings": 0,
         "playlists": 0,
         "mutations": 0,
+        "reports": 0,
         "track_favorites": 0,
         "media_total_size": 0,
         "media_downloaded_size": 0,
@@ -346,6 +349,7 @@ def test_library_detail_stats(factories, superuser_api_client):
         "tracks": 0,
         "albums": 0,
         "artists": 0,
+        "reports": 0,
         "media_total_size": 0,
         "media_downloaded_size": 0,
     }
diff --git a/front/src/views/admin/library/AlbumDetail.vue b/front/src/views/admin/library/AlbumDetail.vue
index 031fdaff085bf57e390e1adccdcc84af31302c4b..857b5ad106e44c026228b963ce4a37410533b2c0 100644
--- a/front/src/views/admin/library/AlbumDetail.vue
+++ b/front/src/views/admin/library/AlbumDetail.vue
@@ -183,6 +183,16 @@
                       {{ stats.playlists }}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `album:${object.id}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.edits', query: {q: getQuery('target', 'album ' + object.id)}}">
diff --git a/front/src/views/admin/library/ArtistDetail.vue b/front/src/views/admin/library/ArtistDetail.vue
index 80c6e7585a88ac3e08ea741a3ffb2a497c0f7528..2a0fab02b9bfd68628a8a8762e0ec326f8acdf89 100644
--- a/front/src/views/admin/library/ArtistDetail.vue
+++ b/front/src/views/admin/library/ArtistDetail.vue
@@ -171,6 +171,16 @@
                       {{ stats.playlists }}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `artist:${object.id}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.edits', query: {q: getQuery('target', 'artist ' + object.id)}}">
diff --git a/front/src/views/admin/library/LibraryDetail.vue b/front/src/views/admin/library/LibraryDetail.vue
index db53bd2b522d5d3cbf65500cdc8c107995e1f659..500bc74345d1af6ead59f3cfda53fbfa7e06ce7e 100644
--- a/front/src/views/admin/library/LibraryDetail.vue
+++ b/front/src/views/admin/library/LibraryDetail.vue
@@ -174,6 +174,16 @@
                       {{ stats.followers }}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `library:${object.uuid}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                 </tbody>
               </table>
             </section>
diff --git a/front/src/views/admin/library/TrackDetail.vue b/front/src/views/admin/library/TrackDetail.vue
index 17707c61a328feacb3c106cb9979b5c9d59e7866..8fd9b6a982d1dd19e0e1b584eb8bc7f5648b5e32 100644
--- a/front/src/views/admin/library/TrackDetail.vue
+++ b/front/src/views/admin/library/TrackDetail.vue
@@ -235,6 +235,16 @@
                       {{ stats.playlists }}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `track:${object.id}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.edits', query: {q: getQuery('target', 'track ' + object.id)}}">
diff --git a/front/src/views/admin/moderation/AccountsDetail.vue b/front/src/views/admin/moderation/AccountsDetail.vue
index 7825bfe0f091787e98bb5818502e1a35402f9967..5bbf2e59a6e8df5e6690699cfe4be87fa698a6cb 100644
--- a/front/src/views/admin/moderation/AccountsDetail.vue
+++ b/front/src/views/admin/moderation/AccountsDetail.vue
@@ -264,6 +264,16 @@
                       {{ stats.emitted_library_follows}}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `account:${object.full_username}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                 </tbody>
               </table>
             </section>
diff --git a/front/src/views/admin/moderation/ReportsList.vue b/front/src/views/admin/moderation/ReportsList.vue
index 73acaf1121144dfa89180075c252456be613d46a..7313828f217a58ae496b4450b7a2124eda85e640 100644
--- a/front/src/views/admin/moderation/ReportsList.vue
+++ b/front/src/views/admin/moderation/ReportsList.vue
@@ -57,6 +57,15 @@
       <div v-else-if="mode === 'card'">
         <report-card @handled="fetchData" :obj="obj" v-for="obj in result.results" :key="obj.uuid" />
       </div>
+      <div class="ui center aligned basic segment">
+        <pagination
+          v-if="result && result.count > paginateBy"
+          @page-changed="selectPage"
+          :current="page"
+          :paginate-by="paginateBy"
+          :total="result.count"
+          ></pagination>
+      </div>
     </section>
   </main>
 </template>