Speed down DC motor

So here is the problem, i am running a 12v DC motor which draws 30A maxium at its spike... and it's running 4000rpm now.
We have already used a 1:4 gear set to speed it down. now the hardware part is set. So i am wondering if there are any way i
could speed it down digitally, i tried to use Mosfet, but it got really hot some time. Any one has any ideas? Thanks!!!

theres lots of way you could slow down a motor
hardware and software

hardware= gearing, belting, and using chain essentially converting speed to torque or vice versa
software= you could use a resistor to reduce the current to the motor, use a lower voltage or using a PWM. PWM is the kind that u get from analogWrite.

If your mosfet is getting hot you need to answer following ;
a) are you feeding it with PWM signal
b) is PWM signal turning mosfet hard on (ie is it suitable for a 3 volt signal)
c) is your heatsink correctly sized

A PWM signal should control speed from 0% RPM to 100% RPM with no problems provided mosfet is correctly driven