# Encoder Component

This section documents the configuration attributes for each built-in encoder model. Use these pages when you are writing a JSON configuration, debugging a config validation error, or looking up the default for a specific attribute.

- For how to add and configure a encoder component on your machine, see [Encoder](https://docs.viam.com/hardware/common-components/add-an-encoder/).
- For the methods you call on a encoder in code, see the [Encoder API reference](https://docs.viam.com/reference/apis/components/encoder/).
- For encoder models outside the built-in set, search for `encoder` in the [Viam registry](https://app.viam.com/registry). Each registry module’s configuration is documented in its own README on its registry page.

## Built-in models

The following encoder models ship with `viam-server`:

| Model | Description |
| --- | --- |
| [`fake`](https://docs.viam.com/reference/components/encoder/fake/) | An encoder model for testing. |
| [`incremental`](https://docs.viam.com/reference/components/encoder/incremental/) | Supports a two phase encoder, which can measure the speed and direction of rotation in relation to a given reference point. |
| [`single`](https://docs.viam.com/reference/components/encoder/single/) | A single pin ‘pulse output’ encoder which returns its relative position but no direction. |

## Micro-RDK models

The following encoder models ship with the [Micro-RDK](https://docs.viam.com/reference/device-setup/setup-micro/):

| Model | Description |
| --- | --- |
| [`incremental`](https://docs.viam.com/reference/components/encoder/micro-rdk/incremental/) | — |
| [`single`](https://docs.viam.com/reference/components/encoder/micro-rdk/single/) | — |
