Normalizing will not fix the double speed bug

Currently trying to make a simple movement script for my player, problem is diagonal movement is wayyy faster than moving on a sing axis, I’ve tried to normalize my movement but this doesn’t work at all, instead it just boosts my speed to a very high value.

private float verticalInput;
    private float horizontalInput;
    private Vector3 movement;
    readonly float speed = 5f;
    void Update()
    {
        verticalInput = (float)(Input.GetAxis("Vertical"));
        horizontalInput = (float)(Input.GetAxis("Horizontal"));
    }
    void FixedUpdate()
    {
        movement = new Vector3(verticalInput, 0, horizontalInput) * speed * Time.deltaTime;
        movement.Normalize();
        transform.Translate(movement, Space.World);
    }

Anybody know why?

You are normalizing in the wrong place. You should do it on Movement before multiplying by speed and Time.deltaTime. Remember that Time.DeltaTime is a tiny amount and, if you normalize after applying it, you boost movement back up again.

movement = new Vector3(verticalInput, 0, horizontalInput).normalized;
movement *=  speed * Time.deltaTime;

Also, there is a difference between Normalize() and normalized; The former is a function so you would do something like movement.Normalize() as you did. It changes the value immediately. normalized is a property which doesn’t change the calling Vector3 and so you have to assign it like this: movement = movement.normalized

What you did is correct but I’ve used the property version in my code.