<p>Depends on the number of inputs, the types of scripts the inputs are redeeming, the number of outputs, and the type of scripts that the ouputs are paying to.
The absolute minimum for a transaction that might appear on chain is 60 bytes :</p>

<pre><code>02000000
01
  0000000000000000000000000000000000000000000000000000000000000000
  00000000
  00
  fdffffff
01
  0100000000000000
  00
00000000
</code></pre>

<p>But this just an academic example.  The input is redeeming a utxo where the script does not require any signatures, and the output scriptpubkey is empty.
You're more likely to find a 191 byte transaction such as :</p>

<pre><code>02000000
00
01
01
  0000000000000000000000000000000000000000000000000000000000000000
  00000000
  00
  fdffffff
01
  0100000000000000
  16
    00 14 ffffffffffffffffffffffffffffffffffffffff
02
  21
    020000000000000000000000000000000000000000000000000000000000000001
  47
    3044022077777777777777777777777777777777777777777777777777777777777777770220555555555555555555555555555555555555555555555555555555555555555501
00000000
</code></pre>

<p>Which both redeems a and also pays to a p2wpkh segwit program.
Note that this one doesn't have a change output in it, which most transactions carry.  A second p2wpkh output will be another 32 bytes for a total of 223 bytes.  Still less than your upper bound of 256 bytes.</p>

CC BY-SA 3.0
2018-01-17T23:13:51.607Z
Thank you so much, will review this with others here and see what they think!
user74364
CC BY-SA 4.0
2023-12-10T14:06:48.927Z
I don't understand why 60 bytes is the smallest valid transaction. In your example couldn't you just put 0 outputs and make it 51 bytes instead?
Lagrang3
CC BY-SA 3.0
2018-01-17T18:03:38.850Z
2018-01-17T18:03:38.850Z
arubi
<p>I am looking into completing blockchain transactions over an extremely limited data transport channel. Think even more limited than a satellite connection. The maximum payload I can send at any one time is only 256 bytes. Does anyone here think it would be possible to send a payment transaction to be registered in the blockchain within that single payload? </p>

<p>I'm new to blockchain, so forgive me if this is a very basic question, but I'd like to understand precisely what components need to be sent, which I believe are (coins, recipient, signature) and that's it? Could someone give me more detail as to how many bytes each of these pieces of data would be on the Bitcoin network? If you can think of any network which is more compressed/efficient I would appreciate a pointer there too.</p>

<p>If Bitcoin or no other chain fits within the 256 byte payload to send what it needs to, can you think of any way of making things smaller/compressed? Perhaps hashing some of those values even further in a pre-determined way through an originating application that we can then "unhash/decompress" on the other side with the same properly configured receiving application to regenerate the proper data before being submitted to the chain?</p>

<p>Thank you!
JP</p>

<transaction-weight>
What is the absolute smallest size of the data (bytes) that a blockchain transaction could possibly be?
user74364
# What is the absolute smallest size of the data (bytes) that a blockchain transaction could possibly be?

(Asked by: username_0 on 2018-01-17)

I am looking into completing blockchain transactions over an extremely limited data transport channel. Think even more limited than a satellite connection. The maximum payload I can send at any one time is only 256 bytes. Does anyone here think it would be possible to send a payment transaction to be registered in the blockchain within that single payload?

I'm new to blockchain, so forgive me if this is a very basic question, but I'd like to understand precisely what components need to be sent, which I believe are (coins, recipient, signature) and that's it? Could someone give me more detail as to how many bytes each of these pieces of data would be on the Bitcoin network? If you can think of any network which is more compressed/efficient I would appreciate a pointer there too.

If Bitcoin or no other chain fits within the 256 byte payload to send what it needs to, can you think of any way of making things smaller/compressed? Perhaps hashing some of those values even further in a pre-determined way through an originating application that we can then "unhash/decompress" on the other side with the same properly configured receiving application to regenerate the proper data before being submitted to the chain?

Thank you!
JP

**Tags:** transaction-weight


---

## 1 answers

### Answer by username_1 on 2018-01-17. Score: 3

Depends on the number of inputs, the types of scripts the inputs are redeeming, the number of outputs, and the type of scripts that the ouputs are paying to.
The absolute minimum for a transaction that might appear on chain is 60 bytes :

```
02000000
01
  0000000000000000000000000000000000000000000000000000000000000000
  00000000
  00
  fdffffff
01
  0100000000000000
  00
00000000

```

But this just an academic example. The input is redeeming a utxo where the script does not require any signatures, and the output scriptpubkey is empty.
You're more likely to find a 191 byte transaction such as :

```
02000000
00
01
01
  0000000000000000000000000000000000000000000000000000000000000000
  00000000
  00
  fdffffff
01
  0100000000000000
  16
    00 14 ffffffffffffffffffffffffffffffffffffffff
02
  21
    020000000000000000000000000000000000000000000000000000000000000001
  47
    3044022077777777777777777777777777777777777777777777777777777777777777770220555555555555555555555555555555555555555555555555555555555555555501
00000000

```

Which both redeems a and also pays to a p2wpkh segwit program.
Note that this one doesn't have a change output in it, which most transactions carry. A second p2wpkh output will be another 32 bytes for a total of 223 bytes. Still less than your upper bound of 256 bytes.

> **Comments:**
> **username_0**: Thank you so much, will review this with others here and see what they think!  
> **username_2**: I don't understand why 60 bytes is the smallest valid transaction. In your example couldn't you just put 0 outputs and make it 51 bytes instead?  

---

