Quarto Pub alternatives for private documents

quarto publish quarto-pub is the shortest distance between a .qmd and a URL, and for public work it is excellent — free, fast, no account plumbing beyond the first login.

Then someone renders the quarterly numbers with it, and the fact that the free service publishes to the open web stops being a detail.

Where Quarto Pub stops

  • Public by default is the whole model. The free service is a publishing surface for open work. There is no per-document team, no email-domain gate, no named viewer list.
  • No comment layer. Quarto renders beautiful documents that people immediately want to argue with, and there is nowhere in the document for the argument to go.
  • Overwrite, not history. Re-publishing replaces what was there. "What did the forecast say before we changed the assumption?" has no answer.
  • One-command publishing is IDE-shaped. It works from CI with a token, but the artifact that lands is still a public site, so scheduled internal reports end up somewhere else anyway.

The shortlist

1. Comma — render with Quarto, publish to an access-controlled URL

Nothing about the Quarto side changes. Render to a self-contained file and publish the file:

quarto render report.qmd --to html -M embed-resources:true

curl -X POST https://commareports.com/api/v1/reports \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --arg h "$(cat report.html)" \
        '{title:"Q3 forecast", html:$h, visibility:"team"}')"

embed-resources: true matters: it inlines CSS, JS, fonts and images so the document is one portable file, which is exactly what a report destination wants. Observable JS cells, plotly figures and cross-references keep working — the report renders in a sandboxed iframe with scripts enabled.

What you get on top: private / team / domain / link visibility, anchored comment threads on any paragraph, table cell or figure, and revisions at one id — re-PATCH next quarter and the link you already circulated shows the new render with the old ones still diffable.

Not for: hosting a multi-page Quarto website with routing. Publish those as a zip bundle, or keep them on a static host.

Pricing: Free — unlimited reports, viewers, commenters and revisions. Team and Enterprise are sales-led.

See the Quarto integration →

2. GitHub Pages — versioned, free, public unless you pay a lot

quarto publish gh-pages is a first-class target and git gives you real history. Private Pages requires GitHub Enterprise. No comments on the rendered page. See GitHub Pages alternatives.

3. Netlify / Cloudflare Pages — when it is actually a site

quarto publish netlify exists, and for a Quarto book or website with dozens of pages a real static host is the correct answer. Access control means adding Netlify's password protection or Cloudflare Access on top. See Cloudflare Access alternatives.

4. Posit Connect — scheduled execution behind your own login

If the .qmd needs to run on a schedule against internal data with SSO in front of it, this is the product built for that. It is also a licensed server you now operate. See Posit Connect alternatives.

At a glance

Destination Access control Versions Comments Best for
Comma Private → public, 5 Yes Yes, anchored Single-document reports
Quarto Pub Public (free service) No No Open work, papers, talks
GitHub Pages Enterprise only Via git No Docs that ship with a repo
Netlify / CF Add-on / paid Deploys No Quarto websites and books
Posit Connect SSO Yes No Scheduled R/Python execution

Checked September 2026. Verify current plans before committing.

How to choose

  • A paper, a tutorial, a talk? Quarto Pub. Public is the point.
  • A book or a docs site? A static host — the multi-page shape is what they are for.
  • One rendered document that a team responds to, every week? That is a report, not a site. Publish it where the replies can land.

Related