This is the best option for free terrain tiles. There are four formats, though "Terrarium" is the most used. It maps RGB pixels in a PNG to raw elevation values using this formula [0].
If you're using Mapbox GL, you can just point your map to [1] to fetch the tiles, and then use it as a hillshade. I do that in my topographic map style [2].
[0]: https://github.com/tilezen/joerd/blob/master/docs/formats.md...
[1]: https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/...
[2]: https://nst-guide.github.io/osm-liberty-topo/