# 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/programming-environment/code-reload-serialization/script-serialization/rules.md)                                                                      | Conditions that determine whether fields in your scripts are serialized.                                                        |
| [Serialization rules analyzer](/engine/6000.7/manual/programming-environment/code-reload-serialization/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/programming-environment/code-reload-serialization/script-serialization/custom-serialization.md)                                                      | How to serialize additional items not supported by Unity's serializer.                                                          |
| [Dictionary serialization](/engine/6000.7/manual/programming-environment/code-reload-serialization/script-serialization/dictionaries.md)                                                          | Serialize `Dictionary<TKey, TValue>` fields and edit them in the Inspector.                                                     |
| [Migrate a custom dictionary solution to built-in dictionary serialization](/engine/6000.7/manual/programming-environment/code-reload-serialization/script-serialization/dictionaries-migrate.md) | Migrate a dictionary field from a custom solution to built-in dictionary serialization.                                         |
| [How Unity uses serialization](/engine/6000.7/manual/programming-environment/code-reload-serialization/script-serialization/how-unity-uses.md)                                                    | More details about how serialization works in Unity.                                                                            |
| [JSON Serialization](/engine/6000.7/manual/programming-environment/code-reload-serialization/script-serialization/json-serialization.md)                                                          | Convert Unity objects to and from JSON format using the JsonUtility class.                                                      |
| [Serialization best practices](/engine/6000.7/manual/programming-environment/code-reload-serialization/script-serialization/best-practices.md)                                                    | Best practices for serialization.                                                                                               |

## Additional resources

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