Signing legibility

Your wallet shows you hex. We show you a sentence

People approve things they'd never agree to, because the request is unreadable — and they only find out weeks later. Cleartext translates it before you click.

3 sec
to read a request most people can't read at all
0.4s
added to signing, on average
Free
for people, priced per check for wallets
Nothing unusual

Swap 1,200 USDC for 0.4059 ETH

Check this

This contract can spend all your USDC, with no time limit

approve(address,uint256) · amount = max uint256
High risk

This is not a claim. It moves $13,797 out of your wallet.

0x9E4d…c018 · deployed 4 minutes ago
Could not verify

We could not finish reading this request

simulation failed · treat as unverified
Nothing unusual

Send 250.00 USDC

Works alongside the wallet you already use

  • MetaMask
  • Rabby
  • Phantom
  • Coinbase Wallet
  • Trust
  • Ledger
What goes wrong

How a wallet actually gets emptied

Not by hacking. By asking politely, in a language you don't read. Click through a real evening.

The same thing, without crypto

It's the bar tab problem

What you thought

They'll charge me for tonight's drinks

You hand over your card to open a tab. You settle up, you leave, it's done.

What you agreed to

They can charge this card any amount, forever

That's what the paperwork said. The paperwork was in a language you don't read, and nobody translated it.

In crypto this is called a token approval. It is the most common way people lose their savings — and it happens in one click that produces no visible result.
The fix

The same message, translated

This decoder is live. Paste any signing request, or start with an example — the verdict changes with what's actually in it.

Signing request
Examples:
Why this isn't solved already

The same signature, shown three ways

An unlimited approval to an unverified contract. Two of these tell you the function name. One tells you what it costs you. Reconstructions, not screenshots.

Typical wallet
Give permission to access your USDC?

Spending cap requested

115792089237316195423570985008687907853269984665640564039457584007913129639935
Technically true. Unreadable.
Wallet with a warning layer
Unlimited approval detected

This transaction requests an unlimited token allowance. Proceed with caution.

Warns you, then leaves you the same two buttons.
Cleartext
This contract can spend all 4,182.60 USDC in your wallet, forever

It needs 500 for this deposit. Cap it, or sign the full amount.

500 USDC Unlimited
A number you understand, and a fix in one tap.
How it works

Reading is not signing

A translator standing next to you can read the contract and warn you off it. They never touch the pen. Cleartext reads. Your wallet still signs.

What it reads
The signing request itselfThe contract, the function, and the values — the same message your wallet receives.
Your public wallet addressTo check balances and existing approvals, so it can say how much is actually at risk.
A threat database, over the networkWhether the destination is a known drainer. This part can't run on your machine — the data changes hourly.
What it can never do
Touch your private key or seed phraseIt has no access to either. Decoding a message needs no key at all.
Sign, send, or approve anythingOnly your wallet can sign. Cleartext makes the consequence visible — it can't act.
See the rest of your browsingIt wakes on a signing request and sleeps otherwise. Narrow access is the point.
This version decodes on your machine and does not send the request anywhere. A later version can check known drainers over the network — that part is not on yet, and we will say so when it is.
For people

Install it beside the wallet you already use

Nothing to migrate, no new keys, no new seed phrase.

1
Download the extension

Get the zip, unzip it, and load the folder in Chrome. Your wallet stays exactly as it is.

2
Sign as normal

When a site asks for a signature, Cleartext decodes it and shows the plain-language verdict before your wallet's confirmation.

3
Reject, or continue to your wallet

The overlay sits in front of the confirmation. Reject stops the request here. Continue still needs your wallet’s sign.

4
What’s already open stays live

Approvals you granted before installing are not cleaned up in this version. The approval manager is next.

Permissions, in full
Read signing requests on any siteTriggered when a site asks you to sign — not while you browse.
Read your wallet addressPublic information. Used to calculate what's at risk.
Nothing is sent to a server in this versionDecoding runs on your machine. A threat database can come later — this version does not phone home.
Install

Download it, then add it in Chrome

Chrome will not install an extension from a website. Google blocked that. You download the file, then load it once — after that it stays in the browser.

Download Cleartext.zip

  1. Unzip the file. You should get a folder named cleartext
  2. Open a new tab and go to chrome://extensions
  3. Turn on Developer mode (top right)
  4. Click Load unpacked and select that unzipped cleartext folder
  5. Pin Cleartext, then refresh this page. The live test below should read On.
Live test

Use it against a real wallet

Install the extension first. Then connect the wallet you already use. Cleartext appears before the wallet does.

Extension status Not detected — load the extension, then refresh

Once it is on, pick a test below. The message test goes all the way to your wallet. The approval test is a preview — nothing is broadcast.

Results show up here.
For wallets

Or skip the extension entirely

Embed Cleartext and the user installs nothing — the verdict becomes your confirmation screen. Three lines, themeable to your design system, light and dark.

Free
50K
checks a month, everything included
Wallet
$0.0008
per check, volume tiers from 1M
Get an API key
// wraps your existing signing handler import { check } from '@cleartext/sdk' const verdict = await check({ request, chainId, account }) if (verdict.severity === 'block') return showBlock(verdict)

Priced per check, not per seat — it scales with signing volume instead of headcount.