diff --git a/swh/model/identifiers.py b/swh/model/identifiers.py
--- a/swh/model/identifiers.py
+++ b/swh/model/identifiers.py
@@ -1228,13 +1228,13 @@
     if qualifiers_raw:
         for qualifier in qualifiers_raw.split(SWHID_CTXT_SEP):
             try:
-                k, v = qualifier.split("=")
+                k, v = qualifier.split("=", maxsplit=1)
+                parts["qualifiers"][k] = v
             except ValueError:
                 raise ValidationError(
                     "Invalid SWHID: invalid qualifier: %(qualifier)s",
                     params={"qualifier": qualifier},
                 )
-            parts["qualifiers"][k] = v
 
     parts["scheme_version"] = int(parts["scheme_version"])
     parts["object_id"] = hash_to_bytes(parts["object_id"])
diff --git a/swh/model/tests/test_identifiers.py b/swh/model/tests/test_identifiers.py
--- a/swh/model/tests/test_identifiers.py
+++ b/swh/model/tests/test_identifiers.py
@@ -1516,6 +1516,14 @@
             origin="https://example.org/foo%3Bbar%25baz",
         ),
     ),
+    (
+        f"swh:1:cnt:{HASH};origin=https://example.org?project=test",
+        QualifiedSWHID(
+            object_type=ObjectType.CONTENT,
+            object_id=_x(HASH),
+            origin="https://example.org?project=test",
+        ),
+    ),
     # visit:
     (
         f"swh:1:cnt:{HASH};visit=swh:1:snp:{HASH}",
@@ -1570,6 +1578,12 @@
             object_type=ObjectType.CONTENT, object_id=_x(HASH), path=b"/foo%bar"
         ),
     ),
+    (
+        f"swh:1:cnt:{HASH};path=/foo/bar%3Dbaz",
+        QualifiedSWHID(
+            object_type=ObjectType.CONTENT, object_id=_x(HASH), path=b"/foo/bar=baz"
+        ),
+    ),
     # lines
     (
         f"swh:1:cnt:{HASH};lines=1-18",