diff --git a/swh/model/identifiers.py b/swh/model/identifiers.py
index 6d8b8574fe654b08eca1b21bc45b67ce532047f2..e4f3a6377e3b6179907dc97fb034d337b73063eb 100644
--- a/swh/model/identifiers.py
+++ b/swh/model/identifiers.py
@@ -800,6 +800,9 @@ def swhid(
     return str(swhid)
 
 
+CONTEXT_QUALIFIERS = {"origin", "anchor", "visit", "path", "lines"}
+
+
 def parse_swhid(swhid: str) -> SWHID:
     """Parse :ref:`persistent-identifiers`.
 
@@ -845,13 +848,22 @@ def parse_swhid(swhid: str) -> SWHID:
     _metadata = {}
     for part in swhid_parts:
         try:
-            key, val = part.split("=")
-            _metadata[key] = val
+            qualifier, val = part.split("=")
+            _metadata[qualifier] = val
         except Exception:
             raise ValidationError(
                 "Invalid SWHID: contextual data must be a ;-separated list of "
                 " key=value pairs"
             )
+
+    wrong_qualifiers = set(_metadata) - set(CONTEXT_QUALIFIERS)
+    if wrong_qualifiers:
+        error_msg = (
+            f"Invalid SWHID: Wrong qualifiers {', '.join(wrong_qualifiers)}. "
+            f"The qualifiers must be one of {', '.join(CONTEXT_QUALIFIERS)}"
+        )
+        raise ValidationError(error_msg)
+
     return SWHID(
         _ns,
         int(_version),
diff --git a/swh/model/tests/test_identifiers.py b/swh/model/tests/test_identifiers.py
index 83bc19b409833ae1ca2f44ebfc1cc92955d47dec..cb21bb4b7b708823a028180086cf87b6d1f51ef1 100644
--- a/swh/model/tests/test_identifiers.py
+++ b/swh/model/tests/test_identifiers.py
@@ -1059,6 +1059,16 @@ def test_normalize_timestamp_dict_invalid_timestamp(dict_input):
         "swh:1:dir:0b6959356d30f1a4e9b7f6bca59b9a336464c03d;invalid;malformed",
         "swh:1:snp:gh6959356d30f1a4e9b7f6bca59b9a336464c03d",
         "swh:1:snp:foo",
+        # wrong qualifier: ori should be origin
+        "swh:1:dir:0b6959356d30f1a4e9b7f6bca59b9a336464c03d;ori=something;anchor=1;visit=1;path=/",  # noqa
+        # wrong qualifier: anc should be anchor
+        "swh:1:dir:0b6959356d30f1a4e9b7f6bca59b9a336464c03d;origin=something;anc=1;visit=1;path=/",  # noqa
+        # wrong qualifier: vis should be visit
+        "swh:1:dir:0b6959356d30f1a4e9b7f6bca59b9a336464c03d;origin=something;anchor=1;vis=1;path=/",  # noqa
+        # wrong qualifier: pa should be path
+        "swh:1:dir:0b6959356d30f1a4e9b7f6bca59b9a336464c03d;origin=something;anchor=1;visit=1;pa=/",  # noqa
+        # wrong qualifier: line should be lines
+        "swh:1:dir:0b6959356d30f1a4e9b7f6bca59b9a336464c03d;line=10;origin=something;anchor=1;visit=1;path=/",  # noqa
     ],
 )
 def test_parse_swhid_parsing_error(invalid_swhid):