You built a portfolio or project โ now put it online with a real URL, for โน0. This guide compares the four best free hosting platforms and walks through the exact deployment steps for each, including connecting a custom domain.
| Feature | GitHub Pages | Netlify | Vercel | Render |
|---|---|---|---|---|
| Static sites (HTML/CSS/JS) | โ | โ | โ | โ |
| React/Vue build support | Manual | โ Auto | โ Auto | โ Auto |
| Node.js backend | โ | Functions only | Functions only | โ Full server |
| Custom domain | โ Free | โ Free | โ Free | โ Free |
| Free HTTPS (SSL) | โ | โ | โ | โ |
| Bandwidth (free tier) | 100 GB/mo soft | 100 GB/mo | 100 GB/mo | 100 GB/mo |
| Deploy method | Git push | Git / drag-drop | Git / CLI | Git |
| Best for | Portfolio, docs | Beginners, static + forms | React/Next.js apps | Full-stack Node apps |
Free static hosting directly from a GitHub repository. Bonus: every recruiter checks your GitHub โ hosting your portfolio there puts your code and your site in one place.
Steps to deploy:
yourusername.github.io (this exact name gives you the root URL).git init git add . git commit -m "My portfolio website" git branch -M main git remote add origin https://github.com/yourusername/yourusername.github.io.git git push -u origin main
main.https://yourusername.github.io ๐Limitations: static files only โ no PHP, no databases, no server code.
The famous "drag and drop" deploy โ you can put a site online in under 60 seconds without knowing Git.
Steps to deploy (drag-and-drop):
random-name-12345.netlify.app โ rename it in Site settings.Steps for auto-deploy from GitHub (better): "Add new site โ Import an existing project โ GitHub โ pick repo." Every git push now redeploys automatically.
Extras on the free tier: form handling (contact forms without a backend!), redirects, deploy previews.
Made by the creators of Next.js. If your project is React, Vite, or Next.js, Vercel detects your framework and configures the build automatically.
Steps to deploy:
npm run build, output dist). Click Deploy.your-project.vercel.app. Every push to main auto-deploys; every PR gets its own preview URL.The other three host static files (plus serverless functions). Render runs a real server โ your Express app, APIs, WebSockets โ free.
Steps to deploy a Node/Express app:
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on ${PORT}`));npm install ยท Start command: node index.js โ Create.Free tier catch: the service sleeps after 15 minutes of inactivity โ the first request after sleep takes ~30 seconds. Fine for portfolio demos; mention it in your README.
A domain like yourname.dev costs โน200โ800/year (Namecheap, GoDaddy, Hostinger, Cloudflare Registrar) and makes your portfolio look far more professional on a resume.
www to the platform, and an A record for the root domain..me domain from Namecheap for one year, plus credits on many hosting platforms.
C:/Users/... or leading-slash paths that don't match the host. Use relative paths (./images/photo.jpg)._redirects file with /* /index.html 200; Vercel handles this automatically.index.html.