# Script serialization

> Details of how Unity transforms your scripted data structures and object states into a serialized format for storage or reconstruction later on, and how this affects your application performance.

**Serialization** is the automatic process of transforming data structures or GameObject states into a format that Unity can store and reconstruct later.

How you organize data in your Unity project affects how Unity serializes that data, which can have a significant impact on the performance of your project. This page outlines serialization in Unity and how to optimize your project for it.

| **Topic**                                                                                                                          | **Description**                                                                                                                 |
| ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| [Serialization rules](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-serialization/rules.md)                   | Conditions that determine whether fields in your scripts are serialized.                                                        |
| [Serialization rules analyzer](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-serialization/analyzer.md)       | The Unity serialization rules analyzer helps you write correct serialization code by detecting common mistakes at compile time. |
| [Custom serialization](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-serialization/custom-serialization.md)   | How to serialize additional items not supported by Unity's serializer.                                                          |
| [Dictionary serialization](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-serialization/dictionaries.md)       | Serialize `Dictionary<TKey, TValue>` fields and edit them in the Inspector.                                                     |
| [How Unity uses serialization](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-serialization/how-unity-uses.md) | More details about how serialization works in Unity.                                                                            |
| [JSON Serialization](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-serialization/json-serialization.md)       | Convert Unity objects to and from JSON format using the JsonUtility class.                                                      |
| [Serialization best practices](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-serialization/best-practices.md) | Best practices for serialization.                                                                                               |

## Additional resources

* [Script compilation](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-compilation.md)
* [Scripting back ends](/engine/6000.7/manual/scripting/compilation-and-code-reload/script-compilation/backends.md)
* [Code reload in the Editor](/engine/6000.7/manual/scripting/compilation-and-code-reload/code-reloading-editor.md)
