# Share a golangci-lint HTML Report — Go Lint Findings at a URL

Canonical: https://commareports.com/share-golangci-lint-report
Published: 2026-08-31

> golangci-lint writes HTML natively. Publish the page to Comma for a link the team can triage on, with anchored threads per finding and a revision per run.

# Share a golangci-lint HTML report

golangci-lint is unusual among linters in that it ships an HTML writer — you
do not need a converter, a SARIF hop, or a third-party template. What it does
not ship is anywhere to put the file.

## Write the page

v2:

```bash
golangci-lint run --output.html.path lint.html || true
```

v1:

```bash
golangci-lint run --out-format html > lint.html || true
```

The `|| true` is not optional in a report step — golangci-lint exits non-zero
whenever it finds anything, and those are the runs whose report matters.

Keep the gate separate:

```yaml
- name: Lint gate
  run: golangci-lint run

- name: Lint report
  if: always()
  run: golangci-lint run --output.html.path lint.html || true
```

## Publish it

Drag `lint.html` into [the app](https://commareports.com/), or from CI:

```bash
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 lint.html \
        --arg title "golangci-lint — $GITHUB_REF_NAME" \
        '{title: $title, html: $html}')"
```

The page is self-contained, so this is the whole publish — no asset step.

## What the URL buys you

- **A stable link** per repo. PATCH one report id and every run appends a
  revision, so enabling a new linter shows up as a step change you can point
  at rather than describe.
- **Anchored threads** on the finding — ownership and exclusions recorded next
  to the evidence. See [commenting on HTML](/comment-on-html).
- **Access per report** — private, team, domain-gated, or named reviewers.
  See the [sharing model](/docs/sharing).

## Scheduling it

A [routine](/features/routines/scheduled-html-reports) re-running weekly
against `main` keeps the report honest between PRs, which is when lint debt
actually accumulates.

## Limits

- **Entry HTML: 5 MB.** Assets: 25 MB per file, 250 MB and 500 files total.
- **60 requests/minute per token.**

## Try it

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

**[Publish a lint report →](https://commareports.com/)**

### Related

- [Share a Go test report](/share-go-test-report) · [Share a Ruff report](/share-ruff-report)
- [Share an ESLint report](/share-eslint-report) · [Share a Semgrep report](/share-semgrep-report)
- [Publish from CI](/docs/ci) · [Scheduled reports](/features/routines/scheduled-html-reports)
