ExifVersion (0x9000) is a required tag in the ExifIFD that names the version of the Exif standard the writer followed. It is not stored as a number but as four ASCII bytes with no terminator, which is easy to see in ExifTool's verbose dump:
$ exiftool -v3 photo.jpg | grep -A2 ExifVersion
| | 1) ExifVersion = 0232
| | - Tag 0x9000 (4 bytes, undef[4]):
| | 008e: 30 32 33 32 [0232]Bytes 0x30 0x32 0x33 0x32 are the characters "0232", meaning Exif 2.32.
| Value | Version | Year |
|---|---|---|
| 0210 | 2.1 | 1998 |
| 0220 | 2.2 | 2002 |
| 0221 | 2.21 | 2003 |
| 0230 | 2.3 | 2010 |
| 0231 | 2.31 | 2016 |
| 0232 | 2.32 | 2019 |
| 0300 | 3.0 | 2023 |
Version 2.31 added the offset time tags, so a file that reports 0220 but carries OffsetTimeOriginal was most likely edited later by software that left the version alone. Version 3.0 allows UTF-8 text in tags that used to be ASCII only. CIPA has since published 3.1.
A claim, not a check
Nothing enforces the value. When ExifTool 12.76 creates a new ExifIFD it writes 0232, along with FlashpixVersion 0100 and ColorSpace Uncalibrated. On an existing file it keeps whatever is there: setting a test image to 0220 and then adding OffsetTimeOriginal left it at 0220. Readers parse tags by ID and type, not by version, so a mismatch rarely breaks anything. It is still a clue in forensic work, where an unexpected version string can hint at the software that produced a file.
You can set it if a validator insists:
exiftool -ExifVersion=0232 photo.jpg