HTML Validation using Mozilla's HTML5 Validator instance

html5-lint - HTML Validation using Mozilla's HTML5 Validator instance

This is a node.js and Python front-end to the Mozilla Labs' HTML Validator Web Service, located at It was setup in order to be used in the build system of various Mozilla projects, without spamming the main validator (i.e., --see You can read more about the validator at

You can and should use it in your own Mozilla project's build system in order to automatically check your HTML for errors.

The html5-lint module can be installed via npm:

$ npm install html5-lint

Once installed, it can be used like so:

var fs = require( 'fs' ),
    html5Lint = require( 'html5-lint' );
fs.readFile( 'index.html', 'utf8', function( errhtml ) {
  if ( err )
    throw err;
  html5Lint( html, function( errresults ) {
    results.messages.forEach( function( msg ) {
      var type = msg.type, // error or warning 
          message = msg.message;
      console.log( "HTML5 Lint [%s]: %s", type, message );

If you are using the gulp.js build system you may wish to use the gulp-html5-lint plugin. Documentation is available at -h file.html

You can test the parser with the supplied files:

$ ./ -h good.html
The document is valid HTML5 + ARIA + SVG 1.1 + MathML 2.0 (subject to the utter previewness of this service).
$ ./ bad.html
Error: Start tag seen without seeing a doctype first. Expected
  • -h : force text/html
  • -x : force application/xhtml+xml
  • -g : GNU output
  • -e : errors only (no info or warnings)
  • --encoding=foo : declare encoding foo
  • --service=url : the address of the HTML5 validator (defaults to
  • error/warning filtering based on types, categories of errors/warnings