thin.host vs Surge
Surge is a minimal CLI host: surge ./dist publishes a folder, with free custom domains and managed TLS. thin.host is just as quick to deploy to, and adds an MCP server for agents, a dashboard with editing and access gating, and transactional email.
Facts about Surge are taken from Surge's own pricing and documentation pages as of October 2026 (checked 2026-10-14) and listed under Sources. Plans change; check the vendor's page before you decide.
Side by side
| thin.host | Surge | |
|---|---|---|
| Free tier | Free account: hosted sites at thin.host/s/<slug>/ and free <name>.thin.host subdomains. The domain API's free platform tier covers 3 domains. | Unlimited publishing with no project caps, custom domains and basic SSL; no bandwidth figure is published. |
| Cheapest paid plan | Domain API tiers: Indie $29/month, Platform $199/month. End users pay $8/month per domain provisioned through the claim flow. | Surge Professional, $30/month. |
| Custom domains | Yes, several per site, added from the dashboard with a CNAME to cname.thin.host. | Yes, on the free plan. |
| HTTPS | Automatic for custom domains and thin.host subdomains. | Managed certificates for custom domains; *.surge.sh is HTTPS. The pricing page lists forced HTTPS under Professional. |
| AI agent / MCP support | Official hosted MCP server (thin.host/mcp, OAuth 2.1) plus a local server (uvx thinhost-mcp), a Claude Code plugin and a REST API. | No official MCP server found. |
| Transactional email | Yes: transactional email over MCP, REST or SMTP from a verified sending domain (access is approved per account). | No. |
| How you deploy | MCP tool call, one REST upload of a zip, or drag-and-drop in the dashboard. No Git integration: you build locally or in CI. | CLI: surge ./dist example.com, with SURGE_TOKEN for CI. |
| Deploy without an account | No, an account is needed to deploy. | No; the first CLI run creates an account in the terminal. |
| Server-side features | Static files only, plus built-in form capture and password or email gating. No serverless functions. | None. Redirects, password protection and CORS are paid ROUTER, AUTH and CORS files. |
When Surge is the better choice
- You want one terminal command and nothing else to learn.
- You publish many small projects with free custom domains.
When thin.host is the better choice
- Agents deploy for you through MCP tools in Claude Code, Cursor, ChatGPT and other clients.
- Password or email-allowlist protection is part of the dashboard, not a paid file.
- The app also needs transactional email.
Moving from Surge to thin.host
- Your local project folder is already the build.
- Publish the folder: ask your agent to publish it to thin.host (MCP), or zip it and run
curl -F file=@site.zip -H "Authorization: Bearer $THINHOST_API_KEY" https://thin.host/v1/websites/archive. Check the site at its/s/<slug>/preview URL. - Single-page apps: rename Surge's
200.htmlfallback to404.html. thin.host serves it for any path that is not a file. - Move the domain: add it to the site under Custom Domains in the thin.host dashboard, change its DNS record to the CNAME the dashboard shows (cname.thin.host), and remove it from Surge (tear the project down with the Surge CLI) once thin.host's certificate is live.
What does not carry over
- The CNAME file (the domain is set in the dashboard)
- 200.html (use 404.html)
- ROUTER, AUTH and CORS files
- .surgeignore (zip only what you want deployed)
Deploy commands for your framework are in the deploy guides; agent setup is in Quickstart (MCP).
FAQ
What replaces Surge's 200.html?
Name the file 404.html. thin.host serves 404.html for any path that is not a file, so a single-page app boots on deep links; the response status is 404.
Can I deploy to thin.host without an account?
No. Sign up (free), then deploy with an API key, the MCP server or the dashboard's upload page.
Do I have to move my DNS provider?
No. Keep DNS where it is and create the record the dashboard shows, a CNAME to cname.thin.host. TLS is issued automatically once it resolves.
Sources
Surge facts checked on 2026-10-14 against: