Browse documentation

Decoding Kafka Avro and Protobuf Messages

Avro and Protobuf records contain binary data that a generic Kafka consumer cannot display as readable fields. Confluent provides kafka-avro-console-consumer and kafka-protobuf-console-consumer for terminal use. Kafma decodes the same schema-aware records inside each topic tab and keeps the original bytes available for inspection.

How automatic Kafka deserialization works

Keep the KEY and VALUE decoders on Automatic. When a field uses the standard Confluent wire format with a schema ID in the payload prefix, Kafma reads that ID, fetches the schema from the configured Schema Registry, and applies the matching Avro, Protobuf, or JSON Schema deserializer.

The schema is resolved for each record, so one topic can contain messages written with different schema IDs or versions. When multiple value schema IDs appear in the tab, each row shows its schema ID. Select it to inspect the format, subject, version, references, and schema source.

See Schema Registry settings to add or test a registry connection.

Choose how to decode keys and values

Select the KEY or VALUE column heading to change its decoder. The two columns are independent, which is useful when a topic has string keys and schema-encoded values.

Automatic handles registered schemas and readable text. For data written without Schema Registry, choose String, JSON, Bytes, UUID, Boolean, Short, Integer, Long, Float, or Double to match the producer's serializer. The selected decoder is applied to the records already loaded in the Console.

Choosing how to decode Kafka message keys and values, including JSON, numeric types, bytes, UUID, and Boolean

View decoded and raw messages

Expand a message to inspect its key, value, headers, and metadata. Decoded shows the readable value; Raw shows the original bytes as hexadecimal. You can switch views at any time and copy the active representation.

Large payloads initially show a bounded preview. Select Load full message to retrieve and decode the complete record.

A decoded Avro message with its schema ID, metadata, and Decoded and Raw views

Troubleshoot Kafka Unknown Magic Byte errors

Unknown magic byte usually means a Schema Registry deserializer expected the Confluent wire format but received something else. For example, a producer may have written plain JSON, a string, or raw bytes while the consumer expected Avro or Protobuf.

Kafma does not force every record through a schema deserializer. Without a valid schema prefix, Automatic displays readable text or raw bytes. If the schema ID resolves but the payload does not match the schema, or the registry cannot be reached, the row shows the decode failure and keeps the raw payload available.

Check the producer's serializer, the Schema Registry connection, and the schema ID shown on the message. To test a payload against a schema directly, use Schema Lab.

Next steps