diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php
index 0485cc353259c4fafcdbd68c2cdbcf93c4508d8b..f24b4993b6a7fa63a181b97d90172eacf0f4f462 100644
--- a/core/ArchiveProcessor.php
+++ b/core/ArchiveProcessor.php
@@ -442,6 +442,16 @@ class ArchiveProcessor
         $metrics[] = $uniqueVisitorsMetric;
 
         $uniques = $this->computeNbUniques($metrics);
+
+        // see edge case as described in https://github.com/piwik/piwik/issues/9357 where uniq_visitors might be higher
+        // than visits because we archive / process it after nb_visits. Between archiving nb_visits and nb_uniq_visitors
+        // there could have been a new visit leading to a higher nb_unique_visitors than nb_visits which is not possible
+        // by definition. In this case we simply use the visits metric instead of unique visitors metric.
+        $visits = $row->getColumn('nb_visits');
+        if ($visits !== false && $uniques[$uniqueVisitorsMetric] !== false) {
+            $uniques[$uniqueVisitorsMetric] = min($uniques[$uniqueVisitorsMetric], $visits);
+        }
+
         $row->setColumn('nb_uniq_visitors', $uniques[$uniqueVisitorsMetric]);
         $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]);
     }