diff --git a/api/config/settings/common.py b/api/config/settings/common.py
index 000289e515a154390d2f11b864a8746abee580ad..be5adf85cf49bd32450ca3d294805926258ba76d 100644
--- a/api/config/settings/common.py
+++ b/api/config/settings/common.py
@@ -383,3 +383,6 @@ CACHEOPS = {
 # Custom Admin URL, use {% url 'admin:index' %}
 ADMIN_URL = env('DJANGO_ADMIN_URL', default='^api/admin/')
 CSRF_USE_SESSIONS = True
+
+# Playlist settings
+PLAYLISTS_MAX_TRACKS = env.int('PLAYLISTS_MAX_TRACKS', default=500)
diff --git a/api/funkwhale_api/playlists/serializers.py b/api/funkwhale_api/playlists/serializers.py
index d35f3314509832c0783acd3526f381124176f90b..77470c4dea0b68528429516971ad53d451b723ff 100644
--- a/api/funkwhale_api/playlists/serializers.py
+++ b/api/funkwhale_api/playlists/serializers.py
@@ -1,3 +1,4 @@
+from django.conf import settings
 from rest_framework import serializers
 from taggit.models import Tag
 
@@ -20,6 +21,14 @@ class PlaylistTrackCreateSerializer(serializers.ModelSerializer):
         model = models.PlaylistTrack
         fields = ('id', 'track', 'playlist', 'position')
 
+    def validate_playlist(self, value):
+        existing = value.playlist_tracks.count()
+        if existing >= settings.PLAYLISTS_MAX_TRACKS:
+            raise serializers.ValidationError(
+                'Playlist has reached the maximum of {} tracks'.format(
+                    settings.PLAYLISTS_MAX_TRACKS))
+        return value
+
 
 class PlaylistSerializer(serializers.ModelSerializer):
 
diff --git a/api/tests/playlists/test_serializers.py b/api/tests/playlists/test_serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..6daff8e609dc96d0d09e909d55823fe7d3c6418f
--- /dev/null
+++ b/api/tests/playlists/test_serializers.py
@@ -0,0 +1,16 @@
+from funkwhale_api.playlists import serializers
+
+
+def test_cannot_max_500_tracks_per_playlist(mocker, factories, settings):
+    settings.PLAYLISTS_MAX_TRACKS = 2
+    playlist = factories['playlists.Playlist']()
+    plts = factories['playlists.PlaylistTrack'].create_batch(
+        size=2, playlist=playlist)
+    track = factories['music.Track']()
+    serializer = serializers.PlaylistTrackCreateSerializer(data={
+        'playlist': playlist.pk,
+        'track': track.pk,
+    })
+
+    assert serializer.is_valid() is False
+    assert 'playlist' in serializer.errors