Comparison of Best Free Platforms for Publishing Modern Web Projects

Looking for a quick and affordable way to launch your latest project? Look no further. We are going to do a quick comparison of various free static website hosts and the features they offer. Each one has their own pros and cons, but generally we are using the following criteria to evaluate each service provider:

  1. Website URL and ease of using custom domains
  2. Free tier usage limits
  3. Ease of enabling HTTPS and renewing certificate
  4. Version control (ability to rollback) and enabling Continuous Integration
  5. Multiple branch deploys

In this comparison we are focused only on providers with free tier. While this constraint rules out some major players (e.g. AWS and azure), there are plenty of other good ones to choose from. More specifically we will evaluate: Github pages, Netlify, Firebase hosting and Surge. This is not a complete list of all options out there, but these providers were selected because we have satisfactory first-hand experience with each platform.

Github Pages

Github is a popular platform for hosting source code and for collaborating on coding projects. In addition to these amazing features, Github also offers hosting for static websites using Github Pages. Github Pages is available for each repository and can be enabled from the project settings.

1. Url format and custom domains - By default, Github Pages projects have URL username.github.io/repository or organization.github.io/repository. However, configuring a custom URL is easy and can be defined in the repository settings.

2. Usage limits - GitHub Pages sites are subject to the following usage limits1


- GitHub Pages source repositories have a recommended limit of 1GB .
- Published GitHub Pages sites may be no larger than 1 GB.
- GitHub Pages sites have a soft bandwidth limit of 100GB per month.
- GitHub Pages sites have a soft limit of 10 builds per hour.

3. HTTPS support - Securing Github Pages website using HTTPS is as simple as checking one box in the repository settings. In 2016 Github enabled HTTPS for github.io pages and since May 2018, custom domains could also be served over HTTPS. Github handles certificate renewal on your behalf.

4. Version Control and CI - Github in essence provides a version control system and you can integrate it with Travic CI or Circle CI to automatically compile and publish your Github pages apps. In order to rollback a published website version, you have to reset git branch to a previous commit. While frequent git users will find this step easy, rollback on Github Pages is not as easy as it is on other platforms we will evaluate shortly.

5. Deploying from multiple branches - Github Pages supports one deployed instance per repo. Futhermore there are limitations on what branches you can deploy. You can enbled pages to deploy from master branch, from master /docs folder, or from gh-pages branch. This means it would be difficult to perform split testing or beta testing in the same repository as the currently published version of the website. However, if this is not an important requirement for you, Github Pages might be a good fit for your project.

Deploy your site using Github Pages ↗


Netlify

Netlify is a one-stop shop for super easy and user friendly static website publishing. You can connect your projects from Github, Gitlab, Bitbucket, then use Netlify to build and host your website.

1. Url format and custom domains - By default Netlify URLs have randomly assigned 3-part subdomains, for example elated-clarke-ee3c48.netlify.com. However, feel free to change this subdomain to something shorter and easier as long as the subdomain you want is not already taken. Alternatively you can use a custom domain. Netlify’s interface for configuring custom domains is very easy to use and provides clear instructions with examples of how to configure your DNS.

2. Usage limits - from terms of service, usage limits for free account are


Network Bandwidth: 100GB/month — Soft
Storage: 100GB — Soft
API requests: 500 requests/minute, 3 deploys/minute* — Hard

3. HTTPS support - In their own words, “every site on Netlify gets automatic, and free HTTPS”. Netlify manages your certificate but also provides an option to upload your own certificate if you prefer.

4. Version control and CI - Netlify is not a version control system, but provides a way to easily connect your existing repository with the platform, so you can create an automated CI pipeline. Netlify has its own CI and for basic usage, you only need to define which branch you want to deploy, your build command, and your publish directory. In their own words, “Each update you make creates a new, immutable version of your site, so you can roll everything back to any prior version in seconds.” 1

5. Deploying from multiple branches - Out of the box, Netlify offers ability to deploy multiple branches and to split test website changes. The former allows easy beta testing before going to production and the latter allows testing app variations in production. For split testing you must have at least 2 branches, and you can customize the split percentage between each branch. If you plan to beta test or split test your website, this platform will be a good choice for your project.

Deploy your site using Netlify ↗


Firebase Hosting

Firebase is a Google platform mainly intended for mobile applications, but in addition it offers Firebase Hosting for hosting static (and dynamic) web content and microservices. Firebase comes with an easy-to-use terminal tool which can be utilized to upload compiled website to Firebase.

1. Url format and custom domains - Firebase uses typical Google Console project naming convention where you may choose any project id to act as your project subdomain as long as it is available BUT you cannot change the project id once it is set. The default URL for a project is some-awesome-id.firebaseapp.com. The firebase console includes a section for managing hosting options where you can enable a custom domain and the setup is simple and easy to perform.

2. Usage limits - Firebase hosting free tier usage limits are 1 GB/month of storage and 10 GB/month bandwidth.

3. HTTPS support - Firebase Hosting projects are served over HTTPS by default. For custom domains, the platform will automatically provision an SSL certificate after site ownership has been verified. Website publisher does not need to worry about obtaining or renewing certificates.

4. Version control and CI - While Firebase Hosting does not handle version control or CI, it does manage versions of published apps. The platform has an option to rollback with one click. Compared to the other platforms, Firebase Hosting really shines in how easy it is to rollback a release if necessary.

5. Deploying from multiple branches - Free plan does not support running multiple sites based on a single project, but there are paid options to enable this option.

Compared to other platforms, Firebase Hosting is an interesting choice. Because of the platform’s overall focus on mobile applications, there are additional services such as realtime database and functions that may also be useful for static websites. Unfortunately, Firebase hosting is the most restrictive in terms of available bandwidth, meaning if your website is successful, you will need to start paying for hosting sooner than with some of the other featured platforms.

Deploy your site using Firebase Hosting ↗


Surge

Surge is a slightly different option in this list, in that user interacts with Surge using terminal alone. This is a really nice feature for developers who live in the terminal and prefer it that way. Consequently, the platform also integrates really well with CI tools, and it is simple to setup automatic publishing to Surge.

1. Url format and custom domains - Projects hosted on surge have default URLs that look like someproject.surge.sh. You may declare any valid subdomain as long as it is not already reserved. Alternatively, you may configure a custom domain, however you cannot serve websites using custom domains over HTTPS when using the free tier.

2. Usage limits - Surge does not make any clear statements indicating if it imposes specific soft or hard usage limits on storage and bandwidth. Unless such limits exist, it means the platform offers limitless space to play as long as you are willing to use the surge.sh domain.

3. HTTPS support - Surge provides free basic SSL support for all projects published using surge. You can also enforce HTTPS using the Surge CLI. However, if you are using your own custom domain you need an upgraded plan to add your own custom SSL certificate.

4. Version control and CI - Surge is not a version control or CI system, but because of its CLI interface, it integrates well with existing 3rd party tools. It is quite easy to build automated pipelines using hooks where e.g. code is hosted on Github; 3rd party CI is used to compile the project and the build outputs are then handed over to Surge for publishing. Unfortunately, surge does not offer straightforward options for rollback.

5. Deploying from multiple branches - You could fairly easily set up build pipeline for building from multiple branches, then deploying the website per branch using the Surge CLI. This enables simple beta testing on different code branches.

Deploy your site using Surge ↗


Summary

While we can recommend each hosting option as tried and tested, you should choose a platform based on the purpose of your project. One size does not fit all projects, but feel free to use the summarized table below as a reference when choosing between your hosting options.

Feature GH Pages Netlify Firebase Surge
Storage / Bandwidth / mth 1GB / 100GB 100GB / 100GB 1GB / 10GB max unknown
Custom domains Yes Yes Yes Yes
HTTPS Yes Yes Yes Yes (*
Version Control Yes No No No
Easy rollback No Yes Yes No
Continuous Integration 3rd party Yes No No
Multi-branch deploys No Yes No Yes

*) HTTPS is not available for custom domains using free tier

What is your favorite static website publishing platform? Did we miss it? Share your thoughts below.

If you enjoyed this article please share it with your friends!