# Topic 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: Topic Configuration Properties
latest-redpanda-tag: v26.1.9
latest-console-tag: v3.7.3
latest-operator-version: v26.1.4
# EOL = End-of-Life (support lifecycle status)
page-is-nearing-eol: "false"
page-is-past-eol: "false"
page-eol-date: March 31, 2027
latest-connect-version: 4.93.0
docname: properties/topic-properties
page-component-name: streaming
page-version: "26.1"
page-component-version: "26.1"
page-component-title: Streaming
page-relative-src-path: properties/topic-properties.adoc
page-edit-url: https://github.com/redpanda-data/docs/edit/main/modules/reference/pages/properties/topic-properties.adoc
description: Reference of topic configuration properties.
page-git-created-date: "2024-05-23"
page-git-modified-date: "2026-03-31"
support-status: supported
---

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

A topic-level property sets a Redpanda or Kafka configuration for a particular topic.

Many topic-level properties have corresponding [cluster properties](https://docs.redpanda.com/streaming/current/manage/cluster-maintenance/cluster-property-configuration/) that set a default value for all topics of a cluster. To customize the value for a topic, you can set a topic-level property that overrides the value of the corresponding cluster property.

For information on how to configure topic properties, see [Configure Topic Properties](https://docs.redpanda.com/streaming/current/manage/cluster-maintenance/topic-property-configuration/).

> ⚠️ **WARNING**
>
> All topic properties take effect immediately after being set. Do not modify properties on internal Redpanda topics (such as `__consumer_offsets`, `_schemas`, or other system topics) as this can cause cluster instability.

## [](#topic-property-mappings)Topic property mappings

| Topic Property | Corresponding Cluster Property |
| --- | --- |
| cleanup.policy | log_cleanup_policy |
| compression.type | log_compression_type |
| delete.retention.ms | tombstone_retention_ms |
| flush.bytes | raft_replica_max_pending_flush_bytes |
| flush.ms | raft_replica_max_flush_delay_ms |
| initial.retention.local.target.bytes | initial_retention_local_target_bytes_default |
| initial.retention.local.target.ms | initial_retention_local_target_ms_default |
| max.compaction.lag.ms | max_compaction_lag_ms |
| max.message.bytes | kafka_batch_max_bytes |
| message.timestamp.after.max.ms | log_message_timestamp_after_max_ms |
| message.timestamp.before.max.ms | log_message_timestamp_before_max_ms |
| message.timestamp.type | log_message_timestamp_type |
| min.cleanable.dirty.ratio | min_cleanable_dirty_ratio |
| min.compaction.lag.ms | min_compaction_lag_ms |
| redpanda.iceberg.delete | iceberg_delete |
| redpanda.iceberg.invalid.record.action | iceberg_invalid_record_action |
| redpanda.iceberg.partition.spec | iceberg_default_partition_spec |
| redpanda.leaders.preference | default_leaders_preference |
| redpanda.remote.read | cloud_storage_enable_remote_read |
| redpanda.remote.write | cloud_storage_enable_remote_write |
| redpanda.storage.mode | default_redpanda_storage_mode |
| retention.bytes | retention_bytes |
| retention.local.target.bytes | retention_local_target_bytes_default |
| retention.local.target.ms | retention_local_target_ms_default |
| retention.ms | log_retention_ms |
| segment.bytes | log_segment_size or compacted_log_segment_size |
| segment.ms | log_segment_ms |
| write.caching | write_caching_default |

* * *

## [](#retention-and-compaction-properties)Retention and Compaction Properties

These properties control how data is stored, for how long, and when it is deleted or compacted.

### [](#cleanup-policy)cleanup.policy

The cleanup policy to apply for log segments of a topic. When `cleanup.policy` is set, it overrides the cluster property [`log_cleanup_policy`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#log_cleanup_policy) for the topic.

**Values**:

-   `delete` - Deletes data according to size-based or time-based retention limits, or both.

-   `compact` - Deletes data according to a key-based retention policy, discarding all but the latest value for each key.

-   `compact,delete` - The latest values are kept for each key, while the remaining data is deleted according to retention limits.


| Property | Value |
| --- | --- |
| Type | string (enum) |
| Accepted Values | none, delete, compact |
| Corresponding cluster property | log_cleanup_policy |
| Default | delete |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | log_cleanup_policyConfigure segment sizeCompacted topics in Tiered Storagelog_cleanup_policy |

### [](#compaction-strategy)compaction.strategy

Specifies the strategy used to determine which records to remove during log compaction. The compaction strategy controls how Redpanda identifies and removes duplicate records while preserving the latest value for each key.

| Property | Value |
| --- | --- |
| Type | string |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | compaction_strategy |

### [](#delete-retention-ms)delete.retention.ms

The retention time for tombstone records in a compacted topic. Redpanda removes tombstone records after the retention limit is exceeded.

If you have enabled Tiered Storage and set [`redpanda.remote.read`](#redpandaremoteread) or [`redpanda.remote.write`](#redpandaremotewrite) for the topic, you cannot enable tombstone removal.

If both `delete.retention.ms` and the cluster property `[tombstone_retention_ms](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#tombstone_retention_ms)` are set, `delete.retention.ms` overrides the cluster level tombstone retention for an individual topic.

This property supports three states:

-   Positive value: Sets the milliseconds to retain tombstone records before removal.

-   0: Tombstone records are immediately eligible for removal.

-   Negative value: Disables tombstone removal entirely for this topic.


| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | milliseconds (integer) |
| Corresponding cluster property | tombstone_retention_ms |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | tombstone_retention_msTombstone record removal |

### [](#max-compaction-lag-ms)max.compaction.lag.ms

The maximum amount of time (in ms) that a log segment can remain unaltered before it is eligible for compaction in a compact topic. Overrides the cluster property [`max_compaction_lag_ms`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#max_compaction_lag_ms) for the topic.

| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | milliseconds (integer) |
| Corresponding cluster property | max_compaction_lag_ms |
| Default | 9223372036854 |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | max_compaction_lag_msConfigure maximum compaction lag |

### [](#min-cleanable-dirty-ratio)min.cleanable.dirty.ratio

The minimum ratio between dirty and total bytes in closed segments before a partition’s log is eligible for compaction in a compact topic.

This property supports three states:

-   Positive value: Sets the minimum dirty ratio (0.0 to 1.0) required before compaction.

-   0: Compaction is always eligible regardless of dirty ratio.

-   Negative value: This property is not considered when deciding if a log is eligible for compaction.


| Property | Value |
| --- | --- |
| Type | number |
| Accepted values | [0, 1.0] |
| Corresponding cluster property | min_cleanable_dirty_ratio |
| Default | 0.2 |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | min_cleanable_dirty_ratio |

### [](#min-compaction-lag-ms)min.compaction.lag.ms

The minimum amount of time (in ms) that a log segment must remain unaltered before it can be compacted in a compact topic. Overrides the cluster property [`min_compaction_lag_ms`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#min_compaction_lag_ms) for the topic.

| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | milliseconds (integer) |
| Corresponding cluster property | min_compaction_lag_ms |
| Default | 0 (0 milliseconds) |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | min_compaction_lag_msmin_compaction_lag_msConfigure minimum compaction lag |

### [](#retention-bytes)retention.bytes

A size-based retention limit that configures the maximum size that a topic partition can grow before becoming eligible for cleanup.

If `retention.bytes` is set to a positive value, it overrides the cluster property [`retention_bytes`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#retention_bytes) for the topic, and the total retained size for the topic is `retention.bytes` multiplied by the number of partitions for the topic.

When both size-based (`retention.bytes`) and time-based (`retention.ms`) retention limits are set, cleanup occurs when either limit is reached.

This property supports three states:

-   Positive value: Sets the maximum bytes per partition. When exceeded, oldest data becomes eligible for cleanup.

-   0: Partitions are immediately eligible for cleanup.

-   Negative value: Disables size-based retention for this topic.


| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | bytes (integer) |
| Corresponding cluster property | retention_bytes |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | retention_bytesretention_bytesConfigure message retention |

### [](#retention-ms)retention.ms

A time-based retention limit that configures the maximum duration that a log’s segment file for a topic is retained before it becomes eligible to be cleaned up. To consume all data, a consumer of the topic must read from a segment before its `retention.ms` elapses, otherwise the segment may be compacted and/or deleted.

If `retention.ms` is set to a positive value, it overrides the cluster property [`log_retention_ms`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#log_retention_ms) for the topic.

When both size-based (`retention.bytes`) and time-based (`retention.ms`) retention limits are set, the earliest occurring limit applies.

This property supports three states:

-   Positive value: Sets the maximum milliseconds to retain data. After this duration, segments become eligible for cleanup.

-   0: Data is immediately eligible for cleanup.

-   Negative value: Disables time-based retention for this topic.


| Property | Value |
| --- | --- |
| Type | retention_duration_property |
| Corresponding cluster property | log_retention_ms |
| Default | 604800000 (1 week) |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | log_retention_msConfigure message retention |

## [](#segment-and-message-properties)Segment and Message Properties

These properties control the size and lifecycle of log segment files and settings for individual messages.

### [](#compression-type)compression.type

Redpanda ignores this property and always uses producer compression semantics. If producers send compressed data, Redpanda stores and serves it as-is. If producers send uncompressed data, Redpanda stores it uncompressed.

This property exists for Apache Kafka compatibility. Configure compression in your producers instead of using this topic property.

Compression reduces message size and improves throughput, but increases CPU utilization. Enable producer batching to increase compression efficiency.

When set, this property overrides the cluster property [`log_compression_type`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#log_compression_type) for the topic.

| Property | Value |
| --- | --- |
| Type | string (enum) |
| Accepted Values | none, gzip, snappy, lz4, zstd, count, producer |
| Corresponding cluster property | log_compression_type |
| Default | producer |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | log_compression_typeMessage batchingCommon producer configuration options |

### [](#max-message-bytes)max.message.bytes

The maximum size of a message or batch of a topic. If a compression type is enabled, `max.message.bytes` sets the maximum size of the compressed message or batch.

If `max.message.bytes` is set to a positive value, it overrides the cluster property [`kafka_batch_max_bytes`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#kafka_batch_max_bytes) for the topic.

Set an upper limit for `max.message.bytes` using the cluster property `[kafka_max_message_size_upper_limit_bytes](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#kafka_max_message_size_upper_limit_bytes)`.

| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | bytes (integer) |
| Corresponding cluster property | kafka_batch_max_bytes |
| Default | 1048576 |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | kafka_batch_max_bytesMessage batchingkafka_max_message_size_upper_limit_bytes |

### [](#message-timestamp-type)message.timestamp.type

The source of a message’s timestamp: either the message’s creation time or its log append time.

When `message.timestamp.type` is set, it overrides the cluster property [`log_message_timestamp_type`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#log_message_timestamp_type) for the topic.

| Property | Value |
| --- | --- |
| Type | string (enum) |
| Accepted Values | CreateTime, LogAppendTime |
| Corresponding cluster property | log_message_timestamp_type |
| Default | CreateTime |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | log_message_timestamp_type |

### [](#segment-bytes)segment.bytes

The maximum size of an active log segment for a topic. When the size of an active segment exceeds `segment.bytes`, the segment is closed and a new active segment is created. The closed, inactive segment is then eligible to be cleaned up according to retention properties.

When `segment.bytes` is set to a positive value, it overrides the cluster property:

-   [`log_segment_size`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#log_segment_size) for non-compacted topics

-   [`compacted_log_segment_size`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#compacted_log_segment_size) for compacted topics (when `cleanup.policy=compact`)


| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | bytes (integer) |
| Corresponding cluster property | log_segment_size |
| Default | 134217728 |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | log_segment_sizeConfigure segment sizeConfigure message retentionRemote Read Replicascompacted_log_segment_size |

### [](#segment-ms)segment.ms

The maximum duration that a log segment of a topic is active (open for writes and not deletable). A periodic event, with `segment.ms` as its period, forcibly closes the active segment and transitions, or rolls, to a new active segment. The closed (inactive) segment is then eligible to be cleaned up according to cleanup and retention properties.

If set to a positive duration, `segment.ms` overrides the cluster property [`log_segment_ms`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#log_segment_ms). Values are automatically clamped between the cluster bounds set by [`log_segment_ms_min`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#log_segment_ms_min) (default: 10 minutes) and [`log_segment_ms_max`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#log_segment_ms_max) (default: 1 year). If your configured value exceeds these bounds, Redpanda uses the bound value and logs a warning. Check current cluster bounds with `rpk cluster config get log_segment_ms_min log_segment_ms_max`.

For topics with compaction enabled, `max.compaction.lag.ms` also acts as a limit to `segment.ms`.

This property supports three states:

-   Positive value: Sets the maximum milliseconds a segment remains active before rolling to a new segment.

-   0: Segments are immediately eligible for closure.

-   Negative value: Disables time-based segment rolling for this topic.


| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | milliseconds (integer) |
| Corresponding cluster property | log_segment_ms |
| Default | 2 weeks |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | log_segment_mslog_segment_ms_minlog_segment_ms_maxLog rolling |

## [](#performance-and-cluster-properties)Performance and Cluster Properties

These properties control disk flushing, replication, and how topics interact with the cluster.

### [](#flush-bytes)flush.bytes

The maximum bytes not fsynced per partition. If this configured threshold is reached, the log is automatically fsynced, even though it wasn’t explicitly requested.

| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | bytes (integer) |
| Corresponding cluster property | raft_replica_max_pending_flush_bytes |
| Default | 262144 |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | flush_bytes |

### [](#flush-ms)flush.ms

The maximum delay (in ms) between two subsequent fsyncs. After this delay, the log is automatically fsynced.

| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | milliseconds (integer) |
| Corresponding cluster property | raft_replica_max_flush_delay_ms |
| Default | 100 (100 milliseconds) |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | flush_ms |

### [](#redpanda-leaders-preference)redpanda.leaders.preference

The preferred location (rack) for partition leaders of a topic.

This property inherits the value from the `[default_leaders_preference](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#default_leaders_preference)` cluster configuration property. You may override the cluster-wide setting by specifying the value for individual topics.

If the cluster configuration property `[enable_rack_awareness](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#enable_rack_awareness)` is set to `false`, Leader Pinning is disabled across the cluster.

| Property | Value |
| --- | --- |
| Type | object |
| Corresponding cluster property | default_leaders_preference |
| Default | none |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Leader pinning |

### [](#replication-factor)replication.factor

The number of replicas of a topic to save in different nodes (brokers) of a cluster.

If `replication.factor` is set to a positive value, it overrides the cluster property [default\_topic\_replication](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#default_topic_replication) for the topic.

> 📝 **NOTE**
>
> Although `replication.factor` isn’t returned or displayed by [`rpk topic describe`](https://docs.redpanda.com/streaming/current/reference/rpk/rpk-topic/rpk-topic-describe/) as a valid Kafka property, you can set it using [`rpk topic alter-config`](https://docs.redpanda.com/streaming/current/reference/rpk/rpk-topic/rpk-topic-alter-config/). When the `replication.factor` of a topic is altered, it isn’t simply a property value that’s updated, but rather the actual replica sets of topic partitions that are changed.

| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | integer (1 or greater) |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | rpk topic describerpk topic alter-configdefault_topic_replicationChoose the replication factorChange the replication factordefault_topic_replication |

### [](#write-caching)write.caching

The write caching mode to apply to a topic.

When `write.caching` is set, it overrides the cluster property [`write_caching_default`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#write_caching_default). Write caching acknowledges a message as soon as it is received and acknowledged on a majority of brokers, without waiting for it to be written to disk. With `acks=all`, this provides lower latency while still ensuring that a majority of brokers acknowledge the write. Fsyncs follow [`flush.ms`](#flushms) and [`flush.bytes`](#flushbytes), whichever is reached first.

| Property | Value |
| --- | --- |
| Type | string (enum) |
| Accepted Values | true, false, disabled |
| Corresponding cluster property | write_caching_default |
| Default | false |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Write cachingTiered Storagewrite_caching_defaultwrite_caching_default |

The maximum bytes not fsynced per partition. If this configured threshold is reached, the log is automatically fsynced, even though it wasn’t explicitly requested.

**Type:** integer

**Unit:** bytes

**Accepted values:** \[`1`, `9223372036854775807`\]

**Default:** `262144`

**Related cluster property:** [`flush_bytes`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#flush_bytes)

**Related topics**:

-   [Configure Producers](https://docs.redpanda.com/streaming/current/develop/produce-data/configure-producers/)


* * *

### [](#flushms)flush.ms

The maximum delay (in ms) between two subsequent fsyncs. After this delay, the log is automatically fsynced.

**Type:** integer

**Unit:** milliseconds

**Accepted values:** \[`1`, `9223372036854775`\]

**Default:** `100`

**Related cluster property:** [`flush_ms`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#flush_ms)

**Related topics**:

-   [Configure Producers](https://docs.redpanda.com/streaming/current/develop/produce-data/configure-producers/)


* * *

### [](#redpandaleaderspreference)redpanda.leaders.preference

The preferred location (rack) for partition leaders of a topic.

This property inherits the value from the `[default_leaders_preference](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#default_leaders_preference)` cluster configuration property. You may override the cluster-wide setting by specifying the value for individual topics.

If the cluster configuration property `[enable_rack_awareness](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#enable_rack_awareness)` is set to `false`, Leader Pinning is disabled across the cluster.

**Type:** string

**Default:** `none`

**Values**:

-   `none`: Opt out the topic from Leader Pinning.

-   `racks:<rack1>[,<rack2>,…​]`: Specify the preferred location (rack) of all topic partition leaders. The list can contain one or more rack IDs. If you specify multiple IDs, Redpanda tries to distribute the partition leader locations equally across brokers in these racks.


**Related topics**:

-   [Leader pinning](https://docs.redpanda.com/streaming/current/develop/produce-data/leader-pinning/)


* * *

### [](#replicationfactor)replication.factor

The number of replicas of a topic to save in different nodes (brokers) of a cluster.

If `replication.factor` is set to a positive value, it overrides the cluster property [default\_topic\_replication](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#default_topic_replication) for the topic.

> 📝 **NOTE**
>
> Although `replication.factor` isn’t returned or displayed by [`rpk topic describe`](https://docs.redpanda.com/streaming/current/reference/rpk/rpk-topic/rpk-topic-describe/) as a valid Kafka property, you can set it using [`rpk topic alter-config`](https://docs.redpanda.com/streaming/current/reference/rpk/rpk-topic/rpk-topic-alter-config/). When the `replication.factor` of a topic is altered, it isn’t simply a property value that’s updated, but rather the actual replica sets of topic partitions that are changed.

**Type:** integer

**Accepted values:** \[`1`, `512`\]

**Default:** null

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

**Related topics**:

-   [Choose the replication factor](https://docs.redpanda.com/streaming/current/develop/manage-topics/config-topics/#choose-the-replication-factor)

-   [Change the replication factor](https://docs.redpanda.com/streaming/current/develop/manage-topics/config-topics/#change-the-replication-factor)


* * *

### [](#writecaching)write.caching

The write caching mode to apply to a topic.

When `write.caching` is set, it overrides the cluster property [`write_caching_default`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#write_caching_default). Write caching acknowledges a message as soon as it is received and acknowledged on a majority of brokers, without waiting for it to be written to disk. With `acks=all`, this provides lower latency while still ensuring that a majority of brokers acknowledge the write. Fsyncs follow [`flush.ms`](#flushms) and [`flush.bytes`](#flushbytes), whichever is reached first.

**Type:** boolean

**Default:** `false`

**Values**:

-   `true` - Enables write caching for a topic, according to [`flush.ms`](#flushms) and [`flush.bytes`](#flushbytes).

-   `false` - Disables write caching for a topic, according to [`flush.ms`](#flushms) and [`flush.bytes`](#flushbytes).


**Related cluster property:** [`write_caching_default`](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#write_caching_default)

**Related topics**:

-   [Write caching](https://docs.redpanda.com/streaming/current/develop/manage-topics/config-topics/#configure-write-caching)


* * *

## [](#tiered-storage-properties)Tiered Storage properties

Configure properties to manage topics for [Tiered Storage](https://docs.redpanda.com/streaming/current/manage/tiered-storage/).

### [](#initial-retention-local-target-bytes)initial.retention.local.target.bytes

A size-based initial retention limit for Tiered Storage that determines how much data in local storage is transferred to a partition replica when a cluster is resized. If `null` (default), all locally retained data is transferred.

This property supports three states:

-   Positive value: Sets the maximum bytes of local data to transfer during cluster resize.

-   0: No local data is transferred during cluster resize.

-   Negative value: All locally retained data is transferred (default behavior).


| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | bytes (integer) |
| Corresponding cluster property | initial_retention_local_target_bytes_default |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | initial_retention_local_target_bytesFast commission and decommission through Tiered Storage |

### [](#initial-retention-local-target-ms)initial.retention.local.target.ms

A time-based initial retention limit for Tiered Storage that determines how much data in local storage is transferred to a partition replica when a cluster is resized. If `null` (default), all locally retained data is transferred.

This property supports three states:

-   Positive value: Sets the maximum age (milliseconds) of local data to transfer during cluster resize.

-   0: No local data is transferred during cluster resize.

-   Negative value: All locally retained data is transferred (default behavior).


| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | milliseconds (integer) |
| Corresponding cluster property | initial_retention_local_target_ms_default |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | initial_retention_local_target_msFast commission and decommission through Tiered Storage |

### [](#redpanda-cloud_topic-enabled)redpanda.cloud_topic.enabled

Enable Cloud Topic storage mode for this topic. When enabled, topic data is stored primarily in object storage with local storage used only as a write buffer.

> 💡 **TIP**
>
> To configure storage modes with more flexibility, use [`redpanda.storage.mode`](#redpandastorage-mode) which supports `local`, `tiered`, `cloud`, and `unset` modes.

| Property | Value |
| --- | --- |
| Type | string |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Cloud TopicsTiered Storage |

### [](#redpanda-remote-delete)redpanda.remote.delete

A flag that enables deletion of data from object storage for Tiered Storage when it’s deleted from local storage for a topic.

> 📝 **NOTE**
>
> `redpanda.remote.delete` doesn’t apply to Remote Read Replica topics: a Remote Read Replica topic isn’t deleted from object storage when this flag is `true`.

| Property | Value |
| --- | --- |
| Type | boolean |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Tiered Storage |

### [](#redpanda-remote-read)redpanda.remote.read

A flag for enabling Redpanda to fetch data for a topic from object storage to local storage. When set to `true` together with [`redpanda.remote.write`](#redpandaremotewrite), it enables the [Tiered Storage](https://docs.redpanda.com/streaming/current/manage/tiered-storage/) feature.

| Property | Value |
| --- | --- |
| Type | boolean |
| Corresponding cluster property | cloud_storage_enable_remote_read |
| Default | false |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Tiered Storage |

### [](#redpanda-remote-recovery)redpanda.remote.recovery

A flag that enables the recovery or reproduction of a topic from object storage for Tiered Storage. The recovered data is saved in local storage, and the maximum amount of recovered data is determined by the local storage retention limits of the topic.

> 💡 **TIP**
>
> You can only configure `redpanda.remote.recovery` when you create a topic. You cannot apply this setting to existing topics.

| Property | Value |
| --- | --- |
| Type | boolean |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Tiered Storage |

### [](#redpanda-remote-write)redpanda.remote.write

A flag for enabling Redpanda to upload data for a topic from local storage to object storage. When set to `true` together with [`redpanda.remote.read`](#redpandaremoteread), it enables the [Tiered Storage](https://docs.redpanda.com/streaming/current/manage/tiered-storage/) feature.

| Property | Value |
| --- | --- |
| Type | boolean |
| Corresponding cluster property | cloud_storage_enable_remote_write |
| Default | false |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Tiered Storage |

### [](#redpanda-storage-mode)redpanda.storage.mode

**Introduced in v26.1.1**

The storage mode for a topic. Determines how topic data is stored and whether it is eligible for upload to object storage.

Accepted values:

-   `local`: Topic data is stored only on the broker’s local disk. Object storage upload is disabled for the topic, regardless of cluster-level Tiered Storage settings.

-   `tiered`: Topic data is stored on local disk and also uploaded to object storage. Enables [Tiered Storage](https://docs.redpanda.com/streaming/current/manage/tiered-storage/) for the topic.

-   `cloud`: Topic data is stored in object storage using the [Cloud Topics](https://docs.redpanda.com/streaming/current/develop/manage-topics/cloud-topics/) architecture. Local storage is used only as a write buffer.

-   `unset`: Specifies that the topic’s storage mode is unset, regardless of the cluster default. The topic may still have Tiered Storage enabled through the legacy properties `redpanda.remote.read` and `redpanda.remote.write`.


This property overrides the cluster-wide `[default_redpanda_storage_mode](https://docs.redpanda.com/streaming/current/reference/properties/cluster-properties/#default_redpanda_storage_mode)` setting for individual topics.

| Property | Value |
| --- | --- |
| Type | string (enum) |
| Accepted Values | local, tiered, cloud, unset |
| Corresponding cluster property | default_redpanda_storage_mode |
| Default | unset |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Tiered StorageManage Cloud Topics |

### [](#retention-local-target-bytes)retention.local.target.bytes

A size-based retention limit for Tiered Storage that configures the maximum size that a topic partition in local storage can grow before becoming eligible for cleanup. It applies per partition and is equivalent to [`retention.bytes`](#retentionbytes) without Tiered Storage.

This property supports three states:

-   Positive value: Sets the maximum bytes per partition in local storage before cleanup.

-   0: Data in local storage is immediately eligible for cleanup.

-   Negative value: Disables size-based local retention override for this topic.


| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | bytes (integer) |
| Corresponding cluster property | retention_local_target_bytes_default |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | retention_local_target_bytesTiered Storage |

### [](#retention-local-target-ms)retention.local.target.ms

A time-based retention limit for Tiered Storage that sets the maximum duration that a log’s segment file for a topic is retained in local storage before cleanup. It applies per partition and is equivalent to [`retention.ms`](#retention-ms) without Tiered Storage.

This property supports three states:

-   Positive value: Sets the maximum milliseconds to retain data in local storage.

-   0: Data in local storage is immediately eligible for cleanup.

-   Negative value: Disables time-based local retention override for this topic.


| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | milliseconds (integer) |
| Corresponding cluster property | retention_local_target_ms_default |
| Default | 86400000 (1 day) |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | retention_local_target_msTiered StorageRemote Read Replicas |

## [](#remote-read-replica-properties)Remote Read Replica properties

Configure properties to manage topics for [Remote Read Replicas](https://docs.redpanda.com/streaming/current/manage/remote-read-replicas/).

### [](#redpanda-remote-readreplica)redpanda.remote.readreplica

The name of the object storage bucket for a Remote Read Replica topic.

> ⚠️ **CAUTION**
>
> Setting `redpanda.remote.readreplica` together with either `redpanda.remote.read` or `redpanda.remote.write` results in an error.

| Property | Value |
| --- | --- |
| Type | string |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Remote Read Replicas |

## [](#apache-iceberg-integration-properties)Apache Iceberg integration properties

Integrate Redpanda topics as Iceberg tables.

### [](#redpanda-iceberg-delete)redpanda.iceberg.delete

Whether the corresponding Iceberg table is deleted upon deleting the topic.

| Property | Value |
| --- | --- |
| Type | boolean |
| Corresponding cluster property | iceberg_delete |
| Default | true |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |

### [](#redpanda-iceberg-invalid-record-action)redpanda.iceberg.invalid.record.action

Whether to write invalid records to a dead-letter queue (DLQ).

| Property | Value |
| --- | --- |
| Type | string (enum) |
| Accepted Values | drop, dlq_table |
| Corresponding cluster property | iceberg_invalid_record_action |
| Default | dlq_table |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Troubleshoot Iceberg Topics |

### [](#redpanda-iceberg-mode)redpanda.iceberg.mode

Enable the Iceberg integration for the topic. You can choose one of four modes.

| Property | Value |
| --- | --- |
| Type | string |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Choose an Iceberg Mode |

### [](#redpanda-iceberg-partition-spec)redpanda.iceberg.partition.spec

The [partitioning](https://iceberg.apache.org/docs/nightly/partitioning/) specification for the Iceberg table.

| Property | Value |
| --- | --- |
| Type | string |
| Corresponding cluster property | iceberg_default_partition_spec |
| Default | (hour(redpanda.timestamp)) |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |
| Related topics | Use custom partitioning |

### [](#redpanda-iceberg-target-lag-ms)redpanda.iceberg.target.lag.ms

Controls how often the data in the Iceberg table is refreshed with new data from the topic. Redpanda attempts to commit all data produced to the topic within the lag target, subject to resource availability.

| Property | Value |
| --- | --- |
| Type | integer |
| Accepted values | milliseconds (integer) |
| Default | null |
| Nullable | No |
| Restored on Whole Cluster Restore | Yes |