diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py
index 481f9a7e2dc4d3584e58ef037201428e44a1f9c3..105bb6fe6cf52e4189f67ab5afe4a040b265a2c6 100644
--- a/api/funkwhale_api/music/metadata.py
+++ b/api/funkwhale_api/music/metadata.py
@@ -2,7 +2,7 @@ import base64
 from collections.abc import Mapping
 import datetime
 import logging
-import pendulum
+import arrow
 
 import mutagen._util
 import mutagen.oggtheora
@@ -575,9 +575,9 @@ class PermissiveDateField(serializers.CharField):
                 return datetime.date(parsed.year, parsed.month, parsed.day)
 
         try:
-            parsed = pendulum.parse(str(value))
+            parsed = arrow.get(str(value))
             return datetime.date(parsed.year, parsed.month, parsed.day)
-        except (pendulum.exceptions.ParserError, ValueError):
+        except (arrow.parser.ParserError, ValueError):
             pass
 
         return None
diff --git a/api/funkwhale_api/music/models.py b/api/funkwhale_api/music/models.py
index cdfb819b70a4c003337a5898738450144d68938d..ecb616b4141529e91aef85fbdffe772ee0233269 100644
--- a/api/funkwhale_api/music/models.py
+++ b/api/funkwhale_api/music/models.py
@@ -6,7 +6,7 @@ import tempfile
 import urllib.parse
 import uuid
 
-import pendulum
+import arrow
 import pydub
 from django.conf import settings
 from django.contrib.contenttypes.fields import GenericRelation
@@ -286,7 +286,7 @@ def import_artist(v):
 
 
 def parse_date(v):
-    d = pendulum.parse(v).date()
+    d = arrow.get(v).date()
     return d
 
 
diff --git a/api/requirements/base.txt b/api/requirements/base.txt
index e2a21df29179cf6f21d75abf28b58c98e6c854d0..55b495596981d0b852d96351008cb18f412619b7 100644
--- a/api/requirements/base.txt
+++ b/api/requirements/base.txt
@@ -32,7 +32,7 @@ django-cors-headers>=3.2,<3.3
 musicbrainzngs==0.6
 djangorestframework>=3.11,<3.12
 djangorestframework-jwt>=1.11,<1.12
-pendulum>=2,<3
+arrow>=0.15.5,<0.16
 persisting-theory>=0.2,<0.3
 django-versatileimagefield>=2.0,<2.1
 django-filter>=2.1,<2.2