Heroku is an great option to host a web app for free.
Heroku's Sweet Spot
Heroku is a platform as a service that is great for developers. You need a few skills to get started. Know how to use git. Well, I guess we're all disqualified already.
Heroku doesn't really host websites. It hosts web apps. So, you'll need some sort of backend language experience (or just a tutorial!). It'll host about anything: Node.js, Ruby, Python, Php.
The Gold Standard for Deployment
For web app hosting and deployment, Heroku is the gold standard. As far as platforms as a service go, nothing beats it. Its tools are simple, powerful, and elegant. Its features are great. Its partners and addons are great. I've really enjoyed using Heroku.
There are other options, of course, but I don't think anything beats Heroku for the value and the experience.
Heroku has a generous free tier. It used to be better. I'm still crying about that. But as is, you can still host a number of hobby apps and numerous experiments beyond that for nothing out of pocket.
With the ease of gitting started, the great experience, and the runway of the free tier, it's a great way to get started. Be careful though, you'll get addicted, and the price can increase quickly with use.
Nicer with a Custom Domain
Heroku will give you a free subdomain on their domain, like
mysuperthing.herokuapp.com. If that's good enough, great, you're done!
When you want a nicer custom domain name, like
jaketrent.com, you can go buy your own domain separately from Heroku. I don't know how to get these free. When you buy one, it's yours for a yearly fee. About $8-15 for a low-demand, cheap domain. I buy mine from Namecheap.
Once you have a domain purchased, you'll want to setup DNS. This is the step that connects your host to your domain. I use Cloudflare as a DNS provider. They have a nice tutorial on connecting to Heroku.
What other free hosting options to you use?