diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 4836cf1fca..d953079659 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -314,8 +314,8 @@
         },
         "features": {
             "$ref": "qmk.definitions.v1#/boolean_array",
-            "propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" }
-
+            "propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" },
+            "not": { "required": [ "lto" ] }
         },
         "indicators": {
             "type": "object",
diff --git a/keyboards/acheron/themis/87h/info.json b/keyboards/acheron/themis/87h/info.json
index 0ef52a61a0..a7bfb89997 100644
--- a/keyboards/acheron/themis/87h/info.json
+++ b/keyboards/acheron/themis/87h/info.json
@@ -8,9 +8,11 @@
         "cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
         "rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
     },
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
-        "lto":       true,
         "mousekey":  true,
         "extrakey":  true,
         "console":   false,
diff --git a/keyboards/acheron/themis/87htsc/info.json b/keyboards/acheron/themis/87htsc/info.json
index 75c680d2a4..5f38814789 100644
--- a/keyboards/acheron/themis/87htsc/info.json
+++ b/keyboards/acheron/themis/87htsc/info.json
@@ -8,9 +8,11 @@
         "cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
         "rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
     },
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
-        "lto":       true,
         "mousekey":  true,
         "extrakey":  true,
         "console":   false,
diff --git a/keyboards/acheron/themis/88htsc/info.json b/keyboards/acheron/themis/88htsc/info.json
index 8726642c0c..20b3d38828 100644
--- a/keyboards/acheron/themis/88htsc/info.json
+++ b/keyboards/acheron/themis/88htsc/info.json
@@ -8,9 +8,11 @@
         "cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
         "rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
     },
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
-        "lto":       true,
         "mousekey":  true,
         "extrakey":  true,
         "console":   false,
diff --git a/keyboards/clueboard/card/info.json b/keyboards/clueboard/card/info.json
index 98c9f4d5f1..7799110ba6 100644
--- a/keyboards/clueboard/card/info.json
+++ b/keyboards/clueboard/card/info.json
@@ -14,7 +14,6 @@
     "command": false,
     "console": true,
     "extrakey": true,
-    "lto": true,
     "midi": false,
     "mousekey": true,
     "nkro": false,
diff --git a/keyboards/crkbd/info.json b/keyboards/crkbd/info.json
index fa9abc574e..880cbccc29 100644
--- a/keyboards/crkbd/info.json
+++ b/keyboards/crkbd/info.json
@@ -14,7 +14,6 @@
     "features": {
         "bootmagic": true,
         "extrakey": true,
-        "lto": true,
         "mousekey": true,
         "nkro": true,
         "oled": true
diff --git a/keyboards/dark/magnum_ergo_1/info.json b/keyboards/dark/magnum_ergo_1/info.json
index a213d92fd5..6ed3908479 100644
--- a/keyboards/dark/magnum_ergo_1/info.json
+++ b/keyboards/dark/magnum_ergo_1/info.json
@@ -8,6 +8,9 @@
         "pid": "0x4D45",
         "device_version": "0.0.1"
     },
+    "build": {
+        "lto": true
+    },
     "features": {
         "audio": false,
         "backlight": true,
@@ -16,7 +19,6 @@
         "console": false,
         "encoder": false,
         "extrakey": true,
-        "lto": true,
         "mousekey": false,
         "nkro": true,
         "rgblight": false
diff --git a/keyboards/fancytech/fancyalice66/info.json b/keyboards/fancytech/fancyalice66/info.json
index 21c89849fd..b2e219c1c9 100644
--- a/keyboards/fancytech/fancyalice66/info.json
+++ b/keyboards/fancytech/fancyalice66/info.json
@@ -9,11 +9,13 @@
             {"pin_a": "F0", "pin_b": "F1", "resolution": 2}
         ]
     },
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
         "encoder": false,
         "extrakey": true,
-        "lto": true,
         "mousekey": true,
         "nkro": true,
         "rgb_matrix": true
diff --git a/keyboards/hotdox76v2/info.json b/keyboards/hotdox76v2/info.json
index 2270d33273..30fd71f62a 100644
--- a/keyboards/hotdox76v2/info.json
+++ b/keyboards/hotdox76v2/info.json
@@ -11,7 +11,6 @@
         "extrakey": true,
         "mousekey": true,
         "nkro": true,
-        "lto": true,
         "oled": true,
         "rgb_matrix": true
     },
diff --git a/keyboards/kbdfans/kbdpad/mk3/info.json b/keyboards/kbdfans/kbdpad/mk3/info.json
index 56c7b80977..735dd3e4ef 100644
--- a/keyboards/kbdfans/kbdpad/mk3/info.json
+++ b/keyboards/kbdfans/kbdpad/mk3/info.json
@@ -9,7 +9,6 @@
         "command": false,
         "console": false,
         "extrakey": true,
-        "lto": true,
         "mousekey": true,
         "nkro": true,
         "rgb_matrix": true
diff --git a/keyboards/keychron/q1v1/info.json b/keyboards/keychron/q1v1/info.json
index 26c846927b..0041687269 100644
--- a/keyboards/keychron/q1v1/info.json
+++ b/keyboards/keychron/q1v1/info.json
@@ -4,13 +4,15 @@
     "maintainer": "lalalademaxiya1",
     "bootloader": "atmel-dfu",
     "diode_direction": "ROW2COL",
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
         "command": false,
         "console": false,
         "dip_switch": true,
         "extrakey": true,
-        "lto": true,
         "mousekey": true,
         "nkro": true,
         "rgb_matrix": true
diff --git a/keyboards/mode/m256wh/info.json b/keyboards/mode/m256wh/info.json
index 6caaa754ed..bbd3c17e97 100644
--- a/keyboards/mode/m256wh/info.json
+++ b/keyboards/mode/m256wh/info.json
@@ -4,9 +4,11 @@
     "maintainer": "Gondolindrim",
     "bootloader": "stm32-dfu",
     "diode_direction": "COL2ROW",
+    "build": {
+        "lto": true
+    },
     "features": {
         "extrakey": true,
-        "lto": true,
         "mousekey": true,
         "nkro": true,
         "rgblight": true
diff --git a/keyboards/mode/m256ws/info.json b/keyboards/mode/m256ws/info.json
index 6a36d4af8e..820ed536c2 100644
--- a/keyboards/mode/m256ws/info.json
+++ b/keyboards/mode/m256ws/info.json
@@ -4,12 +4,14 @@
     "maintainer": "Gondolindrim",
     "bootloader": "stm32-dfu",
     "diode_direction": "COL2ROW",
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
         "command": false,
         "console": false,
         "extrakey": true,
-        "lto": true,
         "mousekey": true,
         "nkro": true,
         "rgblight": true
diff --git a/keyboards/moondrop/dash75/info.json b/keyboards/moondrop/dash75/info.json
index 13e28fb325..59f956815e 100644
--- a/keyboards/moondrop/dash75/info.json
+++ b/keyboards/moondrop/dash75/info.json
@@ -3,14 +3,16 @@
     "keyboard_name": "Dash 75",
     "maintainer": "vinorodrigues",
     "bootloader": "atmel-dfu",
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
         "command": false,
         "console": false,
         "extrakey": true,
         "mousekey": true,
-        "nkro": false,
-        "lto": true
+        "nkro": false
     },
     "diode_direction": "COL2ROW",
     "matrix_pins": {
diff --git a/keyboards/moondrop/dash75/keymaps/via/keymap.json b/keyboards/moondrop/dash75/keymaps/via/keymap.json
index d811aaa780..91faa45808 100644
--- a/keyboards/moondrop/dash75/keymaps/via/keymap.json
+++ b/keyboards/moondrop/dash75/keymaps/via/keymap.json
@@ -7,8 +7,7 @@
     "author": "vinorodrigues",
     "config": {
         "features": {
-            "via": true,
-            "lto": true
+            "via": true
         }
     },
     "layers": [
diff --git a/keyboards/pauperboards/brick/info.json b/keyboards/pauperboards/brick/info.json
index 112a84ff1a..8ebe32ded4 100644
--- a/keyboards/pauperboards/brick/info.json
+++ b/keyboards/pauperboards/brick/info.json
@@ -23,8 +23,7 @@
         "mousekey": true,
         "nkro": true,
         "encoder": true,
-        "rgblight": true,
-        "lto": true
+        "rgblight": true
     },
     "build": {
         "lto": true
diff --git a/keyboards/quadrum/delta/info.json b/keyboards/quadrum/delta/info.json
index 118a2dcbd6..bfdc0afd62 100644
--- a/keyboards/quadrum/delta/info.json
+++ b/keyboards/quadrum/delta/info.json
@@ -4,6 +4,9 @@
     "maintainer": "Sleepdealr",
     "bootloader": "atmel-dfu",
     "diode_direction": "COL2ROW",
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
         "command": false,
@@ -11,7 +14,6 @@
         "extrakey": true,
         "mousekey": true,
         "nkro": true,
-        "lto": true,
         "encoder": true
     },
     "matrix_pins": {
diff --git a/keyboards/quokka/info.json b/keyboards/quokka/info.json
index ed951ff0b2..0c34b0ee65 100644
--- a/keyboards/quokka/info.json
+++ b/keyboards/quokka/info.json
@@ -10,7 +10,6 @@
     "features": {
         "audio": true,
         "extrakey": true,
-        "lto": true,
         "oled": true,
         "rgb_matrix": true
     },
diff --git a/keyboards/smithrune/magnus/m75h/info.json b/keyboards/smithrune/magnus/m75h/info.json
index 0592d2a7a6..9b120a186e 100644
--- a/keyboards/smithrune/magnus/m75h/info.json
+++ b/keyboards/smithrune/magnus/m75h/info.json
@@ -8,6 +8,9 @@
         "pid": "0x1676",
         "device_version": "0.0.1"
     },
+    "build": {
+        "lto": true
+    },
     "features": {
         "audio": false,
         "backlight": false,
@@ -16,7 +19,6 @@
         "console": false,
         "encoder": false,
         "extrakey": true,
-        "lto": true,
         "mousekey": true,
         "nkro": true,
         "rgblight": true
diff --git a/keyboards/smithrune/magnus/m75s/info.json b/keyboards/smithrune/magnus/m75s/info.json
index da2f4e3eff..56f7a06b04 100644
--- a/keyboards/smithrune/magnus/m75s/info.json
+++ b/keyboards/smithrune/magnus/m75s/info.json
@@ -8,6 +8,9 @@
         "pid": "0x1675",
         "device_version": "0.0.1"
     },
+    "build": {
+        "lto": true
+    },
     "features": {
         "audio": false,
         "backlight": true,
@@ -16,7 +19,6 @@
         "console": false,
         "encoder": false,
         "extrakey": true,
-        "lto": true,
         "mousekey": true,
         "nkro": true,
         "rgblight": true
diff --git a/keyboards/teleport/native/info.json b/keyboards/teleport/native/info.json
index eaf9118ff9..3cd857a55d 100644
--- a/keyboards/teleport/native/info.json
+++ b/keyboards/teleport/native/info.json
@@ -29,14 +29,16 @@
         "led_flush_limit": 32,
         "sleep": true
     },
+    "build": {
+        "lto": true
+    },
     "features": {
         "bootmagic": true,
         "command": false,
         "console": false,
         "extrakey": true,
         "mousekey": true,
-        "nkro": true,
-        "lto": true
+        "nkro": true
     },
     "diode_direction": "ROW2COL",
     "matrix_pins": {
diff --git a/keyboards/thevankeyboards/minivan/keymaps/via/keymap.json b/keyboards/thevankeyboards/minivan/keymaps/via/keymap.json
index 54ceb5c342..bff872dee8 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/via/keymap.json
+++ b/keyboards/thevankeyboards/minivan/keymaps/via/keymap.json
@@ -9,10 +9,12 @@
     ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"]
   ],
   "config": {
-    "features": {
-      "via": true,
+    "build": {
       "lto": true
     },
+    "features": {
+      "via": true
+    },
     "dynamic_keymap": {
       "layer_count": 4
     }
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py
index 4ef12bea71..13588abdb8 100644
--- a/lib/python/qmk/info.py
+++ b/lib/python/qmk/info.py
@@ -233,6 +233,9 @@ def _extract_features(info_data, rules):
             key = '_'.join(key.split('_')[:-1]).lower()
             value = True if value.lower() in true_values else False if value.lower() in false_values else value
 
+            if key in ['lto']:
+                continue
+
             if 'config_h_features' not in info_data:
                 info_data['config_h_features'] = {}