Documentation
Ship a static site
in under a minute.
type: how-to · last_updated: 2026-07-20 · related: /product.html, /pricing.html
Getting started
Triangle turns a folder of static files into a live URL. There's nothing to install and no build server to configure. The fastest path:
1. Open the dashboard → /dashboard.html
2. Drag a folder, a single .html file, or a .zip onto the page
3. Name the project and press Deploy ▲
4. Watch the build log, then click your live URL
/dist export, or a design tool's export. If there's an index.html, it just works.Three ways to deploy
Drop, Import, and Starter all converge on the same build-log theater and success beat. Pick by where your code lives:
| Drop | Import | Starter | |
|---|---|---|---|
| Best for | A folder you already have | An existing Git repo | Starting from scratch |
| Needs Git | No | Yes | No |
| Creates | A new deployment | A wired project | A copy you own |
| Build step | Auto-detected | Editable presets | Pre-configured |
| Time to live | ~2s | ~2s | ~2s |
The build log
Every deploy streams a live monospace log, sectioned by phase — clone → install → build → upload — with the tail always pinned to the newest line and a timestamp on every entry. Statuses move Queued → Building → Ready (or Error, which lands you on diagnostics, not a dead end).
Secret masking. Any environment value 32 characters or longer that appears in the log is automatically replaced with [REDACTED]. Common token shapes (sk-…, ghp_…, AKIA…) are masked regardless of length.
07:44:21 Detected framework: Static
07:44:21 API_KEY: value ≥32 chars → [REDACTED]
07:44:22 ▲ my-site-lucid8k2.ship.now
07:44:22 Deployment completed ✓
Instant rollback
Rolling back repoints your production alias at a previous deployment. It's instantaneous because nothing rebuilds — the files already exist on the edge.
Dashboard → Overview → Production Deployment tile
→ Instant Rollback
→ confirm current vs. previous
→ Confirm Rollback
The rolled-back state is sticky: automatic production assignment turns off (a new push won't silently overwrite the rollback) and an Undo Rollback button appears on the tile. Hobby can roll back to the previous deployment; Pro to any deployment ever aliased to production.
Custom domains
Custom domains work on every plan, including Hobby. Point a domain at a deployment by adding it in Project Settings and creating the DNS record we show you. The default *.ship.now subdomain always keeps working alongside it.
Starters
A starter is a real, self-contained static site plus a one-click deploy. Deploying one copies it into your own space and runs the same build — you own the code from second one. Browse them in the gallery.
Limits & the stop-line
The honest boundaries of a static host:
- Static only. No serverless functions or server runtime — this is the stop-line. Client-side JS is fine; server code is not.
- File size. Up to 20 MB per file in a single upload.
- Build timeout. Builds hard-stop at 45 minutes (static deploys finish in seconds).
- Build cache. Up to 1 GB retained ~1 month for fast rebuilds.
The .md twin
Every docs page is also served as raw markdown — append .md to any docs URL for the agent-readable source, complete with YAML frontmatter (type, last_updated, related). Our docs are built for humans and LLMs alike.
GET /docs.md
---
type: how-to
last_updated: 2026-07-20
related: [/product, /pricing]
---
# Ship a static site in under a minute …
Docs are nice. Shipping is nicer.
You've read enough. Drag a folder and get your live URL.