The Block Header is one of the 5 elements in a Bitcoin block. Regardless of how many transactions are stored in a block, a Bitcoin Block Header of a Bitcoin block is always 80 bytes and consists of 6 elements as shown below.

1) Version Number: It has a fixed size of 4 bytes. Version number shows the current version of its block.
2) Previous Hash: Previous hash has a fixed size of 32 bytes. It is, previous block’s block header’s hash. This is essential for chaining up the blocks. Adding previous blocks’ data into new one ensures that a structure that is near impossible to alter. Every Bitcoin block contains the data of all the earlier blocks starting from block number 1 (Genesis Block) as a 32 bytes hash. Like a matryoshka doll. Every block in the whole blockchain contains all the information of the entire history up to that block. An elegant design… (To read more about what a hash is, click here)
3) Merkle Root: 32 bytes sized number which is a root hash of all the hashes of transactions in that block. Merkle Root is calculating by coupling up all the transactions’ hashes until there is only one hash left which is the root of this structure, AKA merkle root. It is fascinating because if there was not a Merkle Root structure, Bitcoin and cryptocurrencies would not have been here today. Merkle trees are really interesting. If you would like to read more about merkle tree structure, please click here.
4) Timestamp: It is stored as a number which is 4 bytes. For example, here is the Genesis Block’s time stamp: 29ab5f49 which is 1231006505 in decimal. It can be converted to year, month, date, hour, minute, seconds format or however you like it.
5)Difficulty Target: This target is a number with a size of 4 bytes. This number is calculated every 2016 blocks. Due to the Bitcoin algorithm every block should be appended to the chain every 10 minutes.
New Difficulty = (Current difficulty) x [ 20160 / (Total minutes spent for the last 2016 blocks) ]
If last 2016 blocks are not found in 20160 minutes, the difficulty target adjusts itself to meet the 10 minutes criteria. If average time between blocks are less than 10 minutes, the difficulty targets gets harder to guess so it takes more time to compute and find a new block. If the average time is more than 10 minutes it gets easier so it takes less time to find a block. With the help of this adjustment every block theoretically takes 10 minutes. This cycle repeats approximately every 2016 block which is supposed to be 2 weeks.
The image above shows Bitcoin difficulty throughout the years.
6) Nonce: Nonce is a 4 bytes(32 bit) arbitrary number needed for miners to solve the puzzle and find the new Bitcoin block. The mechanism is simply like this: If the calculated hash of the block is less than the number defined by the difficulty than current block is valid and appended to the chain. Basically, if you find a number less than the current difficulty target, you find a new block.
Let’s say a miner wants to add a block to the blockchain. Miner has a candidate block and miner calculates the hash of the candidate block to obtain a number in base 16 and compares it to a number in base 16(difficulty target) defined by the Bitcoin algorithm. If the miner’s number is less than the number defined by the difficulty of Bitcoin then voilà! You find the new block.

But what if the hash of our candidate block is not less than the difficulty target, we keep calculating our candidate block over and over again and get same result(hash) every time. And that is where nonce comes in! (By the way if you have not already, you can read more about hashes here. It helps to form a basic understanding and it is also fun.)
We add a field for an arbitrary number. Let’s say our nonce equals to zero. We calculate the hash of our candidate block and compare it to the current target set by network. If it is not less than the current difficulty target then we try it with our nonce equals to 1, then 2, then 3… until we find a number less than current target. We change it every time and get a different hash (number) before comparing to.
Thank you for reading. I hope, you enjoyed it and/or it helped you somehow.
Have a nice day :)