Kotlin Help

Serialization

Serialization is the process of converting data used by an application to a format that can be transferred over a network, or stored in a database or a file. Deserialization is the opposite process of converting external data back into a runtime object. Together, they are essential to most applications that exchange data with third parties.

Some data serialization formats, such as JSON and Protocol Buffers, are particularly common. These formats are language-neutral and platform-neutral, so you can use them to exchange data between systems written in any modern language. Kotlin provides this functionality through the kotlinx.serialization libraries, which support multiple platforms and data formats.

If you're new to serialization in Kotlin, we recommend starting with the Get Started with Serialization tutorial. It walks you through adding the Kotlin serialization library to your project and shows you how to serialize and deserialize your first class.

Get started with serialization

Kotlin serialization libraries

Kotlin serialization offers support for all platforms, including JVM, JavaScript, and Native. You can use the same dependency declaration regardless of the target platform.

Kotlin serialization supports various serialization formats, such as JSON, CBOR, and Protocol buffers through different serialization format libraries. These libraries build on the core kotlinx.serialization library. For the complete list of supported serialization formats, see Supported serialization formats.

All Kotlin serialization format libraries are part of the org.jetbrains.kotlinx: group, with names starting with kotlinx-serialization- and suffixes that reflect the serialization format. For example:

  • org.jetbrains.kotlinx:kotlinx-serialization-json provides JSON serialization.

  • org.jetbrains.kotlinx:kotlinx-serialization-cbor provides CBOR serialization.

The kotlinx.serialization libraries follow their own versioning, independent of Kotlin. You can find the latest release versions on GitHub.

Supported serialization formats

kotlinx.serialization includes serialization format libraries for various formats:

Format

Artifact ID

Platform

Status

JSON

kotlinx-serialization-json

All supported platforms

Stable

HOCON

kotlinx-serialization-hocon

JVM only

Experimental

Protocol Buffers

kotlinx-serialization-protobuf

All supported platforms

Experimental

CBOR

kotlinx-serialization-cbor

All supported platforms

Experimental

Properties

kotlinx-serialization-properties

All supported platforms

Experimental

All serialization format libraries, except for the JSON serialization library (kotlinx-serialization-json), are Experimental. Their APIs might change at any time. For more details about JSON serialization, see JSON serialization overview.

There are also community-maintained libraries that support more serialization formats, such as YAML or Apache Avro.

You can find out more about experimental serialization formats in Alternative and custom formats.

Supported serialization types

Kotlin serialization supports a variety of built-in types, including all primitive types and most composite types from the Kotlin standard library like the List type. For more information, see Serialize built-in types.

Additionally, classes annotated with @Serializable are fully supported for serialization, enabling the conversion of class instances to and from formats like JSON. For more information, see Serialize classes.

What's next

16 June 2026