diff --git a/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java b/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
index 0c2a4b2..3bd86f2 100644
--- a/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
+++ b/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
@@ -20,6 +20,7 @@ public final class BetterControlsConfig{
 	
 	public final KeyBindingWithModifier keyToggleFlight = new KeyBindingWithModifier("key.bettercontrols.toggle_flight");
 	public SprintMode sprintModeWhileFlying = SprintMode.TAP_TO_START;
+	public boolean disableFlightInertia = false;
 	public boolean disableChangingFovWhileFlying = false;
 	public boolean flyOnGroundInCreative = false;
 	public float flightSpeedMpCreativeDefault = 1F;
diff --git a/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java b/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
index 76c9554..7659884 100644
--- a/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
+++ b/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
@@ -41,6 +41,7 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
 		
 		Json.writeKeyBinding(obj, "Flight.KeyToggle.Creative", cfg.keyToggleFlight);
 		Json.setEnum(obj, "Flight.SprintMode", cfg.sprintModeWhileFlying);
+		Json.setBool(obj, "Flight.DisableInertia", cfg.disableFlightInertia);
 		Json.setBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying);
 		Json.setBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative);
 		Json.setFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightSpeedMpCreativeDefault);
@@ -79,6 +80,7 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
 		
 		Json.readKeyBinding(obj, "Flight.KeyToggle.Creative", cfg.keyToggleFlight);
 		cfg.sprintModeWhileFlying = Json.getEnum(obj, "Flight.SprintMode", cfg.sprintModeWhileFlying, SprintMode.class);
+		cfg.disableFlightInertia = Json.getBool(obj, "Flight.DisableInertia", cfg.disableFlightInertia);
 		cfg.disableChangingFovWhileFlying = Json.getBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying);
 		cfg.flyOnGroundInCreative = Json.getBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative);
 		cfg.flightSpeedMpCreativeDefault = Json.getFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightSpeedMpCreativeDefault, 0.25F, 8F);
diff --git a/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java b/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
index a1a8c97..1921795 100644
--- a/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
+++ b/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
@@ -126,6 +126,11 @@ public class BetterControlsScreen extends GameOptionsScreen{
 		
 		y += ROW_HEIGHT;
 		
+		generateLeftSideText(y, elements, text("Disable Flight Inertia"));
+		elements.add(new BooleanValueWidget(col2(1), y, COL2_W, cfg.disableFlightInertia, value -> cfg.disableFlightInertia = value));
+		
+		y += ROW_HEIGHT;
+		
 		generateLeftSideText(y, elements, text("Disable Field Of View Changing"));
 		elements.add(new BooleanValueWidget(col2(1), y, COL2_W, cfg.disableChangingFovWhileFlying, value -> cfg.disableChangingFovWhileFlying = value));
 		
diff --git a/src/main/java/chylex/bettercontrols/player/PlayerTicker.java b/src/main/java/chylex/bettercontrols/player/PlayerTicker.java
index c50fb60..55d5d49 100644
--- a/src/main/java/chylex/bettercontrols/player/PlayerTicker.java
+++ b/src/main/java/chylex/bettercontrols/player/PlayerTicker.java
@@ -10,6 +10,7 @@ import chylex.bettercontrols.mixin.AccessClientPlayerFields;
 import chylex.bettercontrols.mixin.AccessGameRendererFields;
 import chylex.bettercontrols.mixin.AccessStickyKeyBindingStateGetter;
 import chylex.bettercontrols.util.Key;
+import net.minecraft.client.input.Input;
 import net.minecraft.client.input.KeyboardInput;
 import net.minecraft.client.network.ClientPlayerEntity;
 import java.lang.ref.WeakReference;
@@ -153,8 +154,10 @@ public final class PlayerTicker{
 	}
 	
 	public void afterInputTick(final ClientPlayerEntity player){
+		final Input input = player.input;
+		
 		if (MINECRAFT.currentScreen == null && !player.abilities.flying){
-			player.input.jumping |= toggleJump.tick();
+			input.jumping |= toggleJump.tick();
 		}
 		
 		if (FlightHelper.isFlyingCreativeOrSpectator(player)){
@@ -168,11 +171,11 @@ public final class PlayerTicker{
 			if (Math.abs(verticalVelocity) > 1E-5F && player == MINECRAFT.getCameraEntity()){
 				int direction = 0;
 				
-				if (player.input.sneaking){
+				if (input.sneaking){
 					--direction;
 				}
 				
-				if (player.input.jumping){
+				if (input.jumping){
 					++direction;
 				}
 				
@@ -180,6 +183,16 @@ public final class PlayerTicker{
 					player.setVelocity(player.getVelocity().add(0D, flightSpeed * verticalVelocity * direction, 0D));
 				}
 			}
+			
+			if (cfg().disableFlightInertia){
+				if (input.movementForward == 0F && input.movementSideways == 0F){
+					player.setVelocity(player.getVelocity().multiply(0.0, 1.0, 0.0));
+				}
+				
+				if (!input.jumping && !input.sneaking){
+					player.setVelocity(player.getVelocity().multiply(1.0, 0.0, 1.0));
+				}
+			}
 		}
 		
 		if (cfg().resumeSprintingAfterHittingObstacle){