Thermostat or heater core would be my guess, but w/o vehicle description, such as year and miles, it is only an educated guess at best. The owners manual for my 08' Ranger with 68,000 miles says the coolant should be changed at 100,000 miles, but I don't buy it. For the record, my heat works fine, and nothing has been done to my Ranger yet. I do know that if the heat is somewhat warm but not hot, then it could be as simple as a thermostat or my complicated, like a heater core. My wife's 07' Ford Edge with only 50,000+ miles was giving us issues, and we determined that it was a faulty heater core that coincidentally Ford had a TSB
about since the heater core was manufactured incorrectly. Sorry to get off track, but a simple flush may be in order to get out any trapped dirt and/or contaminants. I know that with my wife's vehicle it took several times because of the faulty heater core, but as soon as the thermostat was swapped out, a definite difference in temperature was noted.