Character wont stop jumping in the air

My character is able to jump in the air… infinitely. How can I solve this? Here is my code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour

{

public CharacterController controller; 
public float speed = 12f;
public float gravity = -9.81f;
public float jumpHeight = 3f;

public Transform groundCheck; 
public float groundDistance = 0.4f;
public LayerMask groundMask;

Vector3 velocity;
bool isGrounded;


// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{

	isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
	if(isGrounded && velocity.y < 0){
		velocity.y = -2f;
	}

    float x = Input.GetAxis("Horizontal");
    float z = Input.GetAxis("Vertical");

    Vector3 move = transform.right * x + transform.forward * z;
    controller.Move(move * speed * Time.deltaTime);

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

    velocity.y += gravity * Time.deltaTime;
    controller.Move(velocity * Time.deltaTime);

}

}
|

You could keep track of when its on the ground. Using oncollisionenter and exit would be more efficient than Physics.CheckSphere if you add a collider to the player.

void OnCollisionEnter(collision collision){
  if(collision.gameObject.name = "ground") // could also be replaced with collision.gameObject.tag
  {
    isGrounded = true;
  }
}