LinuxCommandLibrary

idnits

Check Internet Draft syntax and formatting

TLDR

Check a file for nits

$ idnits [path/to/file.txt]
copy

Count nits without displaying them
$ idnits --nitcount [path/to/file.txt]
copy

Show extra information about offending lines
$ idnits --verbose [path/to/file.txt]
copy

Expect the specified year in the boilerplate instead of the current year
$ idnits --year [2021] [path/to/file.txt]
copy

Assume the document is of the specified status
$ idnits --doctype [standard|informational|experimental|bcp|ps|ds] [path/to/file.txt]
copy

SYNOPSIS

idnits [options] [draft-file ...]

PARAMETERS

-h, --help
    Display usage help and exit

-v, --version
    Output version information and exit

-q, --quiet
    Suppress non-fatal warnings

-t, --terse
    Show only fatal errors

--draft DRAFT
    Specify draft name (e.g., draft-ietf-foo-01)

--sheet SHEET
    Use alternate style sheet URL

--ignore PATTERN
    Skip checks matching regex PATTERN

--mute PATTERN
    Silence output for matching checks

--checkall
    Enable all available checks

--warnall
    Treat all issues as warnings

--verbose
    Increase output verbosity

DESCRIPTION

idnits is a specialized Perl-based utility for the IETF community that scans Internet Drafts (I-Ds) for common errors, inconsistencies, and stylistic issues known as 'nits'. It verifies essential elements like RFC boilerplate text, Intended status lines, author affiliations, reference formatting, security considerations, and IANA registry hints. The tool categorizes issues by severity (e.g., FATAL, ERROR, WARN) and type (e.g., BOILERPLATE, FORMAT, REFERENCE).

Primarily used by draft authors before submission to the IETF datatracker, idnits promotes higher quality submissions and reduces review overhead. It processes plain text files in RFC 7328 or similar formats, supports multiple input files or stdin, and allows customization via ignore/mute patterns. Output is human-readable with clear explanations and suggestions. Installed via packages like Debian's idnits, it's lightweight and integrates into workflows with tools like xml2rfc.

Regular updates align with IETF guidelines, making it indispensable for RFC-track documents.

CAVEATS

Designed for text-based RFC 7328 I-Ds; limited support for v3 XML drafts. Requires Perl and internet for some checks. False positives possible with non-standard drafts.

NIT CATEGORIES

Common types: BOILERPLATE (RFC text), FORMAT (layout), REFERENCE (biblio), IANA (considerations), SECURITY (text presence).

EXIT CODES

0: no nits; 1: warnings; 2: errors; 3+: fatal issues.

HISTORY

Developed by Paul E. Hoffman in 2003 as 'draft-nits'; evolved into idnits for IETF use. Maintained via GitHub, with updates tracking RFC editor guidelines and datatracker changes.

SEE ALSO

xml2rfc(1), rfcmarkup(1), kramdown-rfc2629(1)

Copied to clipboard