Take a look at this: https://blockchair.com/bitcoin/block/0000000000000000cbbceb342e07071f9621607e044ec909aa86fcdf88e8a

```
Size = 1,158,038 bytes
Weight units = 3,992,825 WU
```

What does it mean now? So size is what you probably understand well – if you have a file on your hard disk, its size is measured in bytes, and that's exactly what the size is here. This is the number of bytes you would need to save such a block in memory or on the hard disk. This is the sum of non-production data (nWD) and witness data (WD). Let's call this the absolute size for clarity (AS).

There is also something like virtual size (VS). This is a new concept where the block is measured in new units (vbytes). It is calculated as (absolute size of non-production data) + (absolute size of the witness data) / 4.

The weight of the block (BW) is calculated in units of weight and calculated as (absolute size of the non-production data) * 4 + (absolute size of the witness data). This is actually what you mentioned in your post: `(tx size with witness data removed) * 3 + (tx size)`

because the transaction itself contains both witness and non-witness data.

Now we know that:

```
AS = 1,158,038 bytes = nWD bytes + WD bytes
BW = 3,992,825 WU = nWD * 4 weight units + WD weight units
```

What are the limits in the protocol? Currently there is no more block size restriction. There is only one limit to the weight of the block. This limit is set at 4,000,000 WU. It follows that in the case of a block without Segwit txs, the weight of each byte is 4 WU, which is why such a block without Segwit txs is limited by the absolute size of 1 MB.

Blocks containing Segwit txs may be larger, and there are some theoretical calculations that say you can achieve an absolute block size of about 3.7 MB. But this theoretical limit is exactly that – theoretically. In practice, its absolute size would not reach that limit, even if the block were filled with Segwit txs.

At present, most blocks contain both txs – segwit and legacy, so we usually see block sizes of full blocks in the range of 1 – 2.2 MB. The block is full when its weight is very close to the protocol limit of 4,000,000 WU.

This implies that it is incorrect to assume that a 1.1 MB block consists of 1,000,000 bytes nWD and the remainder is WD. That would not work because the weight of 1,000,000 nWD bytes would already be 4,000,000 WU. So if we add the weight of WD, we would be over the limit. This is not possible.

So if we know that AS = 1,158,038 KB, then it's rather 944,929 bytes of nWD weighing 3,779,716 WU and the rest is 213,109 bytes WD weighing 213,109. This gives a total weight of the block of 3,779,716 + 213,109 = 3,992,825 WU.

We can now calculate VS:

```
VS = nWD vBytes + WD / 4 vBytes = 944,929 + 213,109 / 4 = 998,206,25 vBytes
```

The virtual size (VS) can not be larger than 1.000.000 vByte. So that's what it means when someone says that the new block size is still limited to 1 MB – in fact, that means 1 million vbytes.