rpk topic: Manage, Produce & Consume
rpk topic is the rpk command group for all topic-level operations on a
Redpanda cluster. It wraps the Kafka protocol to create, inspect, alter, and
delete topics, and provides full-featured produce and consume commands with a
powerful percent-escape format language. All subcommands read connection config
from the active rpk profile or -X flags.
Quickstart
# 1. Create a 3-partition topic with replication factor 3
rpk topic create orders -p 3 -r 3
# 2. Create with configs set at creation time
rpk topic create events -p 6 -r 3 \
-c cleanup.policy=compact \
-c retention.ms=86400000
# 3. Produce three keyed JSON records — key and value on each line (Ctrl-D to finish)
# Note: when %k appears in --format, it reads the key from the input line and
# takes precedence over any -k flag. Use one mechanism or the other, not both.
rpk topic produce orders -f '%k %v{json}\n'
order-1 {"id":1,"status":"pending"}
order-2 {"id":2,"status":"shipped"}
order-3 {"id":3,"status":"delivered"}
# 4. Produce a single record inline via stdin redirect
printf 'hello world\n' | rpk topic produce orders
# 5. Consume from the beginning and stop at current end
rpk topic consume orders -o start
# 6. Consume last 5 records
rpk topic consume orders -o -5
# 7. Consume from a specific offset until current end
rpk topic consume orders -o 100:end
# 8. Consume in a named consumer group
rpk topic consume orders -g my-service
# 9. Describe the topic (summary + configs by default)
rpk topic describe orders
# 10. Describe including partition detail
rpk topic describe orders -p
# 11. Alter a topic config
rpk topic alter-config orders --set retention.ms=3600000
# 12. Delete a topic config key (revert to cluster default)
rpk topic alter-config orders --delete retention.ms
# 13. Add 2 more partitions
rpk topic add-partitions orders -n 2
# 14. List all topics
rpk topic list
# 15. Delete a topic
rpk topic delete orders
Subcommands
| Subcommand |
What it does |
create |
Create one or more topics with partitions, replicas, configs |
list (alias ls) |
List topics with partition and replica counts |
describe (alias info) |
Show topic summary, configs, and partition offsets |
describe-storage |
Show tiered-storage cloud/local status per partition |
alter-config |
Incrementally set, delete, append, or subtract config keys |
add-partitions |
Add N new partitions to an existing topic |
trim-prefix |
Move the log start offset forward, discarding old data |
analyze |
Measure batch rate and batch size over a time window |
delete |
Delete one or more topics |
produce |
Write records from stdin to a topic |
consume |
Read records from topics and print to stdout |
create
rpk topic create <TOPICS...> [flags]
| Flag |
Type |
Default |
Description |
-p, --partitions |
int32 |
-1 |
Number of partitions; -1 uses default_topic_partitions |
-r, --replicas |
int16 |
-1 |
Replication factor (must be odd); -1 uses default_topic_replications |
-c, --topic-config |
string (repeatable) |
|
key=value config pair, e.g. -c cleanup.policy=compact |
-d, --dry |
bool |
false |
Validate only; do not create |
--if-not-exists |
bool |
false |
Skip silently if topic already exists |
# Compact topic
rpk topic create audit-log -p 12 -r 3 -c cleanup.policy=compact
# Dry run
rpk topic create test-topic -p 3 -r 3 -d
list
rpk topic list [TOPICS...] [flags]
| Flag |
Default |
Description |
-d, --detailed |
false |
Show per-partition leader/replica detail |
-i, --internal |
false |
Include internal topics (e.g. __consumer_offsets) |
-r, --regex |
false |
Parse topic names as regex |
rpk topic list
rpk topic list -r '^orders.*'
rpk topic list -d
describe
rpk topic describe <TOPICS...> [flags]
By default prints the summary and configs sections. Sections:
| Flag |
Description |
-s, --print-summary |
Print topic name, partitions, replicas |
-c, --print-configs |
Print all config key/value/source pairs |
-p, --print-partitions |
Print per-partition leader, epoch, replicas, offsets |
-a, --print-all |
Print all three sections |
--stable |
Add last-stable-offset column (for transactional topics) |
-r, --regex |
Describe topics matching a regex |
rpk topic describe orders -a
rpk topic describe -r '^events.*' -a
alter-config
rpk topic alter-config <TOPICS...> [flags]
Supports four operations (all repeatable):
| Flag |
Operation |
-s, --set key=value |
Set a config value |
-d, --delete key |
Delete a key (revert to default) |
--append key=value |
Append to a list-of-values key |
--subtract key=value |
Remove from a list-of-values key |
--dry |
Validate only; do not apply |
--no-confirm |
Skip confirmation prompt |
# Enable tiered storage on a topic
rpk topic alter-config orders \
--set redpanda.remote.read=true \
--set redpanda.remote.write=true
# Change retention
rpk topic alter-config orders --set retention.ms=86400000
# Revert retention to cluster default
rpk topic alter-config orders --delete retention.ms
add-partitions
rpk topic add-partitions <TOPICS...> -n <N> [flags]
-n is required. Partitions can only be added, never removed.
rpk topic add-partitions orders -n 6
trim-prefix
Moves the log start offset (low watermark) forward, deleting segments before
the specified offset. Data before the new start offset is no longer readable.
rpk topic trim-prefix [TOPIC] -o <OFFSET> [flags]
| Flag |
Description |
-o, --offset |
Target offset (47, end, or @<timestamp>) |
-p, --partitions |
Comma-separated partition list (default: all) |
-f, --from-file |
File with topic/partition/offset rows |
--no-confirm |
Skip the confirmation prompt |
# Trim partition 0 to offset 1000
rpk topic trim-prefix orders -o 1000 -p 0
# Trim all partitions to a timestamp
rpk topic trim-prefix orders -o "@2024-01-01T00:00:00Z"
# Trim to the current end (delete everything)
rpk topic trim-prefix orders -o end
analyze
Consumes a time window of records and reports batch rate and size statistics.
rpk topic analyze <TOPICS...> [flags]
| Flag |
Default |
Description |
-t, --time-range |
-1m:end |
Time range to sample (e.g. -24h:end, -48h:-24h) |
--batches |
10 |
Minimum number of batches to consume per partition |
--timeout |
10s |
How long to run |
-a, --print-all |
false |
Print all output sections |
-s, --print-summary |
false |
Global summary |
--print-topics |
false |
Per-topic summary |
--print-partition-batch-rate |
false |
Batch rate percentiles |
--print-partition-batch-size |
false |
Batch size percentiles |
-r, --regex |
false |
Parse topic names as regex |
rpk topic analyze orders -t -1h:end -a
rpk topic analyze -r '^orders.*' -t -24h:end -s --print-topics
describe-storage
Requires the Admin API endpoint (from your profile or -X admin.hosts=...).
Shows tiered storage cloud vs. local bytes, segment counts, offsets, and sync
lag per partition. Not supported on Redpanda Cloud clusters (the Admin API is
not exposed there); all other rpk topic subcommands are.
rpk topic describe-storage <TOPIC> [flags]
| Flag |
Description |
-a, --print-all |
All sections |
-s, --print-summary |
Summary (name, mode, last-upload) |
-z, --print-size |
Cloud + local bytes and segment counts |
-y, --print-sync |
Upload lag, manifest sync |
-o, --print-offset |
Cloud and local start/last offsets |
-H, --human-readable |
Human-readable sizes/durations |
rpk topic describe-storage orders -a -H
Cloud storage modes: disabled, write_only, read_only, full,
read_replica, cloud_topic, cloud_topic_read_replica.
delete
rpk topic delete <TOPICS...> [flags]
-r, --regex parses topic names as regular expressions. Expressions are
anchored with ^ and $.
rpk topic delete old-topic
rpk topic delete -r '^test-.*'
produce
See Produce Reference for full detail.
rpk topic produce [TOPIC] [flags]
Key flags:
| Flag |
Default |
Description |
-f, --format |
%v\n |
Input record format (percent-escape syntax) |
-k, --key |
|
Fixed key for all records (parsed %k in format takes precedence) |
-H, --header |
|
key:value header (repeatable) |
-z, --compression |
snappy |
none, gzip, snappy, lz4, zstd |
--acks |
-1 |
-1=all ISR, 0=none, 1=leader |
-p, --partition |
-1 |
Direct-produce to this partition |
-Z, --tombstone |
false |
Produce empty value as null (tombstone) |
--schema-id |
|
Schema ID or topic (TopicName strategy) for value |
--schema-key-id |
|
Schema ID or topic for key |
--schema-type |
|
Fully-qualified Protobuf message type for value |
--schema-key-type |
|
Fully-qualified Protobuf message type for key |
--allow-auto-topic-creation |
false |
Auto-create the topic if it does not exist |
-o, --output-format |
Produced to partition %p at offset %o with timestamp %d.\n |
Line printed to stdout after each successful record |
--delivery-timeout |
0 |
Per-record delivery timeout (min 1s) |
--max-message-bytes |
-1 |
Max batch bytes before compression |
# Fixed key, newline-delimited values from stdin
rpk topic produce orders -k order-key
# Key and value separated by space
rpk topic produce orders -f '%k %v\n'
# Add headers
rpk topic produce orders -H source:backend -H env:prod
# Encode with schema registry (TopicName strategy)
rpk topic produce orders --schema-id=topic
# Tombstone
rpk topic produce orders -k deleted-key -Z
consume
See Consume Reference for full detail.
rpk topic consume <TOPICS...> [flags]
Key flags:
| Flag |
Default |
Description |
-f, --format |
json |
Output format (json or percent-escape string) |
-o, --offset |
start |
Where to start (and optionally end) consuming |
-p, --partitions |
|
Comma-separated list of partitions |
-g, --group |
|
Consumer group ID |
-n, --num |
0 |
Stop after N records (0 = unbounded) |
-r, --regex |
false |
Parse topic names as regex |
--read-committed |
false |
Only read committed offsets (for transactions) |
--print-control-records |
false |
Also print control records |
--use-schema-registry |
|
Decode with schema registry (key, value, or both) |
--meta-only |
false |
Print metadata but not record value (only affects -f json output) |
# Consume all records from beginning
rpk topic consume orders -o start
# Consume last 10 records
rpk topic consume orders -o -10
# Consume in a group, print key+value
rpk topic consume orders -g my-svc -f '%k %v\n'
# Consume a timestamp window
rpk topic consume orders -o @2024-01-01:1h
# Stop at current end
rpk topic consume orders -o :end
# Decode values via schema registry
rpk topic consume orders --use-schema-registry=value
Redpanda Cloud notes
rpk topic works against Redpanda Cloud clusters (Serverless, BYOC, Dedicated) over the Kafka API. Authenticate with rpk cloud login and wire your profile to the cluster (rpk cloud cluster select, or rpk profile create --from-cloud); plain rpk topic ... commands then target the Cloud cluster.
- All
rpk topic subcommands are supported on Cloud except rpk topic describe-storage, which needs the Admin API (not exposed by Redpanda Cloud).
- Automatic topic creation is disabled in Redpanda Cloud — create topics explicitly. BYOC/Dedicated clusters can opt in via the
auto_create_topics_enabled cluster property.
- Replication factor: Redpanda Cloud requires a minimum of 3 replicas; a topic created with
-r 1 is reset to 3.
- Message size: capped per topic by
max.message.bytes; the default and maximum differ by cluster type (Serverless caps are lower than BYOC/Dedicated). Check the Cloud "Topics Overview" page for current values rather than assuming self-managed defaults.
- Partition limits: Serverless clusters have a per-cluster partition cap (logical partitions, pre-replication) plus other usage limits (consumer groups, connections, ACLs, producer IDs) — see "Serverless usage limits" on the Serverless cluster-type page of the cloud docs. BYOC/Dedicated partition maxima depend on the usage tier — see the "BYOC Tiers and Regions" / "Dedicated Tiers and Regions" reference pages. These numbers change; do not hardcode them.
- Managed cluster defaults: cluster properties (e.g.
default_topic_partitions) are not user-configurable on Serverless, and on BYOC/Dedicated (AWS/GCP only) only a curated subset is settable.
- Tiered Storage on Cloud is enabled and configured by Redpanda by default. The Enterprise topic properties section below is written for self-managed clusters — note
rpk cluster license is also unsupported on Cloud.
- TODO (unverified): the cloud docs do not publish an explicit list of which topic-level configs are settable versus rejected/managed on Serverless. Before advising a specific
alter-config --set key on Serverless, verify against a live cluster or the Cloud UI.
Enterprise topic properties
Several Redpanda differentiators are configured as topic-level properties
through rpk topic create -c key=value or
rpk topic alter-config <topic> --set key=value. All of these require a valid
Enterprise Edition license; without one they cannot be enabled, and they enter
a restricted state on license expiration. Verify license status with
rpk cluster license info.
| Feature |
Key topic property(ies) |
Notes |
| Tiered Storage |
redpanda.remote.read, redpanda.remote.write, redpanda.remote.delete, redpanda.remote.recovery, redpanda.storage.mode=tiered, retention.local.target.{ms,bytes} |
Needs cluster cloud_storage_enabled=true; enabled when read+write both true. remote.recovery is create-only |
| Cloud Topics |
redpanda.cloud_topic.enabled, redpanda.storage.mode=cloud |
Object-storage-native topic; storage.mode=cloud is preferred |
| Iceberg Topics |
redpanda.iceberg.mode (disabled/key_value/value_schema_id_prefix/value_schema_latest), redpanda.iceberg.delete, redpanda.iceberg.partition.spec, redpanda.iceberg.target.lag.ms, redpanda.iceberg.invalid.record.action (drop/dlq_table) |
Needs cluster iceberg_enabled=true |
| Remote Read Replicas |
redpanda.remote.readreplica=<bucket> |
Mutually exclusive with remote.read/remote.write |
| Leader Pinning |
redpanda.leaders.preference (none / racks: / ordered_racks:) |
Needs enable_rack_awareness=true |
| Schema ID Validation |
redpanda.key.schema.id.validation, redpanda.value.schema.id.validation, redpanda.key.subject.name.strategy, redpanda.value.subject.name.strategy |
Needs cluster enable_schema_id_validation=redpanda or compat |
| Topic Deletion Control |
delete_topic_enable (cluster property) |
Guards rpk topic delete for all users |
# Tiered Storage
rpk topic alter-config orders --set redpanda.storage.mode=tiered
# Iceberg topic
rpk topic create txns --topic-config=redpanda.iceberg.mode=key_value
# Leader Pinning
rpk topic alter-config orders --set redpanda.leaders.preference=ordered_racks:A,B,C
# Schema ID validation
rpk topic alter-config events --set redpanda.value.schema.id.validation=true
See enterprise-topic-properties.md
for the full nested key list, accepted values, defaults, and expiration behavior.
Reference Directory
- produce.md:
rpk topic produce in depth — format percent-escape tokens, keys, headers, compression, acks, schema-registry encoding, tombstones, and worked examples.
- consume.md:
rpk topic consume in depth — all --offset forms (numeric, relative, timestamp, ranges), consumer groups, format tokens, schema-registry decoding, and worked examples.
- manage.md:
create, alter-config, add-partitions, describe, describe-storage, trim-prefix, analyze, and delete — with key config keys for retention, compaction, and tiered storage.
- enterprise-topic-properties.md: Enterprise-licensed topic properties set via
create -c / alter-config --set — Tiered Storage (redpanda.remote.*, redpanda.storage.mode, retention.local.target.*), Cloud Topics (redpanda.cloud_topic.enabled), Iceberg Topics (redpanda.iceberg.mode/delete/partition.spec/target.lag.ms/invalid.record.action), Remote Read Replicas (redpanda.remote.readreplica), Leader Pinning (redpanda.leaders.preference), and Schema ID Validation (redpanda.key/value.schema.id.validation, subject.name.strategy), with accepted values, defaults, and license-expiration behavior.
1---2name: rpk-topic3description: Manage Redpanda topics and produce or consume records from the CLI using the `rpk topic` command group. Use when creating or deleting topics with custom partitions, replication, or configs; altering topic configs or retention; adding partitions; trimming or deleting records; or using `rpk topic produce`/`consume` with.4---56# rpk topic: Manage, Produce & Consume78`rpk topic` is the `rpk` command group for all topic-level operations on a9Redpanda cluster. It wraps the Kafka protocol to create, inspect, alter, and10delete topics, and provides full-featured produce and consume commands with a11powerful percent-escape format language. All subcommands read connection config12from the active rpk profile or `-X` flags.1314## Quickstart1516```bash17# 1. Create a 3-partition topic with replication factor 318rpk topic create orders -p 3 -r 31920# 2. Create with configs set at creation time21rpk topic create events -p 6 -r 3 \22 -c cleanup.policy=compact \23 -c retention.ms=864000002425# 3. Produce three keyed JSON records — key and value on each line (Ctrl-D to finish)26# Note: when %k appears in --format, it reads the key from the input line and27# takes precedence over any -k flag. Use one mechanism or the other, not both.28rpk topic produce orders -f '%k %v{json}\n'29order-1 {"id":1,"status":"pending"}30order-2 {"id":2,"status":"shipped"}31order-3 {"id":3,"status":"delivered"}3233# 4. Produce a single record inline via stdin redirect34printf 'hello world\n' | rpk topic produce orders3536# 5. Consume from the beginning and stop at current end37rpk topic consume orders -o start3839# 6. Consume last 5 records40rpk topic consume orders -o -54142# 7. Consume from a specific offset until current end43rpk topic consume orders -o 100:end4445# 8. Consume in a named consumer group46rpk topic consume orders -g my-service4748# 9. Describe the topic (summary + configs by default)49rpk topic describe orders5051# 10. Describe including partition detail52rpk topic describe orders -p5354# 11. Alter a topic config55rpk topic alter-config orders --set retention.ms=36000005657# 12. Delete a topic config key (revert to cluster default)58rpk topic alter-config orders --delete retention.ms5960# 13. Add 2 more partitions61rpk topic add-partitions orders -n 26263# 14. List all topics64rpk topic list6566# 15. Delete a topic67rpk topic delete orders68```6970## Subcommands7172| Subcommand | What it does |73|---|---|74| `create` | Create one or more topics with partitions, replicas, configs |75| `list` (alias `ls`) | List topics with partition and replica counts |76| `describe` (alias `info`) | Show topic summary, configs, and partition offsets |77| `describe-storage` | Show tiered-storage cloud/local status per partition |78| `alter-config` | Incrementally set, delete, append, or subtract config keys |79| `add-partitions` | Add N new partitions to an existing topic |80| `trim-prefix` | Move the log start offset forward, discarding old data |81| `analyze` | Measure batch rate and batch size over a time window |82| `delete` | Delete one or more topics |83| `produce` | Write records from stdin to a topic |84| `consume` | Read records from topics and print to stdout |8586## create8788```bash89rpk topic create <TOPICS...> [flags]90```9192| Flag | Type | Default | Description |93|---|---|---|---|94| `-p, --partitions` | int32 | `-1` | Number of partitions; `-1` uses `default_topic_partitions` |95| `-r, --replicas` | int16 | `-1` | Replication factor (must be odd); `-1` uses `default_topic_replications` |96| `-c, --topic-config` | string (repeatable) | | `key=value` config pair, e.g. `-c cleanup.policy=compact` |97| `-d, --dry` | bool | false | Validate only; do not create |98| `--if-not-exists` | bool | false | Skip silently if topic already exists |99100```bash101# Compact topic102rpk topic create audit-log -p 12 -r 3 -c cleanup.policy=compact103104# Dry run105rpk topic create test-topic -p 3 -r 3 -d106```107108## list109110```bash111rpk topic list [TOPICS...] [flags]112```113114| Flag | Default | Description |115|---|---|---|116| `-d, --detailed` | false | Show per-partition leader/replica detail |117| `-i, --internal` | false | Include internal topics (e.g. `__consumer_offsets`) |118| `-r, --regex` | false | Parse topic names as regex |119120```bash121rpk topic list122rpk topic list -r '^orders.*'123rpk topic list -d124```125126## describe127128```bash129rpk topic describe <TOPICS...> [flags]130```131132By default prints the `summary` and `configs` sections. Sections:133134| Flag | Description |135|---|---|136| `-s, --print-summary` | Print topic name, partitions, replicas |137| `-c, --print-configs` | Print all config key/value/source pairs |138| `-p, --print-partitions` | Print per-partition leader, epoch, replicas, offsets |139| `-a, --print-all` | Print all three sections |140| `--stable` | Add last-stable-offset column (for transactional topics) |141| `-r, --regex` | Describe topics matching a regex |142143```bash144rpk topic describe orders -a145rpk topic describe -r '^events.*' -a146```147148## alter-config149150```bash151rpk topic alter-config <TOPICS...> [flags]152```153154Supports four operations (all repeatable):155156| Flag | Operation |157|---|---|158| `-s, --set key=value` | Set a config value |159| `-d, --delete key` | Delete a key (revert to default) |160| `--append key=value` | Append to a list-of-values key |161| `--subtract key=value` | Remove from a list-of-values key |162| `--dry` | Validate only; do not apply |163| `--no-confirm` | Skip confirmation prompt |164165```bash166# Enable tiered storage on a topic167rpk topic alter-config orders \168 --set redpanda.remote.read=true \169 --set redpanda.remote.write=true170171# Change retention172rpk topic alter-config orders --set retention.ms=86400000173174# Revert retention to cluster default175rpk topic alter-config orders --delete retention.ms176```177178## add-partitions179180```bash181rpk topic add-partitions <TOPICS...> -n <N> [flags]182```183184`-n` is required. Partitions can only be added, never removed.185186```bash187rpk topic add-partitions orders -n 6188```189190## trim-prefix191192Moves the log start offset (low watermark) forward, deleting segments before193the specified offset. Data before the new start offset is no longer readable.194195```bash196rpk topic trim-prefix [TOPIC] -o <OFFSET> [flags]197```198199| Flag | Description |200|---|---|201| `-o, --offset` | Target offset (`47`, `end`, or `@<timestamp>`) |202| `-p, --partitions` | Comma-separated partition list (default: all) |203| `-f, --from-file` | File with topic/partition/offset rows |204| `--no-confirm` | Skip the confirmation prompt |205206```bash207# Trim partition 0 to offset 1000208rpk topic trim-prefix orders -o 1000 -p 0209210# Trim all partitions to a timestamp211rpk topic trim-prefix orders -o "@2024-01-01T00:00:00Z"212213# Trim to the current end (delete everything)214rpk topic trim-prefix orders -o end215```216217## analyze218219Consumes a time window of records and reports batch rate and size statistics.220221```bash222rpk topic analyze <TOPICS...> [flags]223```224225| Flag | Default | Description |226|---|---|---|227| `-t, --time-range` | `-1m:end` | Time range to sample (e.g. `-24h:end`, `-48h:-24h`) |228| `--batches` | `10` | Minimum number of batches to consume per partition |229| `--timeout` | `10s` | How long to run |230| `-a, --print-all` | false | Print all output sections |231| `-s, --print-summary` | false | Global summary |232| `--print-topics` | false | Per-topic summary |233| `--print-partition-batch-rate` | false | Batch rate percentiles |234| `--print-partition-batch-size` | false | Batch size percentiles |235| `-r, --regex` | false | Parse topic names as regex |236237```bash238rpk topic analyze orders -t -1h:end -a239rpk topic analyze -r '^orders.*' -t -24h:end -s --print-topics240```241242## describe-storage243244Requires the Admin API endpoint (from your profile or `-X admin.hosts=...`).245Shows tiered storage cloud vs. local bytes, segment counts, offsets, and sync246lag per partition. Not supported on Redpanda Cloud clusters (the Admin API is247not exposed there); all other `rpk topic` subcommands are.248249```bash250rpk topic describe-storage <TOPIC> [flags]251```252253| Flag | Description |254|---|---|255| `-a, --print-all` | All sections |256| `-s, --print-summary` | Summary (name, mode, last-upload) |257| `-z, --print-size` | Cloud + local bytes and segment counts |258| `-y, --print-sync` | Upload lag, manifest sync |259| `-o, --print-offset` | Cloud and local start/last offsets |260| `-H, --human-readable` | Human-readable sizes/durations |261262```bash263rpk topic describe-storage orders -a -H264```265266Cloud storage modes: `disabled`, `write_only`, `read_only`, `full`,267`read_replica`, `cloud_topic`, `cloud_topic_read_replica`.268269## delete270271```bash272rpk topic delete <TOPICS...> [flags]273```274275`-r, --regex` parses topic names as regular expressions. Expressions are276anchored with `^` and `$`.277278```bash279rpk topic delete old-topic280rpk topic delete -r '^test-.*'281```282283## produce284285See [Produce Reference](references/produce.md) for full detail.286287```bash288rpk topic produce [TOPIC] [flags]289```290291Key flags:292293| Flag | Default | Description |294|---|---|---|295| `-f, --format` | `%v\n` | Input record format (percent-escape syntax) |296| `-k, --key` | | Fixed key for all records (parsed `%k` in format takes precedence) |297| `-H, --header` | | `key:value` header (repeatable) |298| `-z, --compression` | `snappy` | `none`, `gzip`, `snappy`, `lz4`, `zstd` |299| `--acks` | `-1` | `-1`=all ISR, `0`=none, `1`=leader |300| `-p, --partition` | `-1` | Direct-produce to this partition |301| `-Z, --tombstone` | false | Produce empty value as null (tombstone) |302| `--schema-id` | | Schema ID or `topic` (TopicName strategy) for value |303| `--schema-key-id` | | Schema ID or `topic` for key |304| `--schema-type` | | Fully-qualified Protobuf message type for value |305| `--schema-key-type` | | Fully-qualified Protobuf message type for key |306| `--allow-auto-topic-creation` | false | Auto-create the topic if it does not exist |307| `-o, --output-format` | `Produced to partition %p at offset %o with timestamp %d.\n` | Line printed to stdout after each successful record |308| `--delivery-timeout` | `0` | Per-record delivery timeout (min 1s) |309| `--max-message-bytes` | `-1` | Max batch bytes before compression |310311```bash312# Fixed key, newline-delimited values from stdin313rpk topic produce orders -k order-key314315# Key and value separated by space316rpk topic produce orders -f '%k %v\n'317318# Add headers319rpk topic produce orders -H source:backend -H env:prod320321# Encode with schema registry (TopicName strategy)322rpk topic produce orders --schema-id=topic323324# Tombstone325rpk topic produce orders -k deleted-key -Z326```327328## consume329330See [Consume Reference](references/consume.md) for full detail.331332```bash333rpk topic consume <TOPICS...> [flags]334```335336Key flags:337338| Flag | Default | Description |339|---|---|---|340| `-f, --format` | `json` | Output format (`json` or percent-escape string) |341| `-o, --offset` | `start` | Where to start (and optionally end) consuming |342| `-p, --partitions` | | Comma-separated list of partitions |343| `-g, --group` | | Consumer group ID |344| `-n, --num` | `0` | Stop after N records (0 = unbounded) |345| `-r, --regex` | false | Parse topic names as regex |346| `--read-committed` | false | Only read committed offsets (for transactions) |347| `--print-control-records` | false | Also print control records |348| `--use-schema-registry` | | Decode with schema registry (`key`, `value`, or both) |349| `--meta-only` | false | Print metadata but not record value (only affects `-f json` output) |350351```bash352# Consume all records from beginning353rpk topic consume orders -o start354355# Consume last 10 records356rpk topic consume orders -o -10357358# Consume in a group, print key+value359rpk topic consume orders -g my-svc -f '%k %v\n'360361# Consume a timestamp window362rpk topic consume orders -o @2024-01-01:1h363364# Stop at current end365rpk topic consume orders -o :end366367# Decode values via schema registry368rpk topic consume orders --use-schema-registry=value369```370371## Redpanda Cloud notes372373`rpk topic` works against Redpanda Cloud clusters (Serverless, BYOC, Dedicated) over the Kafka API. Authenticate with `rpk cloud login` and wire your profile to the cluster (`rpk cloud cluster select`, or `rpk profile create --from-cloud`); plain `rpk topic ...` commands then target the Cloud cluster.374375- **All `rpk topic` subcommands are supported on Cloud except `rpk topic describe-storage`**, which needs the Admin API (not exposed by Redpanda Cloud).376- **Automatic topic creation is disabled** in Redpanda Cloud — create topics explicitly. BYOC/Dedicated clusters can opt in via the `auto_create_topics_enabled` cluster property.377- **Replication factor**: Redpanda Cloud requires a minimum of 3 replicas; a topic created with `-r 1` is reset to 3.378- **Message size**: capped per topic by `max.message.bytes`; the default and maximum differ by cluster type (Serverless caps are lower than BYOC/Dedicated). Check the Cloud "Topics Overview" page for current values rather than assuming self-managed defaults.379- **Partition limits**: Serverless clusters have a per-cluster partition cap (logical partitions, pre-replication) plus other usage limits (consumer groups, connections, ACLs, producer IDs) — see "Serverless usage limits" on the Serverless cluster-type page of the cloud docs. BYOC/Dedicated partition maxima depend on the usage tier — see the "BYOC Tiers and Regions" / "Dedicated Tiers and Regions" reference pages. These numbers change; do not hardcode them.380- **Managed cluster defaults**: cluster properties (e.g. `default_topic_partitions`) are not user-configurable on Serverless, and on BYOC/Dedicated (AWS/GCP only) only a curated subset is settable.381- **Tiered Storage on Cloud** is enabled and configured by Redpanda by default. The Enterprise topic properties section below is written for self-managed clusters — note `rpk cluster license` is also unsupported on Cloud.382- **TODO (unverified)**: the cloud docs do not publish an explicit list of which topic-level configs are settable versus rejected/managed on Serverless. Before advising a specific `alter-config --set` key on Serverless, verify against a live cluster or the Cloud UI.383384## Enterprise topic properties385386Several Redpanda differentiators are configured as **topic-level properties**387through `rpk topic create -c key=value` or388`rpk topic alter-config <topic> --set key=value`. All of these **require a valid389Enterprise Edition license**; without one they cannot be enabled, and they enter390a restricted state on license expiration. Verify license status with391`rpk cluster license info`.392393| Feature | Key topic property(ies) | Notes |394|---|---|---|395| Tiered Storage | `redpanda.remote.read`, `redpanda.remote.write`, `redpanda.remote.delete`, `redpanda.remote.recovery`, `redpanda.storage.mode=tiered`, `retention.local.target.{ms,bytes}` | Needs cluster `cloud_storage_enabled=true`; enabled when read+write both `true`. `remote.recovery` is create-only |396| Cloud Topics | `redpanda.cloud_topic.enabled`, `redpanda.storage.mode=cloud` | Object-storage-native topic; `storage.mode=cloud` is preferred |397| Iceberg Topics | `redpanda.iceberg.mode` (`disabled`/`key_value`/`value_schema_id_prefix`/`value_schema_latest`), `redpanda.iceberg.delete`, `redpanda.iceberg.partition.spec`, `redpanda.iceberg.target.lag.ms`, `redpanda.iceberg.invalid.record.action` (`drop`/`dlq_table`) | Needs cluster `iceberg_enabled=true` |398| Remote Read Replicas | `redpanda.remote.readreplica=<bucket>` | Mutually exclusive with `remote.read`/`remote.write` |399| Leader Pinning | `redpanda.leaders.preference` (`none` / `racks:` / `ordered_racks:`) | Needs `enable_rack_awareness=true` |400| Schema ID Validation | `redpanda.key.schema.id.validation`, `redpanda.value.schema.id.validation`, `redpanda.key.subject.name.strategy`, `redpanda.value.subject.name.strategy` | Needs cluster `enable_schema_id_validation=redpanda` or `compat` |401| Topic Deletion Control | `delete_topic_enable` (cluster property) | Guards `rpk topic delete` for all users |402403```bash404# Tiered Storage405rpk topic alter-config orders --set redpanda.storage.mode=tiered406407# Iceberg topic408rpk topic create txns --topic-config=redpanda.iceberg.mode=key_value409410# Leader Pinning411rpk topic alter-config orders --set redpanda.leaders.preference=ordered_racks:A,B,C412413# Schema ID validation414rpk topic alter-config events --set redpanda.value.schema.id.validation=true415```416417See [enterprise-topic-properties.md](references/enterprise-topic-properties.md)418for the full nested key list, accepted values, defaults, and expiration behavior.419420## Reference Directory421422- [produce.md](references/produce.md): `rpk topic produce` in depth — format percent-escape tokens, keys, headers, compression, acks, schema-registry encoding, tombstones, and worked examples.423- [consume.md](references/consume.md): `rpk topic consume` in depth — all `--offset` forms (numeric, relative, timestamp, ranges), consumer groups, format tokens, schema-registry decoding, and worked examples.424- [manage.md](references/manage.md): `create`, `alter-config`, `add-partitions`, `describe`, `describe-storage`, `trim-prefix`, `analyze`, and `delete` — with key config keys for retention, compaction, and tiered storage.425- [enterprise-topic-properties.md](references/enterprise-topic-properties.md): Enterprise-licensed topic properties set via `create -c` / `alter-config --set` — Tiered Storage (`redpanda.remote.*`, `redpanda.storage.mode`, `retention.local.target.*`), Cloud Topics (`redpanda.cloud_topic.enabled`), Iceberg Topics (`redpanda.iceberg.mode/delete/partition.spec/target.lag.ms/invalid.record.action`), Remote Read Replicas (`redpanda.remote.readreplica`), Leader Pinning (`redpanda.leaders.preference`), and Schema ID Validation (`redpanda.key/value.schema.id.validation`, `subject.name.strategy`), with accepted values, defaults, and license-expiration behavior.