How should I manage speed for the game i'm making? Client or Server?

So I’m making a game where if someone gets hit by an attack I may add a stun for specific things. However, if I do this on the server and someone is lagging they may not receive a slow for a specific amount of time.

Should I completely adjust player speed on the client? or the server? because it’s essential that all my speed manipulation be either complete server side or complete client side.

Alright so this is where it gets confusing though if I make sprinting client sided then how do I detect whether a player is blocking, or if they’re stunned on the server. If a players stunned then they can simply just sprint to speed themselves up again with no checks.

What about stuff that happens quickly though, like a small stun that eventually alternates their player back to normal. It could override other speeds from the mechanics?

What if something’s supposed to revert to that speed eventually though?

Server side and check if player is properly syncronized, if not syncronized make the server spam stuns until one reaches it.

Use a remote event and make it check if the client recieved properly the stun, if not send again.

It all depends on the type of game you are making,

if you want it to be accurate you can use a RemoteEvent to connect the event, if you are making a game that doesn’t need 100% synchronisation then you can use the server to manage the stuns of the players.