W3C HTML Validator
<img src=https://centerkey.com/graphics/center-key-logo.svg align=right width=200 alt=logo>
A package for testing HTML files or URLs against the W3C validator

1) Setup
Install
Install package for node:
$ npm install --save-dev w3c-html-validator
Import
Import into your application:
import { w3cHtmlValidator } from 'w3c-html-validator';
2) Usage
Call the validate() function:
const options = { filename: 'docs/index.html' };
w3cHtmlValidator.validate(options).then(console.log);
To display formatted output, replace console.log with w3cHtmlValidator.reporter:
w3cHtmlValidator.validate(options).then(w3cHtmlValidator.reporter);
To see some example validation results, run the commands:
$ cd w3c-html-validator
$ node examples.js
<img src=https://raw.githubusercontent.com/center-key/w3c-html-validator/main/examples.png
width=800 alt=screenshot>
3) Options
validate()
html | string | null | HTML string to validate. |
filename | string | null | HTML file to validate. |
website | string | null | URL of website to validate. |
checkUrl | string | 'https://validator.w3.org/nu/' | W3C validation API endpoint. |
ignoreLevel | 'info' or 'warning' | null | Skip unwanted messages.* |
output | 'json' or 'html' | 'json' | Get results as an array or as a web page. |
*The ignoreLevel option only works for 'json' output. Leven 'warning' also skips 'info'. | | | |
reporter()
maxMessageLen | number | null | Trim validation messages to not exceed a maximum length. |
title | string | null | Override display title (useful for naming HTML string inputs). |
4) TypeScript Declarations
The TypeScript Declaration File file is w3c-html-validator.d.ts
in the dist folder.
The output of the w3cHtmlValidator.validate(options: ValidatorOptions) function is a promise
for ValidatorResults object:
type ValidatorResults = {
validates: boolean,
mode: 'html' | 'filename' | 'website';
html: string | null,
filename: string | null,
website: string | null,
output: 'json' | 'html',
status: number,
messages: ValidatorResultsMessage[] | null,
display: string | null,
};
5) Mocha Example
import assert from 'assert';
import { w3cHtmlValidator } from 'w3c-html-validator';
describe('Home page', () => {
it('validates', (done) => {
const handleResults = (results) => {
assert(results.status === 200, 'Request succeeded');
assert(results.validates, 'Home page validates');
done();
};
const options = { filename: 'docs/index.html' };
w3cHtmlValidator.validate(options).then(handleResults);
});
});
6) Command Line
$ npm install --save-dev w3c-html-validator
$ w3c-html-validator docs/index.html
or as an npm script in package.json:
"scripts": {
"validate": "w3c-html-validator docs/index.html",
},
Note: This feature is currently just experimental.
7) Gulp Task
This library is available as a Gulp plugin:
https://github.com/center-key/gulp-w3c-html-validator