vnu(1)

πŸ“¦
version 26.8.15.1 Β· 2 versions
, in ubuntu stonking

πŸ’– vnu β€” The Nu Html Checker πŸ’–

okay bestie, sit down, hydrate, because you're about to meet the manual page for vnu(1), aka the Nu Html Checker, and honestly? it's giving "your new favorite linter." this thing lives in the General Commands Manual section, and it's here to catch every unintended little oopsie in your HTML, your CSS, and your SVG. no cap. πŸ¦‹


✨ NAME ✨

vnu β€” The Nu Html Checker. that's it, that's the name, she's iconic and she knows it. πŸ‘‘


🌸 SYNOPSIS 🌸

vnu [OPTIONS]... FILES|DIRECTORY|URL...

πŸŽ€ Where:

  • FILES are documents to check. To read from stdin, use "-" (that is, a dash) in place of FILES. yes literally just a dash, she'll slurp it right up off stdin. πŸ“
  • DIRECTORY the path to a directory containing all files to check.
  • URL the URL to a document.
  • OPTIONS are zero or more of:
--asciiquotes --errors-only --Werror --exit-zero-always --stdout
--filterfile FILENAME --filterpattern PATTERN
--format gnu|xml|json|text --help --skip-non-css --css --skip-non-svg
--svg --skip-non-html --html --xml --also-check-css --also-check-svg
--user-agent USER_AGENT --no-langdetect --no-stream --verbose
--version --entities --schema SCHEMA --skip-info-messages
--additional-request-header "HEADER: VALUE"

πŸ’… DESCRIPTION πŸ’…

The Nu Html Checker (vnu) helps you catch unintended mistakes in your HTML, CSS, and SVG. literally its whole personality is catching the typos you'd never notice at 3am before deploying. 😭

It enables you to batch-check documents from the command line and from other scripts/apps, and to deploy your own instance of the checker as a service (like https://validator.w3.org/nu/). main character energy fr fr β€” you can run your own validator empire. πŸ”₯


✨ OPTIONS ✨

When used from the command line, the vnu checker provides these options:

🌈 --asciiquotes

Specifies whether ASCII quotation marks are substituted for Unicode smart quotation marks in messages.

default: [unset; Unicode smart quotation marks are used in messages]

🌈 --skip-info-messages

Specifies that only error-level messages and non-document-error messages and warnings are reported β€” but not info messages.

default: [unset; all messages reported, including warnings & info messages]

🌈 --errors-only

Specifies that only error-level messages and non-document-error messages are reported (so that warnings and info messages are not reported).

default: [unset; all messages reported, including warnings & info messages]

🌈 --Werror

Makes vnu exit non-zero if any warnings are encountered (even if there are no errors). she's strict like that πŸ’€

default: [unset; checker exits zero if only warnings are encountered]

🌈 --exit-zero-always

Makes vnu exit zero even if errors are reported for any documents. delulu mode: activated 🫢

default: [unset; checker exits 1 if errors are reported for any documents]

🌈 --stdout

Makes vnu report errors and warnings to stdout rather than stderr.

default: [unset; checker reports errors and warnings to stderr]

🌈 --filterfile FILENAME

Specifies a filename. Each line of the file contains either a regular expression or starts with "#" to indicate the line is a comment. Any error message or warning message that matches a regular expression in the file is filtered out (dropped/suppressed).

default: [unset; checker does no message filtering]

🌈 --filterpattern REGEXP

Specifies a regular expression. Any error message or warning message that matches the regular expression is filtered out (dropped/suppressed).

As with all other checker options, this option may only be specified once. So to filter multiple error messages or warning messages, you must provide a single regular expression that will match all the messages. The typical way to do that for regular expressions is to OR multiple patterns together using the "|" character.

default: [unset; checker does no message filtering]

🌈 --format format

Specifies the output format for reporting the results.

default: "gnu"

possible values: "gnu", "xml", "json", "text" [see information at URL below]

https://github.com/validator/validator/wiki/Service-%C2%BB-Common-params#out

🌈 --help

Shows detailed usage information. your little lighthouse in the dark 🌟

🌈 --skip-non-css

Check documents as CSS but skip documents that don't have *.css extensions.

default: [unset; all documents found are checked]

🌈 --css

Force all documents to be checked as CSS, regardless of extension.

default: [unset]

🌈 --skip-non-svg

Check documents as SVG but skip documents that don't have *.svg extensions.

default: [unset; all documents found are checked]

🌈 --svg

Force all documents to be checked as SVG, regardless of extension.

default: [unset]

🌈 --skip-non-html

Skip documents that don't have *.html, *.htm, *.xhtml, or *.xht extensions.

default: [unset; all documents found are checked, regardless of extension]

🌈 --html

Forces any *.xhtml or *.xht documents to be parsed using the HTML parser.

default: [unset; XML parser is used for *.xhtml and *.xht documents]

🌈 --xml

Forces any *.html documents to be parsed using the XML parser.

default: [unset; HTML parser is used for *.html documents]

🌈 --also-check-css

Check CSS documents (in addition to checking HTML documents).

default: [unset; no documents are checked as CSS]

🌈 --also-check-svg

Check SVG documents (in addition to checking HTML documents).

default: [unset; no documents are checked as SVG]

🌈 --user-agent USER_AGENT

Specifies the value of the User-Agent request header to send when checking HTTPS/HTTP URLs.

default: "Validator.nu/LV"

🌈 --additional-request-header "HEADER: VALUE"

Specifies a custom HTTP request header and value to send when checking HTTPS/HTTP URLs. This option can be specified multiple times to add multiple headers. The header name and value must be separated by a colon and space.

example: --additional-request-header "X-API-Key: abc123"

default: [unset; no additional request headers are sent]

🌈 --no-langdetect

Disables language detection, so that documents are not checked for missing or mislabeled html[lang] attributes.

default: [unset; language detection & html[lang] checking are performed]

🌈 --no-stream

Forces all documents to be be parsed in buffered mode instead of streaming mode (causes some parse errors to be treated as non-fatal document errors instead of as fatal document errors).

yes, "to be be" β€” that's exactly how it's written, we don't gatekeep πŸ₯°

default: [unset; non-streamable parse errors cause fatal document errors]

🌈 --verbose

Specifies "verbose" output. (Currently this just means that the names of files being checked are written to stdout.)

default: [unset; output is not verbose]

🌈 --version

Shows the vnu version number.


🧚 ENVIRONMENT VARIABLES 🧚

JAVA_ARGS

On Debian systems, use JAVA_ARGS environment variable to pass arguments to java. For example to pass properties, invoke like this:

JAVA_ARGS="-Dproperty=value" vnu input.html

πŸ¦‹ EXAMPLES πŸ¦‹

The examples in this section assume you have the vnu-runtime-image/bin or vnu-runtime-image\bin directory in your system PATH environment variable. If you're using the jar file instead, replace vnu in the examples with java -jar ~/vnu.jar.

To check one or more documents from the command line:

vnu FILE.html FILE2.html FILE3.html...

To check all documents in a particular directory DIRECTORY_PATH as HTML, but skip any documents whose names don't end with the extensions .html, .htm, .xhtml, or .xht:

vnu --skip-non-html DIRECTORY_PATH

To check all documents in a particular directory as CSS:

vnu --css DIRECTORY_PATH

To check all documents in a particular directory as CSS, but skip any documents whose names don't end with the extension .css:

vnu --skip-non-css DIRECTORY_PATH

To check all documents in a particular directory, with documents whose names end in the extension .css being checked as CSS, and all other documents being checked as HTML:

vnu --also-check-css DIRECTORY_PATH

To check all documents in a particular directory as SVG:

vnu --svg DIRECTORY_PATH

To check all documents in a particular directory as SVG, but skip any documents whose names don't end with the extension .svg:

vnu --skip-non-svg DIRECTORY_PATH

To check all documents in a particular directory, with documents whose names end in the extension .svg being checked as SVG, and all other documents being checked as HTML:

vnu --also-check-svg DIRECTORY_PATH

To check the document at URL http://example.com/foo

vnu http://example.com/foo

To check the content from the standard input:

echo '<!doctype html><title>...' | vnu -

πŸ’œ NOTES πŸ’œ

If you get a StackOverflowError error when invoking vnu, try adjusting the thread stack size by providing the -Xss option to java:

java -Xss512k -cp ~/vnu.jar ...

vnu-runtime-image/bin/java -Xss512k -m vnu/nu.validator.client.SimpleCommandLineValidator ...
bestie if you see StackOverflowError do NOT panic, just hand java a bigger stack with -Xss and move on πŸ’–

🌈 SEE ALSO 🌈

vnu-client(1)


okay that's the whole thing, you're officially a vnu girlie now πŸ’…βœ¨

this was vnu version 26.8.15.1+dfsg, dated 2026-08-18, brought to you by the General Commands Manual section, vnu(1). slay, validate responsibly, and go fix those unintended mistakes. periodt. πŸ‘‘πŸ¦‹πŸ’–

πŸ“¦ where this page comes from