# Broker Configuration Properties

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [streaming-full.txt](https://docs.redpanda.com/streaming-full.txt)

---
title: Broker Configuration Properties
latest-operator-version: v26.1.4
# EOL = End-of-Life (support lifecycle status)
page-is-nearing-eol: "false"
page-is-past-eol: "true"
page-eol-date: April 30, 2025
latest-console-tag: v3.7.3
latest-connect-version: 4.93.0
docname: properties/broker-properties
page-component-name: streaming
page-version: "24.1"
page-component-version: "24.1"
page-component-title: Streaming
page-relative-src-path: properties/broker-properties.adoc
page-edit-url: https://github.com/redpanda-data/docs/edit/v/24.1/modules/reference/pages/properties/broker-properties.adoc
description: Reference of broker configuration properties.
page-git-created-date: "2024-05-23"
page-git-modified-date: "2024-12-12"
support-status: past end-of-life
---

<!-- Source: https://docs.redpanda.com/streaming/24.1/reference/properties/broker-properties.md -->

Broker configuration properties are applied individually to each broker in a cluster. You can find and modify these properties in the `redpanda.yaml` configuration file.

For information on how to edit broker properties, see [Configure Broker Properties](https://docs.redpanda.com/streaming/24.1/manage/cluster-maintenance/node-property-configuration/).

> 📝 **NOTE**
>
> All broker properties require that you restart Redpanda for any update to take effect.

## [](#broker-configuration)Broker configuration

### [](#admin)admin

Network address for the [Admin API](https://docs.redpanda.com/streaming/24.1/reference/glossary/#admin-api) server.

**Optional:** Yes

**Visibility:** `user`

**Default:** `127.0.0.1:9644`

* * *

### [](#admin_api_doc_dir)admin_api_doc_dir

Path to the API specifications for the Admin API.

**Optional:** Yes

**Visibility:** `user`

**Type:** string

**Default:** `/usr/share/redpanda/admin-api-doc`

* * *

### [](#admin_api_tls)admin_api_tls

Specifies the TLS configuration for the HTTP Admin API.

**Optional:** Yes

**Visibility:** `user`

**Default:** `null`

* * *

### [](#crash_loop_limit)crash_loop_limit

A limit on the number of consecutive times a broker can crash within one hour before its crash-tracking logic is reset. This limit prevents a broker from getting stuck in an infinite cycle of crashes.

If `null`, the property is disabled and no limit is applied.

The crash-tracking logic is reset (to zero consecutive crashes) by any of the following conditions:

-   The broker shuts down cleanly.

-   One hour passes since the last crash.

-   The `redpanda.yaml` broker configuration file is updated.

-   The `startup_log` file in the broker’s [data\_directory](#data_directory) is manually deleted.


**Units**: number of consecutive crashes of a broker

**Optional:** No

**Visibility:** `user`

**Type:** integer

**Accepted values:** \[`0`, `4294967295`\]

**Default:** `5`

* * *

### [](#data_directory)data_directory

Path to the directory for storing Redpanda’s streaming data files.

**Optional:** Yes

**Visibility:** `user`

**Type:** string

**Default:** `null`

* * *

### [](#developer_mode)developer_mode

> ⚠️ **CAUTION**
>
> Enabling `developer_mode` isn’t recommended for production use.

Flag to enable developer mode, which skips most of the checks performed at startup.

**Optional:** Yes

**Visibility:** `tunable`

**Type:** boolean

**Default:** `false`

* * *

### [](#emergency_disable_data_transforms)emergency_disable_data_transforms

Override the cluster property [`data_transforms_enabled`](https://docs.redpanda.com/streaming/24.1/reference/properties/cluster-properties/#data_transforms_enabled) and disable Wasm-powered data transforms. This is an emergency shutoff button.

**Optional:** Yes

**Visibility:** `user`

**Type:** boolean

**Default:** `false`

* * *

### [](#empty_seed_starts_cluster)empty_seed_starts_cluster

Controls how a new cluster is formed. All brokers in a cluster must have the same value.

[See how the `empty_seed_starts_cluster` setting works with the `seed_servers` setting](#seed_servers) to form a cluster.

> 💡 **TIP**
>
> For backward compatibility, `true` is the default. Redpanda recommends using `false` in production environments to prevent accidental cluster formation.

**Optional:** Yes

**Visibility:** `user`

**Type:** boolean

**Default:** `true`

* * *

### [](#kafka_api)kafka_api

IP address and port of the Kafka API endpoint that handles requests.

**Optional:** Yes

**Visibility:** `user`

**Default:** `127.0.0.1:9092`

* * *

### [](#kafka_api_tls)kafka_api_tls

Transport Layer Security (TLS) configuration for the Kafka API endpoint.

**Optional:** Yes

**Visibility:** `user`

**Default:** `null`

* * *

### [](#memory_allocation_warning_threshold)memory_allocation_warning_threshold

Threshold for log messages that contain a larger memory allocation than specified.

**Unit:** bytes

**Optional:** No

**Visibility:** `tunable`

**Type:** integer

**Default:** `131073` (128\_kib + 1)

* * *

### [](#node_id)node_id

A number that uniquely identifies the broker within the cluster. If `null` (the default value), Redpanda automatically assigns an ID. If set, it must be non-negative value.

> ⚠️ **WARNING: Do not set node_id manually.**
>
> Do not set `node_id` manually.
>
> Redpanda assigns unique IDs automatically to prevent issues such as:
>
> -   Brokers with empty disks rejoining the cluster.
>
> -   Conflicts during recovery or scaling.
>
>
> Manually setting or reusing `node_id` values, even for decommissioned brokers, can cause cluster inconsistencies and operational failures.

Broker IDs are immutable. After a broker joins the cluster, its `node_id` **cannot** be changed.

**Accepted values:** \[`0`, `4294967295`\]

**Type:** integer

**Optional:** No

**Visibility:** `user`

**Default:** `null`

* * *

### [](#rack)rack

A label that identifies a failure zone. Apply the same label to all brokers in the same failure zone. When [enable\_rack\_awareness](https://docs.redpanda.com/streaming/24.1/reference/properties/cluster-properties/#enable_rack_awareness) is set to `true` at the cluster level, the system uses the rack labels to spread partition replicas across different failure zones.

**Optional:** No

**Visibility:** `user`

**Default:** `null`

* * *

### [](#recovery_mode_enabled)recovery_mode_enabled

If `true`, start Redpanda in [recovery mode](https://docs.redpanda.com/streaming/24.1/manage/recovery-mode/), where user partitions are not loaded and only administrative operations are allowed.

**Optional:** Yes

**Visibility:** `user`

**Type:** boolean

**Default:** `false`

* * *

### [](#rpc_server)rpc_server

IP address and port for the Remote Procedure Call (RPC) server.

**Optional:** Yes

**Visibility:** `user`

**Default:** `127.0.0.1:33145`

* * *

### [](#rpc_server_tls)rpc_server_tls

TLS configuration for the RPC server.

**Optional:** Yes

**Visibility:** `user`

* * *

### [](#seed_servers)seed_servers

List of the seed servers used to join current cluster. If the `seed_servers` list is empty the node will be a cluster root and it will form a new cluster.

-   When `empty_seed_starts_cluster` is `true`, Redpanda enables one broker with an empty `seed_servers` list to initiate a new cluster. The broker with an empty `seed_servers` becomes the cluster root, to which other brokers must connect to join the cluster. Brokers looking to join the cluster should have their `seed_servers` populated with the cluster root’s address, facilitating their connection to the cluster.

    > ❗ **IMPORTANT**
    >
    > Only one broker, the designated cluster root, should have an empty `seed_servers` list during the initial cluster bootstrapping. This ensures a single initiation point for cluster formation.

-   When `empty_seed_starts_cluster` is `false`, Redpanda requires all brokers to start with a known set of brokers listed in `seed_servers`. The `seed_servers` list must not be empty and should be identical across these initial seed brokers, containing the addresses of all seed brokers. Brokers not included in the `seed_servers` list use it to discover and join the cluster, allowing for expansion beyond the foundational members.

    > 📝 **NOTE**
    >
    > The `seed_servers` list must be consistent across all seed brokers to prevent cluster fragmentation and ensure stable cluster formation.


**Optional:** Yes

**Visibility:** `user`

**Type:** array

**Default:** `null`

* * *

### [](#storage_failure_injection_config_path)storage_failure_injection_config_path

Path to the configuration file used for low level storage failure injection.

**Optional:** No

**Visibility:** `tunable`

**Type:** string

**Default:** `null`

* * *

### [](#storage_failure_injection_enabled)storage_failure_injection_enabled

If `true`, inject low level storage failures on the write path. Do _not_ use for production instances.

**Optional:** Yes

**Visibility:** `tunable`

**Type:** boolean

**Default:** `false`

* * *

### [](#upgrade_override_checks)upgrade_override_checks

Whether to violate safety checks when starting a Redpanda version newer than the cluster’s consensus version.

**Optional:** Yes

**Visibility:** `tunable`

**Type:** boolean

**Default:** `false`

* * *

### [](#verbose_logging_timeout_sec_max)verbose_logging_timeout_sec_max

Maximum duration in seconds for verbose (`TRACE` or `DEBUG`) logging. Values configured above this will be clamped. If null (the default) there is no limit. Can be overridden in the Admin API on a per-request basis.

**Units:** seconds

**Optional:** No

**Visibility:** `tunable`

**Type:** integer

**Accepted values:** \[`-17179869184`, `17179869183`\]

**Default:** `null`

* * *

## [](#schema-registry)Schema Registry

The Schema Registry provides configuration properties to help you enable producers and consumers to share information needed to serialize and deserialize producer and consumer messages.

For information on how to edit broker properties for the Schema Registry, see [Configure Broker Properties](https://docs.redpanda.com/streaming/24.1/manage/cluster-maintenance/node-property-configuration/).

### [](#schema_registry_api)schema_registry_api

Specifies the listener address and port in the Schema Registry API.

**Optional:** Yes

**Visibility:** `None`

**Default:** `127.0.0.1:8081`

* * *

### [](#schema_registry_api_tls)schema_registry_api_tls

TLS configuration for Schema Registry API.

**Optional:** Yes

**Visibility:** `None`

**Default:** `null`

* * *

### [](#schema_registry_replication_factor)schema_registry_replication_factor

Replication factor for internal `_schemas` topic. If unset, defaults to `default_topic_replication`.

**Optional:** No

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-32768`, `32767`\]

**Default:** `null`

**Related topics:**

-   Cluster property [`default_topic_replication`](https://docs.redpanda.com/streaming/24.1/reference/properties/cluster-properties/#default_topic_replication)

-   Topic property [`default_topic_replication`](https://docs.redpanda.com/streaming/24.1/reference/properties/topic-properties/#default_topic_replication)


* * *

## [](#http-proxy)HTTP Proxy

Redpanda HTTP Proxy allows access to your data through a REST API. For example, you can list topics or brokers, get events, produce events, subscribe to events from topics using consumer groups, and commit offsets for a consumer.

See [Use Redpanda with the HTTP Proxy API](https://docs.redpanda.com/streaming/24.1/develop/http-proxy/)

### [](#advertised_pandaproxy_api)advertised_pandaproxy_api

Network address for the HTTP Proxy API server to publish to clients.

**Optional:** Yes

**Visibility:** `None`

**Default:** `null`

* * *

### [](#api_doc_dir)api_doc_dir

Path to the API specifications for the HTTP Proxy API.

**Optional:** Yes

**Visibility:** `None`

**Type:** string

**Default:** `/usr/share/redpanda/proxy-api-doc`

* * *

### [](#mode_mutability)mode_mutability

Enable modifications to the read-only `mode` of the Schema Registry. When set to `true`, the entire Schema Registry or its subjects can be switched to `READONLY` or `READWRITE`. This property is useful for preventing unwanted changes to the entire Schema Registry or specific subjects.

**Nullable:** No

**Visibility:** `user`

**Type:** boolean

**Default:** `true`

* * *

### [](#client_cache_max_size)client_cache_max_size

The maximum number of Kafka client connections that Redpanda can cache in the LRU (least recently used) cache. The LRU cache helps optimize resource utilization by keeping the most recently used clients in memory, facilitating quicker reconnections for frequent clients while limiting memory usage.

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Default:** `10`

* * *

### [](#client_keep_alive)client_keep_alive

Time, in milliseconds, that an idle client connection may remain open to the HTTP Proxy API.

**Units** : milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `300000`

* * *

### [](#consumer_instance_timeout)consumer_instance_timeout

How long to wait for an idle consumer before removing it. A consumer is considered idle when it’s not making requests or heartbeats.

**Units**: milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `300000` (5min)

* * *

### [](#pandaproxy_api)pandaproxy_api

Specifies the listener address and port for the Rest API.

**Optional:** Yes

**Visibility:** `None`

**Default:** `127.0.0.1:8082`

* * *

### [](#pandaproxy_api_tls)pandaproxy_api_tls

TLS configuration for Pandaproxy api.

**Optional:** Yes

**Visibility:** `None`

**Default:** `null`

* * *

## [](#http-proxy-client)HTTP Proxy Client

Configuration options for HTTP Proxy Client.

### [](#broker_tls)broker_tls

TLS configuration for the Kafka API servers to which the HTTP Proxy client should connect.

**Optional:** Yes

**Visibility:** `None`

**Default:** `config::tls_config()`

* * *

### [](#brokers)brokers

Network addresses of the Kafka API servers to which the HTTP Proxy client should connect.

**Optional:** Yes

**Visibility:** `None`

**Type:** array

**Default:** `["127.0.0.1:9092"]`

* * *

### [](#client_identifier)client_identifier

Custom identifier to include in the Kafka request header for the HTTP Proxy client. This identifier can help debug or monitor client activities.

**Optional:** No

**Visibility:** `None`

**Type:** string

**Default:** `test_client`

* * *

### [](#consumer_heartbeat_interval)consumer_heartbeat_interval

Interval (in milliseconds) for consumer heartbeats.

**Units**: milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `500`

* * *

### [](#consumer_rebalance_timeout)consumer_rebalance_timeout

Timeout (in milliseconds) for consumer rebalance.

**Units**: milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `200`

* * *

### [](#consumer_request_max_bytes)consumer_request_max_bytes

Maximum bytes to fetch per request.

**Units**: bytes

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-2147483648`, `2147483647`\]

**Default:** `1048576`

* * *

### [](#consumer_request_min_bytes)consumer_request_min_bytes

Minimum bytes to fetch per request.

**Units**: bytes

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-2147483648`, `2147483647`\]

**Default:** `1`

* * *

### [](#consumer_request_timeout)consumer_request_timeout

Interval (in milliseconds) for consumer request timeout.

**Units**: milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `100`

* * *

### [](#consumer_session_timeout)consumer_session_timeout

Timeout (in milliseconds) for consumer session.

**Units**: milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `10000`

* * *

### [](#produce_ack_level)produce_ack_level

Number of acknowledgments the producer requires the leader to have received before considering a request complete.

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** `-1`,`0`,`1`

**Default:** `-1`

* * *

### [](#produce_batch_delay)produce_batch_delay

Delay (in milliseconds) to wait before sending batch.

**Units**: milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `100`

* * *

### [](#produce_batch_record_count)produce_batch_record_count

Number of records to batch before sending to broker.

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-2147483648`, `2147483647`\]

**Default:** `1000`

* * *

### [](#produce_batch_size_bytes)produce_batch_size_bytes

Number of bytes to batch before sending to broker.

**Units**: bytes

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-2147483648`, `2147483647`\]

**Default:** `1048576`

* * *

### [](#produce_compression_type)produce_compression_type

Enable or disable compression by the Kafka client. Specify `none` to disable compression or one of the supported types \[gzip, snappy, lz4, zstd\].

**Optional:** Yes

**Visibility:** `None`

**Type:** string

**Accepted values:** `gzip`, `snappy`, `lz4`, `zstd`

**Default:** `none`

* * *

### [](#produce_shutdown_delay)produce_shutdown_delay

Delay (in milliseconds) to allow for final flush of buffers before shutting down.

**Units**: milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `0`

* * *

### [](#retries)retries

Number of times to retry a request to a broker.

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Default:** `5`

* * *

### [](#retry_base_backoff)retry_base_backoff

Delay (in milliseconds) for initial retry backoff.

**Units**: milliseconds

**Optional:** Yes

**Visibility:** `None`

**Type:** integer

**Accepted values:** \[`-17592186044416`, `17592186044415`\]

**Default:** `100`

* * *

### [](#sasl_mechanism)sasl_mechanism

The SASL mechanism to use when connecting.

**Optional:** Yes

**Visibility:** `None`

**Type:** string

**Default:** `null`

* * *

### [](#scram_password)scram_password

Password to use for SCRAM authentication mechanisms.

**Optional:** Yes

**Visibility:** `None`

**Type:** string

**Default:** `null`

* * *

### [](#scram_username)scram_username

Username to use for SCRAM authentication mechanisms.

**Optional:** Yes

**Visibility:** `None`

**Type:** string

**Default:** `null`

* * *