# Share an Eleventy Build — _site/ at a Link, No Deploy

Canonical: https://commareports.com/share-eleventy-site
Published: 2026-08-31

> Eleventy writes _site/ and hands you a folder. Publish it to Comma for a preview URL where reviewers can comment on the rendered page instead of the markdown.

# Share an Eleventy build

Eleventy's output is exactly what you told it to emit — usually `_site/`, a
tree of HTML with whatever assets your templates reference. That is a good
property right up to the moment you want someone else to look at it, at which
point you have a folder and they have an email client.

## Build

```bash
npx @11ty/eleventy         # → _site/
```

If your templates use absolute asset paths, route them through the `url`
filter so a non-root location still resolves:

```njk
<link rel="stylesheet" href="{{ '/css/main.css' | url }}">
```

## Publish \_site/

Drag `_site/` (or a zip of it) into [the app](https://commareports.com/):

- `index.html` becomes the **report body**.
- Pages, stylesheets, scripts, fonts and images upload as assets, and their
  references are rewritten to the uploaded copies.
- Scripts run inside a sandboxed iframe (`allow-scripts`, no
  `allow-same-origin`), so client-side search and interactive components work.

A preview URL with no host, no deploy, nothing to clean up afterwards.

## Per-PR previews

```bash
npx @11ty/eleventy

curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html _site/index.html \
        --arg title "Preview — $GITHUB_HEAD_REF" '{title: $title, html: $html}')"
```

One report id per branch: the link in the PR description never changes, and
every push appends a revision.

## What review adds

- **Anchored threads** on the rendered copy — the reason to send a build
  rather than a diff. See [commenting on HTML](/comment-on-html).
- **Revisions**, so "applied" is checkable rather than claimed.
- **Access per report** — private, team, domain-gated, or named reviewers, so
  unpublished content stays unpublished. See the
  [sharing model](/docs/sharing).

## Limits

- **Entry HTML: 5 MB.** Assets: 25 MB per file, 250 MB and 500 files total.
  Publish the section under review rather than a large archive.
- **60 requests/minute per token.**

## Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision
history.

**[Publish a site preview →](https://commareports.com/)**

### Related

- [Share a Jekyll build](/share-jekyll-site) · [Share a Hugo site](/share-hugo-site)
- [Share an Astro build](/share-astro-site) · [Share a VitePress site](/share-vitepress-site)
- [Why report CSS breaks](/html-report-broken-css) · [Commenting on HTML](/comment-on-html)
