How deployment URLs are built
Commit, branch, and production URL patterns on Easel, and where to find them in the dashboard.
This page covers generated HTTPS URLs for commits, branches, and production. You will find where they appear in the dashboard, how Easel builds each pattern, and how truncation and anti-phishing shortening work.
Where to view generated URLs
You can open generated URLs in the dashboard:
- Open your workspace and select the project.
- Open the Deployments tab.
- Select a deployment to open its detail page.
On the deployment detail page, the Domains section shows:
- Primary URL (globe icon): the main URL for this deployment (commit-style when available). Use Visit to open it.
- +N: when more than one non-Git URL exists, hover the +N badge for the Assigned Domains list.
- Branch URL (branch icon): always points to the latest deployment for that Git branch.
- Commit URL (commit icon): always points to this specific deployment (tied to the Git commit hash).
All generated URLs use the suffix preview.easelusercontent.com and are reachable over HTTPS.
URL components
Generated URLs use these pieces. The pattern depends on whether the URL is for a commit, a branch, or production:
| Component | Description | Used in |
|---|---|---|
| Project slug | Slugified project name | All URL types |
| Commit hash | First 9 alphanumeric chars of the Git commit hash | Commit URL only |
| Scope slug | Slugified workspace or team name (capped in length) | All URL types |
| Branch slug | Slugified Git branch name (for example feature-xyz from feature/xyz) | Branch URL only |
Easel slugifies project and scope names: lowercased, non-alphanumeric characters become hyphens, and extra hyphens collapse. Branch names with slashes become hyphens (for example main stays main, feature/foo becomes feature-foo).
Commit URL
The commit URL is unique to a single deployment. It uses the Git commit hash so the URL matches the exact version you deployed.
Pattern:
Example for project My App, commit a1b2c3d4e, and scope acme:
Use this URL when you want to share or bookmark a specific deployment. It does not change when you push new commits.
Branch URL
The branch URL always points to the latest deployment for that branch. Every new deploy for the same branch updates what the URL serves.
Pattern:
Example for project My App, branch main, and scope acme:
Use this URL for ongoing review or staging. The hostname stays the same while always showing the latest build for that branch.
Production URL
When you deploy to production, Easel also creates a production URL. It always points to the latest production deployment for that project.
Pattern:
Example for project My App and scope acme:
Only one production URL exists per project and scope. It updates whenever you deploy to production.
Truncation when names are long
The subdomain (the part before .preview.easelusercontent.com) must be at most 63 characters. If the combined slug would be longer, Easel shortens it so the URL stays valid:
- Scope first: Easel shortens the scope segment so the project name stays readable. Scope is also capped when the URL is built.
- Hard cap at 63: if the result is still over 63 characters, Easel keeps the first 63 characters of the subdomain. You keep project and branch or commit, and may lose the end of the scope.
You do not need to act; truncation is automatic. If you rely on shareable URLs, keep project and workspace names reasonably short so the full scope remains in the URL.
Anti-phishing protection
If the slugified project name looks like a domain name (for example www-mycompany-com), Easel shortens it to avoid browser anti-phishing warnings. For example, a project that slugifies to www-mycompany-com might appear as mycompany in the URL.
This only affects the project segment. Branch, commit hash, and scope are unchanged. If your project name is not domain-like, no shortening occurs.
Limitations
- Long names: if project or workspace names are long, Easel truncates the scope (and in rare cases more). Use shorter names when you need predictable, shareable URLs.
- Custom domains: generated URLs on this page are separate from your own hostnames. Attach a domain in project settings; see Custom domains.
- Missing URLs: if a deployment has no URLs yet, the build or manifest upload may still be in progress. Wait for a completed state and refresh the deployment page.
Example URLs at a glance
| Type | Example URL |
|---|---|
| Commit | my-app-a1b2c3d4e-acme.preview.easelusercontent.com |
| Branch | my-app-git-main-acme.preview.easelusercontent.com |
| Production | my-app-acme.preview.easelusercontent.com |
Prefix any of these with https:// when opening or sharing.
Related guides
- Deployments: how deployments are created and managed
- Environments: preview vs production and when each URL type is created
- Custom domains: serve production on your hostname with automatic TLS