[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Type](https://evolu.dev/docs/api-reference/common/Type) › SimplePassword

```ts
type SimplePassword = string &
  Brand<"Trimmed"> &
  Brand<"MaxLength64"> &
  Brand<"MinLength8"> &
  Brand<"SimplePassword">;
```

Defined in: [packages/common/src/Type.ts:1701](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Type.ts#L1701)

Trimmed string between 8 and 64 characters, branded as `SimplePassword`.

Take a look how `SimplePassword` is defined:

```ts
export const SimplePassword = brand(
  "SimplePassword",
  minLength(8)(maxLength(64)(TrimmedString)),
);
```

Nested functions are often OK (if not, make a helper), but with TC39 Hack
pipes it would be clearer:

```ts
// TrimmedString
//   |> minLength(8)(%)
//   |> maxLength(64)(%)
//   |> brand("SimplePassword", %)
```