diff --git a/functions/other_functions.sh b/functions/other_functions.sh
index 7ac3f9a5..2909e685 100644
--- a/functions/other_functions.sh
+++ b/functions/other_functions.sh
@@ -149,9 +149,36 @@ update_rd_conf() {
   conf_read # Read current settings into memory
   mv -f $rd_conf $rd_conf_backup # Backup config file before update
   cp $rd_defaults $rd_conf # Copy defaults file into place
-  conf_write # Write old values into new default file
+  conf_write # Write old values into new retrodeck.cfg file
 
-  # STAGE 2: To handle presets sections that use duplicate setting names
+  # STAGE 2: Create new folders that were added to the shipped retrodeck.cfg, if any
+
+  new_paths=$(awk -F= 'FNR==NR {keys[$1]=1; next} !($1 in keys)' \
+  <(grep -v '^\s*$' "$rd_conf_backup" | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f') \
+  <(grep -v '^\s*$' "$rd_conf" | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f'))
+
+  if [[ -n "$new_paths" ]]; then
+    log i "New paths found in RetroDECK config: \n $new_paths"
+    if [[ ! "$rdhome" == "/home/deck/retrodeck" ]]; then # If rdhome is not the normal internal path, set new folders to rdhome as their root
+      while read -r config_line; do
+        local current_setting_name=$(get_setting_name "$config_line" "retrodeck")
+        local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
+        local relative_path="${current_setting_value#*retrodeck/}"
+        local new_setting_value="$rdhome/$relative_path"
+        set_setting_value "$rd_conf" "$current_setting_name" "$new_setting_value" "retrodeck" "paths"
+        create_dir "$new_setting_value"
+      done <<< "$new_paths"
+    else # rdhome is default internal location, so imported new paths are valid
+      while read -r config_line; do
+        local current_setting_name=$(get_setting_name "$config_line" "retrodeck")
+        local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
+        create_dir "$current_setting_value"
+      done <<< "$new_paths"
+    fi
+    conf_read
+  fi
+
+  # STAGE 3: To handle presets sections that use duplicate setting names
 
   generate_single_patch $rd_defaults $rd_conf_backup $rd_update_patch retrodeck # Create a patch file for differences between defaults and current user settings
   sed -i '/change^^version/d' $rd_update_patch # Remove version line from temporary patch file
@@ -160,13 +187,13 @@ update_rd_conf() {
   rm -f $rd_update_patch # Cleanup temporary patch file
   conf_read # Read all settings into memory
 
-  # STAGE 3: Eliminate any preset incompatibility with existing user settings and new defaults
+  # STAGE 4: Eliminate any preset incompatibility with existing user settings and new defaults
 
   # Fetch incompatible presets from JSON and create a lookup list
   incompatible_presets=$(jq -r '
-    .incompatible_presets | to_entries[] | 
+    .incompatible_presets | to_entries[] |
     [
-      "\(.key):\(.value)", 
+      "\(.key):\(.value)",
       "\(.value):\(.key)"
     ] | join("\n")
   ' $features)
@@ -196,7 +223,6 @@ update_rd_conf() {
   done < $rd_conf
 }
 
-
 conf_read() {
   # This function will read the RetroDECK config file into memory
   # USAGE: conf_read
@@ -1101,4 +1127,4 @@ add_retrodeck_to_steam(){
     fi
 
     log i "RetroDECK has been added to Steam"
-}
\ No newline at end of file
+}