pip install py_w3c


There are 3 methods of validating:

  1. validate url - HTMLValidator().validate(url)
  2. validate file - HTMLValidator().validate_file(filename_or_file)
  3. validate fragment - HTMLValidator().validate_fragment(fragment_string)

You can pass charset or doctype while creating validator instance. This will force validator to use passed doctype or charset for validation. Example:

vld = HTMLValidator(doctype="XHTML1", charset="utf-8")
# now validator uses XHTML1 doctype and utf-8 charset ignoring doctype and charset in the document content


  • As library:
    # import HTML validator
    from py_w3c.validators.html.validator import HTMLValidator

    # create validator instance
    vld = HTMLValidator()

    # validate

    # look for errors
    print vld.errors  # list with dicts

    # look for warnings
    print vld.warnings
  • As standalone script - (not very usefull right now). Only url validating is allowed for standalone script, wich prints warnings and errors to the console.
    w3c_validate http://datetostr.org

Running tests:

python -m unittest discover