---
title: Telegraf output data formats
description: Telegraf serializes metrics into output data formats.
url: https://docs.influxdata.com/telegraf/v1/data_formats/output/
estimated_tokens: 1601
product: Telegraf Controller
version: v1
publisher: InfluxData
canonical: https://docs.influxdata.com/telegraf/v1/data_formats/output/
date: '2025-12-23T11:09:07-05:00'
lastmod: '2025-12-23T11:09:07-05:00'
---

Telegraf uses **serializers** to convert metrics into output data formats.
Many [output plugins](/telegraf/v1/configure_plugins/output_plugins/) support the `data_format` option, which lets you choose
how metrics are formatted before writing.

* [How output plugins use serializers](#how-output-plugins-use-serializers)
* [Choosing an output approach](#choosing-an-output-approach)
* [Available serializers](#available-serializers)

## How output plugins use serializers

When you configure `data_format` in an output plugin, Telegraf uses a **serializer**to convert metrics into that format before writing.
The output plugin controls *where* data goes; the serializer controls *how* it’s formatted.

Some output plugins support `use_batch_format`, which changes how the serializer
processes metrics.
When enabled, the serializer receives all metrics in a batch together rather than
one at a time, enabling more efficient encoding and formats that represent multiple
metrics as a unit (like JSON arrays).

```toml
[[outputs.file]]
  files = ["stdout"]

  ## Output plugin option: process metrics as a batch
  use_batch_format = true

  ## Serializer selection: format metrics as JSON
  data_format = "json"
```

Output plugins that support `use_batch_format`:`file`, `http`, `amqp`, `kafka`, `nats`, `mqtt`, `exec`, `execd`, `remotefile`

## Choosing an output approach

### By destination

|       Destination       |                                                                Recommended Approach                                                                |
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| **Prometheus scraping** |                 [`prometheus_client`](/telegraf/v1/output-plugins/prometheus_client/) output plugin (exposes `/metrics` endpoint)                  |
|      **InfluxDB**       |  [`influxdb`](/telegraf/v1/output-plugins/influxdb/) or [`influxdb_v2`](/telegraf/v1/output-plugins/influxdb_v2/) output plugin (native protocol)  |
|**Remote HTTP endpoints**|                                          [`http`](/telegraf/v1/output-plugins/http/) output + serializer                                           |
|        **Files**        |                                          [`file`](/telegraf/v1/output-plugins/file/) output + serializer                                           |
|   **Message queues**    |[`kafka`](/telegraf/v1/output-plugins/kafka/), [`nats`](/telegraf/v1/output-plugins/nats/), [`amqp`](/telegraf/v1/output-plugins/amqp/) + serializer|

### By metric type

Some metric types require state across collection intervals:

* **Histograms** accumulate observations into buckets
* **Summaries** track quantiles over a sliding window

Serializers process each batch independently and cannot maintain this state.
When a histogram or summary spans multiple batches, the serializer may produce
incomplete or incorrect output.

For these metric types, use a dedicated output plugin that maintains state–for example:

* **Prometheus metrics**: Use [`prometheus_client`](/telegraf/v1/output-plugins/prometheus_client/)instead of the prometheus serializer

## Available serializers

### [Binary](/telegraf/v1/data_formats/output/binary/)

Use the `binary` output data format (serializer) to serialize Telegraf metrics into binary protocols using user-specified configurations.

### [Carbon2](/telegraf/v1/data_formats/output/carbon2/)

Use the `carbon2` output data format (serializer) to format and output Telegraf metrics as Carbon2 format.

### [CloudEvents](/telegraf/v1/data_formats/output/cloudevents/)

Use the `cloudevents` output data format (serializer) to format Telegraf metrics as CloudEvents in JSON format.

### [CSV](/telegraf/v1/data_formats/output/csv/)

Use the `csv` output data format (serializer) to convert Telegraf metrics into CSV lines.

### [Graphite](/telegraf/v1/data_formats/output/graphite/)

Use the `graphite` output data format (serializer) to format and output Telegraf metrics as Graphite Message Format.

### [InfluxDB line protocol](/telegraf/v1/data_formats/output/influx/)

Use the `influx` output data format (serializer) to format and output metrics as InfluxDB line protocol format.

### [JSON](/telegraf/v1/data_formats/output/json/)

Use the `json` output data format (serializer) to format and output Telegraf metrics as JSON documents.

### [MessagePack](/telegraf/v1/data_formats/output/msgpack/)

Use the `msgpack` output data format (serializer) to convert Telegraf metrics into MessagePack format.

### [Prometheus](/telegraf/v1/data_formats/output/prometheus/)

Use the `prometheus` output data format (serializer) to convert Telegraf metrics into Prometheus text exposition format.

### [Prometheus Remote Write](/telegraf/v1/data_formats/output/prometheusremotewrite/)

Use the `prometheusremotewrite` output data format (serializer) to convert Telegraf metrics into Prometheus protobuf format for remote write endpoints.

### [ServiceNow metrics](/telegraf/v1/data_formats/output/nowmetric/)

Use the `nowmetric` ServiceNow metrics output data format (serializer) to output Telegraf metrics as ServiceNow Operational Intelligence format.

### [Splunk metrics](/telegraf/v1/data_formats/output/splunkmetric/)

Use the `splunkmetric` metric output data format (serializer) to output Telegraf metrics in a format that can be consumed by a Splunk metrics index.

### [Template](/telegraf/v1/data_formats/output/template/)

Use the `template` output data format (serializer) to format and output Telegraf metrics using custom Go templates.

### [Wavefront](/telegraf/v1/data_formats/output/wavefront/)

Use the `wavefront` output data format (serializer) to convert Telegraf metrics into Wavefront data format.

#### Related

* [Write data with output plugins](/telegraf/v1/configure_plugins/output_plugins/)
* [Configuration options](/telegraf/v1/configuration/)
| Destination | Recommended Approach |
| --- | --- |
| Destination | Recommended Approach |
| Prometheus scraping | prometheus_client  output plugin (exposes  /metrics  endpoint) |
| InfluxDB | influxdb  or  influxdb_v2  output plugin (native protocol) |
| Remote HTTP endpoints | http  output + serializer |
| Files | file  output + serializer |
| Message queues | kafka ,  nats ,  amqp  + serializer |
