diff --git a/swh/web/common/identifiers.py b/swh/web/common/identifiers.py
--- a/swh/web/common/identifiers.py
+++ b/swh/web/common/identifiers.py
@@ -234,16 +234,11 @@
     """
     try:
         # ensure core part of SWHID is in lower case to avoid parsing error
-        qualifiers_pos = swhid.find(";")
-        if qualifiers_pos == -1:
-            swhid = swhid.lower()
-        else:
-            swhid = swhid[:qualifiers_pos].lower() + swhid[qualifiers_pos:]
-        swhid_parsed = QualifiedSWHID.from_string(swhid)
+        (core, sep, qualifiers) = swhid.partition(";")
+        core = core.lower()
+        return QualifiedSWHID.from_string(core + sep + qualifiers)
     except ValidationError as ve:
         raise BadInputExc("Error when parsing identifier: %s" % " ".join(ve.messages))
-    else:
-        return swhid_parsed
 
 
 def group_swhids(swhids: Iterable[QualifiedSWHID],) -> Dict[str, List[bytes]]: