Apart from Cloudflare Pages, Netlify, Vercel there are more free services: Firebase Hosting, Gitlab Pages, Github Pages. Which one to choose? This is the question i faced when thinking about this question to decide how (currently in-development) LiFl Space should be hosted.
Let's assume we started from buying a fresh domain somewhere.
1. Do you want a hosting to manage DNS?
Then it's Cloudflare or Netlify, Vercel (when the whole site resides on those services). When building a multi-service website with different providers on subdomains, Netlify and Vercel won`t be as flexible.
2. Do you expect a high load? Do you want a hosting to provide CDN ?
Cloudflare, Netlify, Vercel, Firebase Hosting can provide a CDN. If you want to use Cloudflare CDN over other services providing it, usually it is not recommended cause of not directly controllable cache and integration benefits of services. However, you can use it with Pages. Worth mentioning Cloudflare and Gitlab Pages do not have a bandwidth limit when other services set it at 100GB.
Firebase Hosting has the lowest bandwidth 360Mb per day on a free plan.
3. Do you expect to deploy frequently?
All, but Netlify and Cloudflare seem coming last Vercel shines here allowing 100 builds per day and Github pages come with 10 builds/hour limit, Gitlab. Also, Netlify, Vercel, Firebase allow direct uploading of the build so the build minutes are not consumed. When building from repo Netlify gives 300 build minutes.
Cloudflare comes last - 500 builds a month and is 100% bound to GitHub right now, that's why it`s quite limited. While being not bad for big websites with long builds. But things might change in the future.
4. Is your website large?
Netlify - 100GB, Vercel / Cloudflare - 10/20K files, Firebase/Gitlab - 10Gb, Github - 1GB
5. Do you want to expand it with cloud functions?
Vercel, Firebase, Netlify, Cloudflare have cloud functions functionality. Vercel even has response caching for them. Firebase - has a great service stack around them. For Cloudflare - Workers functionality is limited right now (like 10ms execution time), but worth mentioning that Workers Unbound are coming soon.
Netlify, Vercel, and Firebase are quite good here, providing different options about how to serve your site. Cloudflare - is simple and opinionated. You just deploy. A bit buggy maybe. For example, when I deployed the website to Cloudflare - it served my index.html contents as robots.txt - had to add it to build.
7. Do you have some other special needs?
Each service has its benefits overall - Netlify has lots of different paid functionalities, Firebase Hosting is on the same platform with other Firebase stack, has delta deployments, etc. Vercel comes from the Next.js team - so it's your best choice if using that framework. Cloudflare - is a worldwide CDN leader, with other cool features to integrate.
These might be not all the points, but they show how complicated the choice is.
What about me? Well, I am uniting different hostings under one wing so went with Cloudflare DNS and CDN for services not providing it. As I don't need much Netlify functionality and some of the websites are going to be simple and static - I will host them on Cloudflare Pages to stay with one provider if possible. Application websites will depend on the technology used, might be still Cloudflare Pages for SPA, or maybe Vercel / Firebase hosting if some application is more complicated and using other services they provide.