All Products
Search
Document Center

ApsaraMQ for MQTT:Payload format indicator

Last Updated:Mar 11, 2026

MQTT 5.0 introduces the Payload Format Indicator property, which tells the receiver whether a PUBLISH message payload is an unspecified byte stream or a UTF-8 encoded string. ApsaraMQ for MQTT fully supports this property, including server-side UTF-8 validation.

How it works

The Payload Format Indicator is a single-byte property in PUBLISH packets. It accepts two values:

ValueMeaning
0Unspecified byte stream. The payload has no declared format.
1UTF-8 encoded string. The broker validates the encoding before delivery.

Server-side validation

When a client publishes a message with Payload Format Indicator set to 1, the ApsaraMQ for MQTT broker checks that the payload is valid UTF-8. If validation fails:

  • The message is not delivered to subscribers.

  • For QoS 1 messages, the broker returns reason code PAYLOAD_FORMAT_INVALID in the PubAck packet.

This check catches malformed payloads at the source, preventing subscribers from receiving data they cannot parse.

Use cases

Format negotiation between publishers and subscribers

Set Payload Format Indicator to 1 to signal that the payload is a UTF-8 string. Subscribers receiving the message can skip format detection and decode the payload directly as text, such as JSON.

Decoding verification

When a publisher specifies the Payload Format Indicator for a message, the receiver can verify whether the message is encoded in the expected format. This helps the receiver process message content in a more secure and reliable manner.

Interoperability across heterogeneous clients

In systems where multiple clients or services share an MQTT broker, the Payload Format Indicator provides a standard way to communicate payload encoding. All participants can interpret the message content consistently, regardless of their implementation language or platform.

Example

An IoT sensor publishes temperature and humidity readings as JSON. To tell subscribers that the payload is UTF-8 text, the client sets Payload Format Indicator to 1:

PUBLISH
  Topic: sensor1/data
  Payload Format Indicator: 1    // UTF-8 encoded string
  Payload: {"temperature": 22.3, "humidity": 48}

Every subscriber on the sensor1/data topic receives the Payload Format Indicator alongside the message. Subscribers know the payload is a UTF-8 string and can parse it as JSON without additional format detection.

If the client accidentally sends non-UTF-8 binary data with Payload Format Indicator set to 1, the broker rejects the message and returns PAYLOAD_FORMAT_INVALID in the PubAck packet (for QoS 1).

The Payload Format Indicator improves the accuracy and efficiency of data transmission in MQTT 5.0 by ensuring that message data from one client can be interpreted and correctly processed by other clients. In environments where multiple systems with different data formats are integrated, this feature can help significantly increase processing speed.