﻿---
title: changelog render cli command
description: Generate markdown or asciidoc files from changelog bundle files. To create bundle files, use changelog bundle cli command. For details and examples, go...
url: https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/3805/cli/changelog/render
products:
  - Elastic Docs Builder
---

# changelog render cli command
```bash
docs-builder changelog render [options]
```

Generate markdown or asciidoc files from changelog bundle files.
To create bundle files, use [changelog bundle cli command](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/3805/cli/changelog/bundle).
For details and examples, go to [Publish changelogs](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/3805/data/release-notes/publish).
The `render` command automatically discovers and merges `.amend-*.yaml` files with their parent bundle. For more information, go to [changelog bundle-amend cli command](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/3805/cli/changelog/bundle-amend).
The `changelog render` command does **not** use `rules.publish` for filtering. Filtering must be done at bundle time using `rules.bundle`. For how the directive differs, see the [{changelog} directive syntax reference](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/3805/syntax/changelog).

## Options

<definitions>
  <definition term="--input string[]">
    Required: Bundle input(s) in format "bundle-file-path|repo|link-visibility" (use pipe as delimiter). To merge multiple bundles, separate them with commas. Only bundle-file-path is required. link-visibility can be "hide-links" or "keep-links" (default). Use "hide-links" for private repositories; when set, all PR and issue links for each affected entry are hidden (entries may have multiple links via the prs and issues arrays). Paths support tilde (~) expansion and relative paths.
    **Repeatable:** pass `--input` multiple times to supply more than one value
  </definition>
  <definition term="--config string">
    Optional: Path to the changelog.yml configuration file. Defaults to 'docs/changelog.yml'
    **Constraints:** symbolic links not allowed, must exist, extensions: yml, yaml
  </definition>
  <definition term="--file-type string">
    Optional: Output file type. Valid
    **Values:** "markdown", "asciidoc", or "gfm". Defaults to "markdown"
    **Default:** `markdown`
  </definition>
  <definition term="--hide-features string[]">
    Filter by feature IDs (comma-separated), or a path to a newline-delimited file containing feature IDs. Can be specified multiple times. Entries with matching feature-id values will be commented out in the output.
    **Repeatable:** pass `--hide-features` multiple times to supply more than one value
  </definition>
  <definition term="--output string">
    Optional: Output directory for rendered files. Defaults to current directory
  </definition>
  <definition term="--[no-]subsections">
    Optional: Group entries by area/component in subsections. For breaking changes with a subtype, groups by subtype instead of area. Defaults to false
    **Default:** `false`
  </definition>
  <definition term="--[no-]dropdowns">
    Render separated types (breaking changes, deprecations, known issues, highlights) as MyST dropdowns. Defaults to false (flattened bulleted lists). When used, each entry in separated files is rendered as a collapsible dropdown section using MyST syntax (`::::{dropdown}`). When it's not used, entries are rendered as flattened bulleted lists with PR/issue links inline and `Impact` and `Action` sections indented. This flag affects only markdown output; AsciiDoc output always uses its standard format.
    **Default:** `false`
  </definition>
  <definition term="--[no-]no-descriptions">
    Hide changelog entry descriptions from output. Entry titles, PR/issue links, and `Impact` / `Action` sections remain visible. Bundle-level descriptions are unaffected. Applies to all output formats (markdown, asciidoc, gfm). Defaults to false.
    **Default:** `false`
  </definition>
  <definition term="--title string">
    The title to use for section headers, directories, and anchors in output files. Defaults to the version in the first bundle. When omitted, ISO date targets are formatted for display the same way as the `{changelog}` directive (for example, `2026-05-04` becomes "May 4, 2026", `2026-05` becomes "May 2026"), while directory names and heading anchors continue to use the raw target slug. If the string contains spaces, they are replaced with dashes when used in directory names and anchors.
  </definition>
  <definition term="-l --log-level enum">
    Minimum log level.
    **Values:** trace, debug, information, warning, error, critical, none
    **Default:** `information`
  </definition>
  <definition term="-c --config-source enum">
    Override the configuration source: local, remote
    **Values:** local, remote, embedded
  </definition>
  <definition term="--[no-]skip-private-repositories">
    Skip cloning private repositories
  </definition>
</definitions>


## Global Options

<definitions>
  <definition term="-l --log-level enum">
    Minimum log level.
    **Values:** trace, debug, information, warning, error, critical, none
    **Default:** `information`
  </definition>
  <definition term="-c --config-source enum">
    Override the configuration source: local, remote
    **Values:** local, remote, embedded
  </definition>
  <definition term="--[no-]skip-private-repositories">
    Skip cloning private repositories
  </definition>
</definitions>


## Examples

```sh
# Render a single bundle
docs-builder changelog render \
  --input "./docs/changelog/bundles/9.3.0.yaml" \
  --output ./release-notes

# Render with an explicit repo (for PR/issue link generation)
docs-builder changelog render \
  --input "~/docs/changelog/bundles/9.3.0.yaml|elasticsearch" \
  --output ~/release-notes

# Merge multiple bundles
docs-builder changelog render \
  --input "./bundles/elasticsearch-9.3.0.yaml|elasticsearch,./bundles/kibana-9.3.0.yaml|kibana" \
  --output ./merged-release-notes

# Hide links from a private repository bundle
docs-builder changelog render \
  --input "./public-bundle.yaml|elasticsearch|keep-links,./private-bundle.yaml|internal-repo|hide-links" \
  --output ./release-notes

# Render with subsections and flattened format (default)
docs-builder changelog render \
  --input "./docs/changelog/bundles/9.3.0.yaml" \
  --output ./release-notes \
  --subsections

### Render with dropdown format
docs-builder changelog render \
  --input "./docs/changelog/bundles/9.3.0.yaml" \
  --output ./release-notes \
  --dropdowns

# Render as GitHub Flavored Markdown
docs-builder changelog render \
  --input "./docs/changelog/bundles/9.3.0.yaml" \
  --output ./release-notes \
  --file-type gfm

# Render without entry descriptions (titles, links, Impact/Action still shown)
docs-builder changelog render \
  --input "./docs/changelog/bundles/9.3.0.yaml" \
  --output ./release-notes \
  --no-descriptions
```