> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://v3.viem.sh/api/mcp` to find what you need.

# PersonalMessage

:::info
`PersonalMessage` is a re-export of ox's [`PersonalMessage`](https://oxlib.sh/api/PersonalMessage). Refer to the ox documentation for the full reference.
:::

Utilities & types for working with [EIP-191 Personal Messages](https://eips.ethereum.org/EIPS/eip-191#version-0x45-e)

## Examples

### Computing Sign Payload

An EIP-191 personal sign payload can be computed using [`PersonalMessage.getSignPayload`](/docs/utilities/personalmessage/getSignPayload):

```ts twoslash
// @noErrors
import { Hex, PersonalMessage, Secp256k1 } from 'viem/utils'

const payload = PersonalMessage.getSignPayload(
  Hex.fromString('hello world')
) // [!code focus]

const signature = Secp256k1.sign({
  payload,
  privateKey: '0x...'
})
```

## Functions

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`PersonalMessage.encode`](/docs/utilities/personalmessage/encode) | Encodes a personal sign message in [ERC-191 format](https://eips.ethereum.org/EIPS/eip-191#version-0x45-e): `0x19 ‖ "Ethereum Signed Message:\n" + message.length ‖ message`. |
| [`PersonalMessage.getSignPayload`](/docs/utilities/personalmessage/getSignPayload) | Gets the payload to use for signing an [ERC-191 formatted](https://eips.ethereum.org/EIPS/eip-191#version-0x45-e) personal message. |

## Viem Helpers

Functions added by Viem on top of the `PersonalMessage` module.

| Name | Description |
| ---- | ----------- |
| [`PersonalMessage.recoverAddress`](/docs/utilities/personalmessage/recoverAddress) | Recovers the signing address of a personal ([EIP-191](https://eips.ethereum.org/EIPS/eip-191)) message. |
| [`PersonalMessage.verify`](/docs/utilities/personalmessage/verify) | Verifies that a personal ([EIP-191](https://eips.ethereum.org/EIPS/eip-191)) message was signed by the provided address (or public key). |
