diff --git a/include/class_tests.inc b/include/class_tests.inc
index a6265977333518ae236ef18bd864f509a8d1fd61..aefb4c58ed92740da93b857568ef975bc11c1114 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -365,4 +365,20 @@ class tests
 
     return ($ad >= $from && $ad <= $to);
   }
+
+  /* \brief Check if the value is a valid orcid id */
+  public static function is_orcid ($orcid)
+  {
+    /* Remove hyphens, remove last digit, convert to array */
+    $baseDigits = str_split(str_replace('-', '', substr($orcid, 0, -1)));
+    $sum = 0;
+    foreach ($baseDigits as $baseDigit) {
+      $sum = ($sum + (int)$baseDigit) * 2;
+    }
+    $remainder  = $sum % 11;
+    $result     = (12 - $remainder) % 11;
+    $orcidCheckSum = (($result == 10) ? "X" : (string)$result);
+
+    return ($orcidCheckSum != substr($orcid, -1));
+  }
 }