TL;DR: A P2WPKH input should be estimated with **68.0 vbytes**. Valid inputs generally weigh in the range of 67.75 – 68.25 vbytes. 68.25 vbytes only appear with non-standard high-s and high-r signatures. 68.0 vbytes is the conservative estimate allowing for high-r signatures. A wallet using signature grinding will always produce a 67.75 vbyte input which is highly recommended.

---

Each input commits to spending a specific UTXO by providing its *transaction outpoint*:

    PREVOUT: hash (32 bytes)
             index (4 bytes)

The *scriptsig* for a P2WPKH input is _empty_, however, the scriptsig length must be provided as `0`:

    SCRIPTSIG: length (1 byte)
      no content

Each transaction input has its own *sequence* number:

    sequence (4 bytes)

A P2WPKH input requires a *witness* in the transaction's witness block:

    WITNESS: length (1 byte)
      push opcode (1 byte)
      signature: (71 or 72 bytes)¹
      push opcode (1 byte)
      pubkey (33 bytes)

¹ depending whether r-value is high or low. Non-standard high-s, high-r signatures would be 73 bytes, also see [What is the maximum size of a DER encoded ECDSA signature?](https://bitcoin.stackexchange.com/a/77192/5406).


Therefore, a P2WPKH transaction input to a transactions adds a maximum of…

weight:

    4 × (32 + 4 + 1 + 4) + 1 + 1 + 72 + 1 + 33 = 272 WU
    
vsize:

    32 + 4 + 1 + 4 + (1 + 1 + 72 + 1 + 33) / 4 = 68 vbytes


serialized byte length: 

    32 + 4 + 1 + 4 + 1 + 1 + 72 + 1 + 33 = 149 bytes

If the signing wallet uses signature grinding, the r-value would always be 32 bytes, reducing the signature to 71 bytes, and the above maxima to 271 WU, 67.75 vbytes, and 148 bytes respectively.

Note that adding the first segwit input adds **3 witness bytes** to the transaction: the *witness marker* and *witness flag* after the transaction version, and the *witness count* as the first byte of the witness block after the outputs.  
The overall transaction elements of a segwit transaction are:

    version (4 bytes)
    witness marker (1 WU)
    witness flag (1 WU)
    input count (1 byte)
      inputs (variable size)
    output count (1 byte)
      outputs (variable size)
    witness count (1 WU)
      witnesses (variable weight)
    locktime (4 bytes)