2D player jumps too high

Heres the script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerScript : MonoBehaviour {

	public float speed;
	public float jumpSpeed;
	private Rigidbody2D rb;
	public bool isGrounded;
	public LayerMask ground;
	public Transform groundCheck;
	public Vector2 groundSize;


	void Awake () {
		rb = GetComponent<Rigidbody2D> ();
	}
	void FixedUpdate () {
		isGrounded = Physics2D.Raycast (transform.position, transform.TransformDirection (Vector3.down), 0.55f, ground);
		var mH = Input.GetAxis ("Horizontal");
		var movement = new Vector2 (mH, rb.velocity.y);
		rb.velocity = movement * speed;
		if (Input.GetKeyDown ("space") && isGrounded) {
			rb.velocity = new Vector2 (rb.velocity.x, jumpSpeed);
		}
	}
}

When i try to jump my player jumps very very high.
I tried setting the jumpSpeed variable more low,
but the problem is when i set it too low it doesn’t jump.
my player is a square and i tried using rigidbody.AddForce but theres the same problem.
The velocity is set 5000, not to jumpSpeed
Can any body help?
Thank you

When you press spacebar your rb.velocity.y gets updated, so does “movement” next frame. Every next frame it gets multiplied by “speed” so it goes off the scale quickly. Try multiplying only the “x” component of “movement” by “speed”.

you can fix that by this code when the player is back to ground

if (col.gameObject.tag == “Ground”)
{
IsGrounded = true;
rb.velocity = Vector3.zero;
rb.angularVelocity = 0f;
}