A governance token holder does not need to move tokens off a hardware wallet to vote on Snapshot. The vote is an EIP-712 signed message rather than a transaction. It costs no gas, and the tokens stay at the address that holds them. Before starting, expect the device to show a hash rather than the vote itself. As of August 1, 2026, the ERC-7730 clear-signing registry held 125 EIP-712 descriptors across 51 projects, so the device screen will usually confirm a digest and not a choice.

Moving tokens to a hot wallet to vote gains nothing. Snapshot fixes voting power at a snapshot block number. Tokens moved after that block still count at the old address. Tokens moved before it now sit in a hot wallet, which is the risk cold storage was bought to avoid.

What you need

  • A Ledger or Trezor holding the governance tokens

    Trezor has supported EIP-712 since firmware 2.4.3 (December 2021). Trezor's Clear Signing runs on the Safe 7, Safe 5, Safe 3 and Model T. It does not run on the Model One.

  • Current device firmware and Ethereum app

    Trezor's Clear Signing switches on only after a firmware update.

  • MetaMask or a WalletConnect-compatible wallet

    Snapshot requires one or the other.

  • No ETH for gas

    Signing a Snapshot vote costs nothing, whatever the wallet.

The steps

  1. Connect the device to MetaMask

    Add the hardware wallet as an account in MetaMask. Worked when: the hardware address appears in the account list.

  2. Select the hardware account

    Make it the active MetaMask account. Worked when: the address shown matches the one that holds the tokens.

  3. Connect to Snapshot

    Open the DAO's space on snapshot.org and connect the wallet. Worked when: the hardware address appears in the page header.

  4. Read the voting power on the proposal

    Open the proposal and look at the voting power before choosing. Worked when: the figure is above zero. A zero means the tokens were not held at the snapshot block, or the space counts only delegated votes.

  5. Choose and click Vote

    Select an option and press Vote. Worked when: MetaMask opens a signature request, not a transaction.

  6. Approve in MetaMask

    Snapshot's docs state that MetaMask users must "scroll to the end of the signature and click on the arrow down for the Sign button to become active." Worked when: the request moves on to the device.

  7. Confirm on the device

    Approve the signature on the hardware wallet. Worked when: the device accepts it. Most Snapshot spaces have no descriptor, so expect a digest rather than the proposal and choice. That means trusting that the front end showed the real vote. Ledger's clear signing is off by default and cannot decode unregistered messages.

  8. Check the result

    Reload the proposal. Worked when: the vote appears under the address. Snapshot stores the signed vote on IPFS.

When the signature fails

In September 2026, Ledger [discontinued signEIP712HashedMessage](https://developers.ledger.com/docs/news) and deprecated its legacy LedgerJS packages. Ledger says applications not migrated to its Device Management Kit "will be unable to sign EIP-712 typed data on Ledger devices." The sources here do not say which wallet extensions have migrated. If a signature fails at the device, the connecting software is the first suspect, not the vote.

Ledger users who voted through Brave Wallet saw this error at the final step. Snapshot's developers confirmed that [Ledger with MetaMask worked](https://community.brave.app/t/error-when-trying-to-sign-cast-vote-on-snapshot-org-with-ledger-via-brave-wallet/332945). Brave fixed the bug in its stable release by March 20, 2022. If the error appears in another browser wallet, switching to MetaMask isolates the cause.

Usually not. In MetaMask, the request has to be scrolled to the end and the down arrow clicked before Sign becomes active.

Some spaces use the ERC-20 Votes (delegated) strategy, which counts only delegated balances. In that case the tokens need delegating before the snapshot block, and delegating does not require moving them. [Delegation and proposal processes](/dao-governance-for-beginners/) are covered elsewhere on this blog. The sources here do not give the delegation steps for each token.

After the vote

A Snapshot vote has no on-chain effect of its own. Turning a result into a change takes a separate on-chain action, which might come from a multisig, a trusted party or a Governor contract. That action is a transaction and costs gas. Voting on a Governor contract directly is a different task from the one above, and it signs a transaction rather than a message. In both cases the risk is the same: the device confirms what it was sent, not what the page claimed to be sending.

What does the device screen actually confirm?

How blind signing and clear signing differ, and what each shows before approval.

Read clear vs blind signing