diff --git a/api/funkwhale_api/music/tasks.py b/api/funkwhale_api/music/tasks.py
index 722a9eefb29bbb94a9d01df23c654dc83d20bd79..de2d00315441f9f7c3f62c18ce79c532f811026e 100644
--- a/api/funkwhale_api/music/tasks.py
+++ b/api/funkwhale_api/music/tasks.py
@@ -817,9 +817,15 @@ def get_prunable_tracks(
     Returns a list of tracks with no associated uploads,
     excluding the one that were listened/favorited/included in playlists.
     """
-
+    purgeable_tracks_with_upload = (
+        models.Upload.objects.exclude(track=None)
+        .filter(import_status="skipped")
+        .values("track")
+    )
     queryset = models.Track.objects.all()
-    queryset = queryset.filter(uploads__isnull=True)
+    queryset = queryset.filter(
+        Q(uploads__isnull=True) | Q(pk__in=purgeable_tracks_with_upload)
+    )
     if exclude_favorites:
         queryset = queryset.filter(track_favorites__isnull=True)
     if exclude_playlists:
diff --git a/api/tests/music/test_tasks.py b/api/tests/music/test_tasks.py
index 96ba451aae6b2eca4da5dd5c24d726effbdc21a6..989382d79dfe092a7cd5061883d6dfaaf8a1696e 100644
--- a/api/tests/music/test_tasks.py
+++ b/api/tests/music/test_tasks.py
@@ -867,6 +867,8 @@ def test_clean_transcoding_cache(preferences, now, factories):
 
 def test_get_prunable_tracks(factories):
     prunable_track = factories["music.Track"]()
+    # track is still prunable if it has a skipped upload linked to it
+    factories["music.Upload"](import_status="skipped", track=prunable_track)
     # non prunable tracks
     factories["music.Upload"]()
     factories["favorites.TrackFavorite"]()
diff --git a/changes/changelog.d/1011.bugfix b/changes/changelog.d/1011.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..0b52c0e6e8a96225db56141d55ebc198c592caf3
--- /dev/null
+++ b/changes/changelog.d/1011.bugfix
@@ -0,0 +1 @@
+Ensure tracks linked to skipped upload can be pruned (#1011)