For companies that hold bitcoin

Prove you control the wallet.

Signing Room turns a bitcoin wallet into evidence: proof the keys are yours, and a plain-English account of what each payment actually does. An auditor, insurer or counterparty can check both without taking your word for it.

Proof of control

No account · nothing uploaded · this page makes no network calls

Control proved

The wallet is theirs.

signed by a key only this wallet can derive, over a question nobody could prepare for

ChallengeAcme Exchange, ticket 41822
Controlstb1qk663n5…f7kfr6 this address
Signed bythe wallet's key · 63969fb2
Checked Answers this challenge and no other — it cannot be reused
Checked Anyone can re-check it without trusting them, or us
This browser, right now Checking…
Plug in a device · WebHID Checking for WebHID…
Plug in a device · WebUSB Checking for WebUSB…
Scan an animated QR Checking for a camera API…
Open and save transaction files Checking file handling…

Detected from this browser's own capabilities, not from its user-agent string.

The point of the thing

Proving it to someone outside your company.

Sooner or later an auditor, an insurer or a trading partner asks you to prove two things: that the coins are really yours, and that a named person really approved a particular payment. Both should be answerable without them having to trust our software, or yours.

Live now

“These coins are ours.”

The party asking picks a phrase nobody could have prepared for in advance. The wallet's key signs it, on the device that holds it, and the result names the wallet and the address it controls. It cannot be reused to answer a different question later.

Shared wallets

“This person approved this exact payment.”

Every approval is tied to the exact transaction and the exact summary the approver was shown, worked out on their own machine, and the whole thing stops if two people were shown different things.

A proof only you can check is not a proof
So a separate program that shares none of our code checks ours, and agrees on fourteen out of fourteen cases — most of them deliberately hostile: a forged signature, a key from outside the wallet, one key signing twice, an expired challenge. The same standard the audit record is held to.

You can do the first one today, with any wallet that signs messages — Sparrow, Bitcoin Core, Electrum. What is not settled is which physical devices can take part: support varies by manufacturer, and we will establish that against real hardware rather than guessing here.

The mistake this prevents

The payment was right.
The rest of it was not.

A bitcoin payment almost never sends a round number. You spend a whole coin and the change comes back to you, the way a £20 note comes back as £13.40. So a payment to one supplier usually has two destinations: the supplier, and you. This is true whether one person holds the key or five people have to agree.

Everyone checks the supplier line. It is the one they agreed in the thread, and it is correct. Almost nobody checks the second line, because the software they are approving in shows it as an address they have no way to recognise.

That is where the money goes. Change the second address and the supplier still gets paid exactly what was agreed, while the remaining 7.5 of a 10 coin balance leaves for good. Every approver saw the correct payment and signed.

What most wallets show you

Output 1tb1q4wm…9tqc · 2.50000000
Output 2tb1q9x8f…3knv · 7.49964000

Two addresses that look alike. Nothing on this screen tells you which one is yours.

Serious Money is going to an address this page cannot confirm is yours

What Signing Room shows instead.

Why the check has to happen on your machine
Whoever prepares a transaction can also prepare the screen that describes it. Signing Room works the description out from the transaction itself, on your own computer, and so does everyone else approving it. If any two of you are shown different transactions, the numbers you each arrive at will not match and the approval stops there.

The other thing it does

From a wall of code to a sentence you can act on.

Four steps, run on your own machine, from the file you were sent. Everything after this point is mechanical and cannot change who gets paid. This is the step where a person decides something.

  1. 1Read the file Anything it cannot make sense of is reported, never skipped over.
  2. 2Work out what is yours Every address rebuilt from your own wallet and compared, so change coming back to you is recognised as yours.
  3. 3Add it up Amounts and the network fee, calculated rather than taken from the file on trust.
  4. 4Check it Dozens of checks. Anything it could not check says so, rather than showing you a tick.

1 · The file you were sent

70736274ff0100 7d0200000001e1 649b7bcb5ea45e d23e212b59f316 f03c741a8f61cd 96d6c4fd46612e 2e0f2901000000 00fdffffff0280 969800000000

This is what a bitcoin payment looks like before anything explains it. It is what most people are approving.

2 · Whose coins are these?

Every address is rebuilt from your own wallet and compared. An address can only be called yours if it can be rebuilt, so a stranger's can never pass as one.

Coins being spent
3 all yours
Payment
Meridian Ltd not yours
The leftover
back to you

3 · What it adds up to

Leaving your wallet

2.50000000 BTC

Coins being spent
10.50000000 BTC
To Meridian Ltd
2.50000000 BTC
Back to you
7.99963476 BTC
Network fee
0.00036524 BTC

The fee is calculated from the payment's real size, never assumed. Get that wrong and the figure a person reads is wrong too.

4 · What we found

Checked The leftover money comes back to your wallet
Checked Your signature covers the whole transaction
Check this This transaction cannot be sped up later
Not checked Could not compare the fee to current network rates
“Not checked” is not the same as “fine”
The last one needs live internet data, and this page has none on purpose. It says so rather than showing you a tick. Software that ticks things it did not look at is how people stop trusting the ticks that matter.

The checks

Forty-five ways a payment can be wrong.

Each one has a test built to trigger it on purpose, and the build fails if any check has never been made to fire. Anything that could not be checked keeps its own colour and never quietly counts as a pass.

Most serious

Where the money actually goes

Whether the coins being spent are yours, and whether the leftover really comes back to you. This is the family that loses money.

Serious

What your signature covers

A signature normally locks the whole payment. There are ways to arrange one so that parts can still be changed afterwards, and they rarely happen by accident.

Worth checking

What it costs

The network fee, worked out rather than taken on trust, and flagged when it is a large share of what you are moving. Fees cannot be recovered.

Worth checking

Whether it matches what you were told

The amounts and recipients someone described when they proposed this, checked against what the payment actually does.

Notes

Things worth knowing

Whether the fee can be raised later, whether it can confirm straight away, whether an address has been used before, and which bitcoin network this is for.

Most serious

Whether everyone is looking at the same thing

If two approvers were shown different payments, or one key is counted twice, or a coin gets spent elsewhere halfway through, the approval stops.

Against the reference

Checked against Bitcoin itself.

Software that agrees with itself has proved nothing. Every time our tests run, the numbers this page would show you are compared against Bitcoin Core — the reference implementation the whole network runs on — and the transaction we assemble is handed to it and mined. If we read a payment wrongly, telling you about it confidently would only make things worse.

Checked against Bitcoin Core v31.1.0

Wallet details
3/3 read identically
Your addresses
10/10 rebuilt identically
Amounts and fee
every figure matches
Finished payment
identical, to the byte
Accepted by the network
our payment, mined
Size estimate
398 predicted, 397 actual

59/59 checks passed

The record

A record your auditor can check themselves.

Everything that happens to a wallet is written to a running record where each entry is sealed against the one before it. Change any line after the fact, delete one, or reorder two, and every entry after it stops adding up.

They do not have to trust our software

The checking tool is a short, separate program that shares no code with ours. An auditor can read it in an afternoon, or write their own. A record only you can verify is not a record, it is a receipt from the company being audited.

Five ways of faking it, all caught

Edit an entry, remove one, swap two around, insert a forgery, or rewrite the whole tail so it adds up again. All five are refused, and it names the exact point where the record stops being consistent.

Catching an attack must not look like consent

If someone tampers with a payment mid-approval, it is detected, the approval is not recorded, everything stops, and what happened goes into the record. The record still checks out afterwards.

The boundary

What this never does.

Touch your keys

Your seed phrase and your private keys never come near this. Your own device does the signing; we only put the pieces together afterwards. There is no code here that could do anything else.

Hold your coins

We are not a custodian and we are not one of your approvers. Your wallet is yours before we arrive and exactly the same after we go.

Lock you in

Export everything, switch us off, and carry on spending from your wallet in ordinary bitcoin software the same day. We test that before every release, not when somebody asks.

And one more: we will never tell you that you are compliant
Whether any of this satisfies your auditor, your insurer or your counterparty is their decision, under rules we have no standing to interpret for them. We make the evidence, and we make it checkable by anyone. We do not grade it, and this page names no regulation or certification, because we are not in a position to promise you any of them.

Before you start

Any browser works. A cable is optional.

Most serious hardware wallets have no cable at all. You use them by holding them up to a scrolling QR code on screen, which works in every browser including on a phone. Plugging a device in is a convenience some browsers offer and others deliberately do not.

Checked 2026-08-25. Your own browser is highlighted below.
BrowserPlug a device inScan a QR codeFilesEverything works?
Chrome · Edge (desktop 89+)YesComplete
Opera (desktop 76+)YesComplete
Brave · Arc · VivaldiUsually, may need turning onComplete
Firefox — any versionNo, by choiceYes, by QR or file
Safari — macOSNo, by choiceYes, by QR or file
Any browser on iOS · iPadOSNoLimitedYes, by QR
Chrome on AndroidSome devicesPartial
On an iPhone or iPad, every browser is really Safari
Chrome and Firefox on an iPhone are Safari with a different icon, so they all behave the same way. Scanning a QR code is not a workaround there. It is how the most secure hardware wallets are designed to be used.