Did you know that even the vCards listed in the official RFC are not valid? It clearly says
The vCard object MUST contain the FN, N and VERSION types. Still, the example vCards are both clearly missing the N type. As somebody else remarked, releasing a format spec without some reference validator is bound to result in all sorts of invalid implementations.
After searching for a vCard validator without success, I've therefore started my own vCard module in Python. It tries to create an object with all the information from a vCard string, and returns what I hope are useful error and warning messages if there's anything wrong.
Update: Added file validation - Now you can validate files with several vCards from the command line.
Install / upgrade:
sudo pip install --upgrade vcard
Validate vCard files: