Player dashes faster in build than editor

I have a script on my player that has a dash feature. The player dashes further in the build than the Unity editor. What am I doing wrong here?

    void Update()
    {
        // Change health text
        healthText.text = "Health: " + health.ToString();

        // Stores mouse movement data
        float movementY = Input.GetAxis("Mouse Y") * mouseSens * Time.deltaTime;
        float movementX = Input.GetAxis("Mouse X") * mouseSens * Time.deltaTime;

        // Restricts player looking up and down
        xRotation -= movementY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        // Rotates player based on mouse movement
        cam.transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        playerTransform.Rotate(Vector3.up * movementX);

        // Checks if player is grounded
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

        if (isGrounded && velocity.y < 0)
        {
            velocity.y = -2f;
        }

        // Checks for WASD movement
        float x = Input.GetAxisRaw("Horizontal");
        float z = Input.GetAxisRaw("Vertical");

        // Sets move direction
        Vector3 move = transform.right * x + transform.forward * z;

        // Moves player
        controller.Move(move * speed * Time.deltaTime);

        // Jump
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            velocity.y = Mathf.Sqrt(jumpHeight * -2 * gravity);
        }

        // Dash
        // Dash timer
        if (timeBtwDash <= 0 && dashAvailable == false)
        {
            dashAvailable = true;
        }
        else if (timeBtwDash > 0)
        {
            timeBtwDash -= Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.LeftShift) && dashAvailable == true)
        {
            currentDashTime = 0.0f;
        }
        if (currentDashTime < maxDashTime)
        {
            moveDirection = transform.forward * dashDistance;
            currentDashTime += dashStoppingSpeed;
            dashAvailable = false;
            timeBtwDash = startTimeBtwDash;
        }
        else
        {
            moveDirection = Vector3.zero;
        }

        controller.Move(moveDirection * dashSpeed * Time.deltaTime);

        // Applies gravity to player
        velocity.y += gravity * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);

        if (canAttack && Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;
            if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, attackRange))
            {
                if(hit.collider.CompareTag("Melee") || hit.collider.CompareTag("Magic"))
                {
                    Debug.Log("attack landed");
                    hit.collider.gameObject.GetComponent<Mugger>().TakeDamage(attackDamage);
                }
            }
        }
    }

physics should always be handled in FixedUpdate(), not Update().

Try changing it and see what happens.