---
title: Line protocol
description: InfluxDB uses line protocol to write data points. It is a text-based format that provides the measurement, tag set, field set, and timestamp of a data point.
url: https://docs.influxdata.com/influxdb/cloud/reference/syntax/line-protocol/
estimated_tokens: 2549
product: InfluxDB Cloud (TSM)
version: cloud
publisher: InfluxData
canonical: https://docs.influxdata.com/influxdb/cloud/reference/syntax/line-protocol/
date: '2025-04-02T15:54:32-06:00'
lastmod: '2025-04-02T15:54:32-06:00'
---

InfluxDB uses line protocol to write data points.
It is a text-based format that provides the measurement, tag set, field set, and timestamp of a data point.

* [Elements of line protocol](#elements-of-line-protocol)
* [Data types and format](#data-types-and-format)
* [Quotes](#quotes)
* [Special characters](#special-characters)
* [Comments](#comments)
* [Naming restrictions](#naming-restrictions)
* [Duplicate points](#duplicate-points)

```js
// Syntax
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]

// Example
myMeasurement,tag1=value1,tag2=value2 fieldKey="fieldValue" 1556813561098000000
```

Lines separated by the newline character `\n` represent a single point
in InfluxDB. Line protocol is whitespace sensitive.

> [!Note]
> Line protocol does not support the newline character `\n` in tag or field values.

## Elements of line protocol

myMeasurement,tag1=val1,tag2=val2 field1="v1",field2=1i 0000000000000000000

### Measurement

(Required)
The measurement name.
InfluxDB accepts one measurement per point.*Measurement names are case-sensitive and subject to [naming restrictions](#naming-restrictions).*

***Data type:** [String](#string)*

### Tag set

***Optional*** –
All tag key-value pairs for the point.
Key-value relationships are denoted with the `=` operand.
Multiple tag key-value pairs are comma-delimited.*Tag keys and tag values are case-sensitive.
Tag keys are subject to [naming restrictions](#naming-restrictions).
Tag values cannot be empty; instead, omit the tag from the tag set.*

***Key data type:** [String](#string)*  
***Value data type:** [String](#string)*

### Field set

(Required)
All field key-value pairs for the point.
Points must have at least one field.*Field keys and string values are case-sensitive.
Field keys are subject to [naming restrictions](#naming-restrictions).*

***Key data type:** [String](#string)*  
***Value data type:** [Float](#float) | [Integer](#integer) | [UInteger](#uinteger) | [String](#string) | [Boolean](#boolean)*

> [!Note]
> *Always double quote string field values. More on quotes [below](#quotes).*
> ```
> measurementName fieldKey="field string value" 1556813561098000000
> ```

```sh
measurementName fieldKey="field string value" 1556813561098000000
```

### Timestamp

***Optional*** –
The [unix timestamp](/influxdb/cloud/reference/glossary/#unix-timestamp) for the data point.
InfluxDB accepts one timestamp per point.
If no timestamp is provided, InfluxDB uses the system time (UTC) of its host machine.

***Data type:** [Unix timestamp](#unix-timestamp)*

#### Important notes about timestamps

* To ensure a data point includes the time a metric is observed (not received by InfluxDB),
  include the timestamp.
* If your timestamps are not in nanoseconds, specify the precision of your timestamps
  when [writing the data to InfluxDB](/influxdb/cloud/write-data/#timestamp-precision).

### Whitespace

Whitespace in line protocol determines how InfluxDB interprets the data point.
The **first unescaped space** delimits the measurement and the tag set from the field set.
The **second unescaped space** delimits the field set from the timestamp.

myMeasurement,tag1=val1,tag2=val2 field1="v1",field2=1i 0000000000000000000

## Data types and format

### Float

IEEE-754 64-bit floating-point numbers.
Default numerical type.*InfluxDB supports scientific notation in float field values.*

##### Float field value examples

```js
myMeasurement fieldKey=1.0
myMeasurement fieldKey=1
myMeasurement fieldKey=-1.234456e+78
```

### Integer

Signed 64-bit integers.
Trailing `i` on the number specifies an integer.

|    Minimum integer    |   Maximum integer    |
|-----------------------|----------------------|
|`-9223372036854775808i`|`9223372036854775807i`|

##### Integer field value examples

```js
myMeasurement fieldKey=1i
myMeasurement fieldKey=12485903i
myMeasurement fieldKey=-12485903i
```

### UInteger

Unsigned 64-bit integers.
Trailing `u` on the number specifies an unsigned integer.

|Minimum uinteger|   Maximum uinteger    |
|----------------|-----------------------|
|      `0u`      |`18446744073709551615u`|

##### UInteger field value examples

```js
myMeasurement fieldKey=1u
myMeasurement fieldKey=12485903u
```

### String

Plain text string.
Length limit 64KB.

##### String example

```sh
# String measurement name, field key, and field value
myMeasurement fieldKey="this is a string"
```

### Boolean

Stores `true` or `false` values.

|Boolean value|          Accepted syntax          |
|-------------|-----------------------------------|
|    True     | `t`, `T`, `true`, `True`, `TRUE`  |
|    False    |`f`, `F`, `false`, `False`, `FALSE`|

##### Boolean field value examples

```js
myMeasurement fieldKey=true
myMeasurement fieldKey=false
myMeasurement fieldKey=t
myMeasurement fieldKey=f
myMeasurement fieldKey=TRUE
myMeasurement fieldKey=FALSE
```

> [!Note]
> Do not quote boolean field values.
> Quoted field values are interpreted as strings.

### Unix timestamp

Unix timestamp in a [specified precision](/influxdb/cloud/reference/glossary/#unix-timestamp).
Default precision is nanoseconds (`ns`).

|  Minimum timestamp   |  Maximum timestamp  |
|----------------------|---------------------|
|`-9223372036854775806`|`9223372036854775806`|

##### Unix timestamp example

```js
myMeasurementName fieldKey="fieldValue" 1556813561098000000
```

## Quotes

Line protocol supports single and double quotes as described in the following table:

|  Element  |             Double quotes             |             Single quotes             |
|-----------|---------------------------------------|---------------------------------------|
|Measurement|*Limited* <sup class="required">*</sup>|*Limited* <sup class="required">*</sup>|
|  Tag key  |*Limited* <sup class="required">*</sup>|*Limited* <sup class="required">*</sup>|
| Tag value |*Limited* <sup class="required">*</sup>|*Limited* <sup class="required">*</sup>|
| Field key |*Limited* <sup class="required">*</sup>|*Limited* <sup class="required">*</sup>|
|Field value|           **Strings only**            |                 Never                 |
| Timestamp |                 Never                 |                 Never                 |

<sup class="required">*</sup> *Line protocol accepts double and single quotes in
measurement names, tag keys, tag values, and field keys, but interprets them as
part of the name, key, or value.*

## Special Characters

Line protocol supports special characters in [string elements](#string).
In the following contexts, it requires escaping certain characters with a backslash (`\`):

|  Element  |    Escape characters    |
|-----------|-------------------------|
|Measurement|      Comma, Space       |
|  Tag key  |Comma, Equals Sign, Space|
| Tag value |Comma, Equals Sign, Space|
| Field key |Comma, Equals Sign, Space|
|Field value| Double quote, Backslash |

You do not need to escape other special characters.

##### Examples of special characters in line protocol

```sh
# Measurement name with spaces
my\ Measurement fieldKey="string value"

# Double quotes in a string field value
myMeasurement fieldKey="\"string\" within a string"

# Tag keys and values with spaces
myMeasurement,tag\ Key1=tag\ Value1,tag\ Key2=tag\ Value2 fieldKey=100

# Emojis
myMeasurement,tagKey=🍭 fieldKey="Launch 🚀" 1556813561098000000
```

### Escaping backslashes

Line protocol supports both literal backslashes and backslashes as an escape character.
With two contiguous backslashes, the first is interpreted as an escape character.
For example:

|Backslashes|Interpreted as|
|-----------|--------------|
|    `\`    |     `\`      |
|   `\\`    |     `\`      |
|   `\\\`   |     `\\`     |
|  `\\\\`   |     `\\`     |
|  `\\\\\`  |    `\\\`     |
| `\\\\\\`  |    `\\\`     |

## Comments

Line protocol interprets `#` at the beginning of a line as a comment character
and ignores all subsequent characters until the next newline `\n`.

```sh
# This is a comment
myMeasurement fieldKey="string value" 1556813561098000000
```

## Naming restrictions

Measurement names, tag keys, and field keys cannot begin with an underscore `_`.
The `_` namespace is reserved for InfluxDB system use.

## Duplicate points

A point is uniquely identified by the measurement name, tag set, and timestamp.
If you submit line protocol with the same measurement, tag set, and timestamp,
but with a different field set, the field set becomes the union of the old
field set and the new field set, where any conflicts favor the new field set.

#### Related

* [Write data to InfluxDB](/influxdb/cloud/write-data/)

[write](/influxdb/cloud/tags/write/)[line protocol](/influxdb/cloud/tags/line-protocol/)[syntax](/influxdb/cloud/tags/syntax/)
| Minimum integer | Maximum integer |
| --- | --- |
| Minimum integer | Maximum integer |
| -9223372036854775808i | 9223372036854775807i |

| Minimum uinteger | Maximum uinteger |
| --- | --- |
| Minimum uinteger | Maximum uinteger |
| 0u | 18446744073709551615u |

| Boolean value | Accepted syntax |
| --- | --- |
| Boolean value | Accepted syntax |
| True | t ,  T ,  true ,  True ,  TRUE |
| False | f ,  F ,  false ,  False ,  FALSE |

| Minimum timestamp | Maximum timestamp |
| --- | --- |
| Minimum timestamp | Maximum timestamp |
| -9223372036854775806 | 9223372036854775806 |

| Element | Double quotes | Single quotes |
| --- | --- | --- |
| Element | Double quotes | Single quotes |
| Measurement | Limited   * | Limited   * |
| Tag key | Limited   * | Limited   * |
| Tag value | Limited   * | Limited   * |
| Field key | Limited   * | Limited   * |
| Field value | Strings only | Never |
| Timestamp | Never | Never |

| Element | Escape characters |
| --- | --- |
| Element | Escape characters |
| Measurement | Comma, Space |
| Tag key | Comma, Equals Sign, Space |
| Tag value | Comma, Equals Sign, Space |
| Field key | Comma, Equals Sign, Space |
| Field value | Double quote, Backslash |

| Backslashes | Interpreted as |
| --- | --- |
| Backslashes | Interpreted as |
| \ | \ |
| \\ | \ |
| \\\ | \\ |
| \\\\ | \\ |
| \\\\\ | \\\ |
| \\\\\\ | \\\ |
