diff --git a/TrainingModpackOverlay/include/taunt_toggles.hpp b/TrainingModpackOverlay/include/taunt_toggles.hpp
index a8d263a..9d7a177 100644
--- a/TrainingModpackOverlay/include/taunt_toggles.hpp
+++ b/TrainingModpackOverlay/include/taunt_toggles.hpp
@@ -351,4 +351,15 @@ const std::string attack_angle_help = R""""(
 Set angleable tilt and smash attacks.)"""";
 
 const std::string save_damage_help = R""""(
-Set if save states should apply to damage.)"""";
\ No newline at end of file
+Set if save states should apply to damage.)"""";
+
+#define NORMAL 0
+const std::vector<std::string> strength_items{ "Normal", "Medium", "High"};
+const std::string              sdi_strength_help = R""""(
+How many frames between each SDI input
+
+Normal 8
+Medium 6
+High 4
+
+)"""";
diff --git a/TrainingModpackOverlay/source/gui_main.cpp b/TrainingModpackOverlay/source/gui_main.cpp
index 12be331..34dff05 100644
--- a/TrainingModpackOverlay/source/gui_main.cpp
+++ b/TrainingModpackOverlay/source/gui_main.cpp
@@ -10,31 +10,32 @@
 
 static struct TrainingModpackMenu
 {
-	OnOffFlags       HITBOX_VIS      = OnOffFlag::On;
-	OnOffFlags       STAGE_HAZARDS   = OnOffFlags::None;
-	Directions       DI_STATE        = Directions::None;
-	Directions       SDI_STATE       = Directions::None;
-	Directions       AIR_DODGE_DIR   = Directions::None;
-	ActionFlags      MASH_STATE      = ActionFlags::None;
-	ActionFlags      FOLLOW_UP       = ActionFlags::None;
-	AttackAngleFlags ATTACK_ANGLE    = AttackAngleFlags::None;
-	LedgeFlags       LEDGE_STATE     = LedgeFlags::All;
-	DelayFlags       LEDGE_DELAY     = DelayFlags::All;
-	TechFlags        TECH_STATE      = TechFlags::All;
-	MissTechFlags    MISS_TECH_STATE = MissTechFlags::All;
-	int              SHIELD_STATE    = NONE;
-	DefensiveFlags   DEFENSIVE_STATE = DefensiveFlags::All;
-	DelayFlags       OOS_OFFSET      = DelayFlags::None;
-	DelayFlags       REACTION_TIME   = DelayFlags::None;
-	Directions       SHIELD_TILT     = Directions::None;
-	OnOffFlags       MASH_IN_NEUTRAL = OnOffFlags::None;
-	BoolFlags        FAST_FALL       = BoolFlags::None;
-	DelayFlags       FAST_FALL_DELAY = DelayFlags::None;
-	BoolFlags        FALLING_AERIALS = BoolFlags::None;
-	DelayFlags       AERIAL_DELAY    = DelayFlags::None;
-	BoolFlags        FULL_HOP        = BoolFlags::None;
-	int              INPUT_DELAY     = 0;
-	OnOffFlags       SAVE_DAMAGE     = OnOffFlag::On;
+	OnOffFlags       HITBOX_VIS          = OnOffFlag::On;
+	OnOffFlags       STAGE_HAZARDS       = OnOffFlags::None;
+	Directions       DI_STATE            = Directions::None;
+	Directions       SDI_STATE           = Directions::None;
+	int              SDI_STRENGTH        = NORMAL;
+	Directions       AIR_DODGE_DIR       = Directions::None;
+	ActionFlags      MASH_STATE          = ActionFlags::None;
+	ActionFlags      FOLLOW_UP           = ActionFlags::None;
+	AttackAngleFlags ATTACK_ANGLE        = AttackAngleFlags::None;
+	LedgeFlags       LEDGE_STATE         = LedgeFlags::All;
+	DelayFlags       LEDGE_DELAY         = DelayFlags::All;
+	TechFlags        TECH_STATE          = TechFlags::All;
+	MissTechFlags    MISS_TECH_STATE     = MissTechFlags::All;
+	int              SHIELD_STATE        = NONE;
+	DefensiveFlags   DEFENSIVE_STATE     = DefensiveFlags::All;
+	DelayFlags       OOS_OFFSET          = DelayFlags::None;
+	DelayFlags       REACTION_TIME       = DelayFlags::None;
+	Directions       SHIELD_TILT         = Directions::None;
+	OnOffFlags       MASH_IN_NEUTRAL     = OnOffFlags::None;
+	BoolFlags        FAST_FALL           = BoolFlags::None;
+	DelayFlags       FAST_FALL_DELAY     = DelayFlags::None;
+	BoolFlags        FALLING_AERIALS     = BoolFlags::None;
+	DelayFlags       AERIAL_DELAY        = DelayFlags::None;
+	BoolFlags        FULL_HOP            = BoolFlags::None;
+	int              INPUT_DELAY         = 0;
+	OnOffFlags       SAVE_DAMAGE         = OnOffFlag::On;
 } menu;
 
 static struct TrainingModpackMenu defaultMenu = menu;
@@ -337,6 +338,12 @@ tsl::elm::Element* GuiMain::createUI()
 
 			list->addItem(createBitFlagOption(&menu.DI_STATE, "Set DI", di_help, this));
 			list->addItem(createBitFlagOption(&menu.SDI_STATE, "Set SDI", sdi_help, this));
+
+			ValueListItem* sdiItem =
+			    new ValueListItem("SDI Strength", strength_items, &menu.SDI_STRENGTH, "SDI Strength", sdi_strength_help);
+			list->addItem(sdiItem);
+			valueListItems.push_back(sdiItem);
+
 			list->addItem(createBitFlagOption(&menu.AIR_DODGE_DIR, "Airdodge Direction", air_dodge_direction_help, this));
 
 			list->addItem(new tsl::elm::CategoryHeader("Shield", true));
diff --git a/src/common/consts.rs b/src/common/consts.rs
index ec3a711..cec6fe3 100644
--- a/src/common/consts.rs
+++ b/src/common/consts.rs
@@ -319,6 +319,7 @@ pub struct TrainingModpackMenu {
     pub stage_hazards: OnOff,
     pub di_state: Direction,
     pub sdi_state: Direction,
+    pub sdi_strength: SdiStrength,
     pub air_dodge_dir: Direction,
     pub mash_state: Action,
     pub follow_up: Action,
@@ -349,3 +350,22 @@ pub enum FighterId {
     Player = 0,
     CPU = 1,
 }
+
+#[repr(u32)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+#[allow(dead_code)]
+pub enum SdiStrength {
+    Normal = 0,
+    Medium = 1,
+    High = 2,
+}
+
+impl SdiStrength {
+    pub fn into_u32(self) -> u32 {
+        match self {
+            SdiStrength::Normal => 8,
+            SdiStrength::Medium => 6,
+            SdiStrength::High => 4,
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/common/mod.rs b/src/common/mod.rs
index b762599..cef0584 100644
--- a/src/common/mod.rs
+++ b/src/common/mod.rs
@@ -10,6 +10,7 @@ pub static mut MENU_STRUCT: consts::TrainingModpackMenu = consts::TrainingModpac
     stage_hazards: OnOff::Off,
     di_state: Direction::empty(),
     sdi_state: Direction::empty(),
+    sdi_strength: SdiStrength::Normal,
     air_dodge_dir: Direction::empty(),
     mash_state: Action::empty(),
     follow_up: Action::empty(),
diff --git a/src/training/sdi.rs b/src/training/sdi.rs
index ce3cab2..df87c99 100644
--- a/src/training/sdi.rs
+++ b/src/training/sdi.rs
@@ -53,7 +53,7 @@ fn mod_sdi_direction(fighter: &mut L2CFighterCommon) -> Option<f64> {
             if directional_influence::should_reverse_angle() {
                 PI - angle
             } else {
-                angle 
+                angle
             }
         })
     }
@@ -90,7 +90,7 @@ fn mod_check_hit_stop_delay_command(
     }
 
     unsafe {
-        COUNTER = (COUNTER + 1) % 8;
+        COUNTER = (COUNTER + 1) % MENU.sdi_strength.into_u32();
     }
 
     unsafe {