# Share a Jekyll Build — Preview _site/ Without Deploying

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

> jekyll build writes _site/ with absolute asset paths that break outside a server root. Publish it to Comma for a preview URL with comments on the page.

# Share a Jekyll build

The gap in every Jekyll workflow is the same: `bundle exec jekyll serve` gives
_you_ a preview, and everyone else gets either a deploy or a screenshot. For a
copy review on an unpublished post, both are wrong.

## Build for a non-root location

Jekyll layouts habitually reference assets absolutely — `/assets/main.css` —
which resolves against the _server_ root. That is why `_site/index.html`
opened from disk renders as unstyled markup. Two fixes, both worth doing:

```bash
bundle exec jekyll build --baseurl ''
```

and in your layouts, prefer the filter over a bare slash:

```liquid
<link rel="stylesheet" href="{{ '/assets/main.css' | relative_url }}">
```

Include drafts when the point is reviewing unpublished copy:

```bash
bundle exec jekyll build --drafts
```

## Publish \_site/

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

- `index.html` becomes the **report body**.
- Every page, stylesheet, script, font and image uploads as an asset and its
  reference is rewritten to the uploaded copy.
- Scripts run inside a sandboxed iframe (`allow-scripts`, no
  `allow-same-origin`), so search and interactive components work.

A preview URL without a deploy, a preview branch, or a second host.

## From CI, per branch

```bash
bundle exec jekyll build --drafts

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 "Site preview — $GITHUB_HEAD_REF" \
        '{title: $title, html: $html}')"
```

One report id per branch gives each PR a stable preview link; PATCH it on
every push and the link always shows the current build.

## What review adds

- **Anchored threads** on the copy — the whole reason to send a preview rather
  than a screenshot. See [commenting on HTML](/comment-on-html).
- **Revisions**, so "did you apply the edit?" is a diff of the two builds.
- **Access per report** — private, team, domain-gated, or named reviewers, so
  an unpublished post stays unpublished. See the
  [sharing model](/docs/sharing).

## Limits

- **Entry HTML: 5 MB.** Assets: 25 MB per file, 250 MB and 500 files total.
  An image-heavy blog archive is the case that hits the file cap — publish the
  section under review rather than the whole site.
- **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 Hugo site](/share-hugo-site) · [Share an Eleventy site](/share-eleventy-site)
- [Share an Astro build](/share-astro-site) · [Share a Docusaurus site](/share-docusaurus-site)
- [Why report CSS breaks](/html-report-broken-css) · [Commenting on HTML](/comment-on-html)
