diff --git a/README.md b/README.md
index 45525f7..cabcd5d 100644
--- a/README.md
+++ b/README.md
@@ -82,7 +82,7 @@ If a wildcard pattern is used, the path hierarchy will be preserved after the fi
         ∟ some/directory/foo2.txt
         ∟ other/directory/foo1.txt
 ```
-If multiple paths are provided as input, the least common ancestor of all the search paths will be used as the root directory of the artifact. Exclude characters do not effect the directory structure.
+If multiple paths are provided as input, the least common ancestor of all the search paths will be used as the root directory of the artifact. Exclude paths do not effect the directory structure.
 
 Relative and absolute file paths are both allowed. Relative paths are rooted against the current working directory. Paths that begin with a wildcard character should be quoted to avoid being interpreted as YAML aliases.
 
diff --git a/dist/index.js b/dist/index.js
index 2aa335b..137fdf7 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -6251,7 +6251,7 @@ function getMultiPathLCA(searchPaths) {
     // split each of the search paths using the platform specific separator
     for (const searchPath of searchPaths) {
         core_1.debug(`Using search path ${searchPath}`);
-        const splitSearchPath = searchPath.split(path.sep);
+        const splitSearchPath = path.normalize(searchPath).split(path.sep);
         // keep track of the smallest path length so that we don't accidentally later go out of bounds
         smallestPathLength = Math.min(smallestPathLength, splitSearchPath.length);
         splitPaths.push(splitSearchPath);
@@ -6263,21 +6263,21 @@ function getMultiPathLCA(searchPaths) {
     let splitIndex = 0;
     // function to check if the paths are the same at a specific index
     function isPathTheSame() {
-        const common = splitPaths[0][splitIndex];
+        const compare = splitPaths[0][splitIndex];
         for (let i = 1; i < splitPaths.length; i++) {
-            if (common !== splitPaths[i][splitIndex]) {
+            if (compare !== splitPaths[i][splitIndex]) {
                 // a non-common index has been reached
                 return false;
             }
         }
-        // if all are the same, add to the end result & increment the index
-        commonPaths.push(common);
-        splitIndex++;
         return true;
     }
     // Loop over all the search paths until there is a non-common ancestor or we go out of bounds
     while (splitIndex < smallestPathLength) {
         if (!isPathTheSame()) {
+            // if all are the same, add to the end result & increment the index
+            commonPaths.push(splitPaths[0][splitIndex]);
+            splitIndex++;
             break;
         }
     }
@@ -6306,7 +6306,7 @@ function findFilesToUpload(searchPath, globOptions) {
         if (searchPaths.length > 1) {
             core_1.info(`Multiple search paths detected. Calculating the least common ancestor of all paths`);
             const lcaSearchPath = getMultiPathLCA(searchPaths);
-            core_1.info(`The least common ancestor is ${lcaSearchPath} This will be the root directory of the artifact`);
+            core_1.info(`The least common ancestor is ${lcaSearchPath}. This will be the root directory of the artifact`);
             return {
                 filesToUpload: searchResults,
                 rootDirectory: lcaSearchPath
diff --git a/src/search.ts b/src/search.ts
index 6737c41..bfc21fa 100644
--- a/src/search.ts
+++ b/src/search.ts
@@ -38,7 +38,8 @@ function getMultiPathLCA(searchPaths: string[]): string {
   // split each of the search paths using the platform specific separator
   for (const searchPath of searchPaths) {
     debug(`Using search path ${searchPath}`)
-    const splitSearchPath = searchPath.split(path.sep)
+
+    const splitSearchPath = path.normalize(searchPath).split(path.sep)
 
     // keep track of the smallest path length so that we don't accidentally later go out of bounds
     smallestPathLength = Math.min(smallestPathLength, splitSearchPath.length)
@@ -53,26 +54,25 @@ function getMultiPathLCA(searchPaths: string[]): string {
   let splitIndex = 0
   // function to check if the paths are the same at a specific index
   function isPathTheSame(): boolean {
-    const common = splitPaths[0][splitIndex]
+    const compare = splitPaths[0][splitIndex]
     for (let i = 1; i < splitPaths.length; i++) {
-      if (common !== splitPaths[i][splitIndex]) {
+      if (compare !== splitPaths[i][splitIndex]) {
         // a non-common index has been reached
         return false
       }
     }
-    // if all are the same, add to the end result & increment the index
-    commonPaths.push(common)
-    splitIndex++
     return true
   }
 
   // Loop over all the search paths until there is a non-common ancestor or we go out of bounds
   while (splitIndex < smallestPathLength) {
     if (!isPathTheSame()) {
+      // if all are the same, add to the end result & increment the index
+      commonPaths.push(splitPaths[0][splitIndex])
+      splitIndex++
       break
     }
   }
-
   return path.join(...commonPaths)
 }
 
@@ -111,7 +111,7 @@ export async function findFilesToUpload(
     )
     const lcaSearchPath = getMultiPathLCA(searchPaths)
     info(
-      `The least common ancestor is ${lcaSearchPath} This will be the root directory of the artifact`
+      `The least common ancestor is ${lcaSearchPath}. This will be the root directory of the artifact`
     )
 
     return {