nth Labs Help centre
⌘K
Open console

Get started

Your first run

Speed & errors is the right first run: it costs nothing, needs no key, and finds the class of problem that is hardest to see by reading code.

Pick the check

In the console, New run opens the picker. Full check sits at the top; under it are the five you can run on their own, each labelled with whether it needs a key.

The run picker: Full check at the top, then the checks you can run on their own, with what each one costs.
The free ones are marked. They run in a browser on your own machine, so there is nothing to meter.

Watch it work

A run streams. The console prints each surface as it is reached, what was measured there, and what it found, while it is happening, not at the end.

A run in progress: the console streaming what the browser is doing, page by page, as it drives the product.
The stage strip at the top is the run’s real progress; the lines below are what the browser is doing as it does it.

Nothing about this is a progress bar in the decorative sense. If a run stops streaming, it is stuck, and the last line tells you where.

What comes back

Findings, ranked by confidence multiplied by severity, the same order the console shows and the CLI’s actions list prints. Each one carries:

  • A title in plain language. “A form cannot be submitted at all”, not “aria-required-children”.
  • The surface and the selector it was found on.
  • The evidence: what the browser saw, and usually the frame it saw it in.
  • A fix prompt, ending in an acceptance check a machine can settle.

Then give them verdicts

This is the part that is easy to skip and should not be. A finding you confirm becomes a standing check; a finding you reject teaches the tool it was wrong. Until verdicts exist, the confidence percentages have nothing to calibrate against, and the product will say so rather than print a number it cannot support.

The four verdicts, and what each one costs.

Before you run the two that cost

Site review and Test drive spend your model key. Run node cli.cjs scope HEAD~1 first. It prints which surfaces a run would cover, and starts nothing.