diff --git purl.module purl.module
index b75f73c..a3fe019 100644
--- purl.module
+++ purl.module
@@ -540,7 +540,7 @@ function purl_load($modifier, $reset = FALSE) {
  */
 function purl_validate($modifier) {
   // Check that the value is valid
-  if (check_plain($modifier['provider']) && !empty($modifier['value']) && preg_match('!^[\.a-z0-9_-]+$!', $modifier['value']) && !menu_get_item($modifier['value'])) {
+  if (check_plain($modifier['provider']) && !empty($modifier['value']) && preg_match('!^[\.a-z0-9_-]+$!', $modifier['value']) && !menu_get_item($modifier['value']) && !in_array($modifier['value'], _purl_pathauto_patterns())) {
     $id = db_result(db_query("SELECT id FROM {purl} WHERE value = '%s'", $modifier['value']));
     if (!$id) {
       return true;
@@ -1008,3 +1008,61 @@ function purl_purl_processor() {
   );
   return $info;
 }
+
+
+/**
+ * Implementation of hook_requirements().
+ */
+function purl_requirements($phase) {
+  $requirements = array();
+  $t = get_t();
+  if ($phase == 'runtime' && module_exists('pathauto')) {
+    foreach(_purl_pathauto_patterns() as $pattern) {
+      if (strpos('[', $pattern) !== 0) {
+        $requirements['purl_pathauto'] = array(
+          'title' => $t('Purl'), 
+          'severity' => REQUIREMENT_WARNING,
+          'value' => $t('Pathauto Conflict'),
+          'description' => $t('Possible conflict between Purl and Pathauto: the beginning of at least of the patterns has a token. Cannot predict urls and prevent creation of PURLs that would conflict'),
+        );
+        break;
+      }
+    }
+  }
+  return $requirements;
+}
+
+/**
+ * Get all set pathauto patterns for validation purposes.
+ */
+function _purl_pathauto_patterns() {
+  static $pathauto_patterns = NULL;
+  if (!isset($pathauto_patterns)) {
+    $pathauto_patterns = array();
+    if (module_exists('pathauto')) {
+      // This could also be done by getting all possible pathauto patterns but
+      // was not sure how to do that as modules might define weird patterns
+    
+      // Using global $conf due to strongarm.
+      global $conf;
+    
+      // Set the defaults if have not been overriden
+      _pathauto_include();
+      $all_settings = module_invoke_all('pathauto', 'settings');
+      foreach ($all_settings as $settings) {
+        $module = $settings->module;
+        if (!isset($conf['pathauto_' . $module . '_pattern']) && isset($settings->patterndefault)) {
+          $start = array_shift(explode('/', $settings->patterndefault, 2));
+          $pathauto_patterns[$start] = $start;
+        }
+      }
+      foreach($conf as $key => $value) {
+        if (preg_match('/pathauto_.*_pattern/', $key) && !empty($value)) {
+          $start = array_shift(explode('/', $value, 2));
+          $pathauto_patterns[$start] = $start;
+        }
+      }
+    }
+  }
+  return $pathauto_patterns;
+}
