AxiomGitHub (opens in a new tab)

Catalog

139 checks,
every audit.

70 checks written for Axiom, plus the 69 axe-core rules tagged WCAG 2.1 A/AA that run on every page. This list is generated from the engine's own finding ids and asserted against the source in CI, so it cannot drift into marketing.

npm run verify:catalog

What broke while it ran

4 checks

Console and network listeners attached before navigation, so the earliest failures are captured.

What broke while it ran: check name, what it detects, and severity
CheckWhat it detectsSeverity
Uncaught JavaScript exceptionSomething threw during load and nothing handled itBlocking
Your API returning 5xxAn endpoint the page depends on failed server-sideBlocking
Files that 404Images, scripts or stylesheets that never loadedModerate
Console errorsErrors your own code logged that nobody is readingModerate

Whether a keyboard works

4 checks

Real Tab keypresses through the page, recording every focus stop — not a DOM read.

Whether a keyboard works: check name, what it detects, and severity
CheckWhat it detectsSeverity
Controls nobody can reachInteractive elements that never receive focusBlocking
Invisible focusFocusing the element changes nothing on screenBlocking
Keyboard trapsFocus enters a region and cannot Tab back outBlocking
Illogical tab orderFocus jumps far back up the page mid-sequenceModerate

How it behaves on a phone

3 checks

The page re-rendered at 390×844 and measured.

How it behaves on a phone: check name, what it detects, and severity
CheckWhat it detectsSeverity
Sideways scrollingContent extends past the right edge of the viewportSerious
Tap targets under 24pxControls too small to hit reliably (WCAG 2.2)Moderate
Text under 12pxBody copy too small to read on a handsetModerate
2 checks

Each unique URL requested once — HEAD first, falling back to GET — across every page found.

Every link on the site: check name, what it detects, and severity
CheckWhat it detectsSeverity
Internal links to nowhereLinks to your own pages that return 404 or 5xxSerious
Dead outbound linksLinks to other sites that no longer resolveModerate

What the server gives away

13 checks

Response headers, cookie flags and well-known paths — read, never attacked.

What the server gives away: check name, what it detects, and severity
CheckWhat it detectsSeverity
No Content Security PolicyMissing the main defence against cross-site scriptingSerious
HSTS not enabledFirst request can be downgraded to plain HTTPSerious
Site can be framedClickjacking is possible on sensitive actionsSerious
MIME sniffing allowedBrowsers may execute a file you served as textModerate
Full URLs leakYour paths and query strings sent to third partiesMinor
Stack disclosedServer headers naming your software and versionMinor
HTTP doesn't redirectPlain HTTP serves content instead of upgradingSerious
Mixed contentHTTPS page pulling resources over plain HTTPSerious
Cookies without SecureSession cookies transmittable in the clearSerious
Cookies readable by JSAny script on the page can steal the sessionSerious
Cookies without SameSiteExposed to cross-site request forgeryModerate
Exposed .env / .gitSecrets publicly downloadable right nowBlocking
Public source mapsYour original source reconstructable by anyoneModerate

What you forgot before launch

11 checks

The rendered document head, plus robots.txt and sitemap.xml.

What you forgot before launch: check name, what it detects, and severity
CheckWhat it detectsSeverity
Still set to noindexA staging directive that shipped to productionBlocking
robots.txt blocks everythingDisallow: / hiding the whole site from searchBlocking
No viewport tagPhones render at desktop width and zoom outSerious
No page titleBlank tab, blank search result, blank bookmarkSerious
No share previewLinks render as a grey box when sharedModerate
No meta descriptionGoogle invents your search snippetModerate
No main headingScreen readers and crawlers can't find the topicModerate
Multiple h1 elementsAn ambiguous document outlineMinor
No faviconA blank icon in the browser tabMinor
No robots.txtNothing telling crawlers what to skipMinor
No sitemap.xmlDiscovery relies entirely on internal linksMinor

How slow it is

3 checks

The browser's own navigation and resource timing.

How slow it is: check name, what it detects, and severity
CheckWhat it detectsSeverity
Slow first paintUsers stare at a blank screen past 3 secondsModerate
Heavy page weightMegabytes shipped for the first screenModerate
No compressionText served without gzip or brotliModerate

Secrets in your source

11 checks

Format-specific patterns over your files. Every match is masked before it is ever displayed.

Secrets in your source: check name, what it detects, and severity
CheckWhat it detectsSeverity
AWS access keyAKIA-prefixed credentials in codeBlocking
Stripe live keysk_live_ keys that can move real moneyBlocking
OpenAI keysk- / sk-proj- API credentialsBlocking
Anthropic keysk-ant- API credentialsBlocking
GitHub tokenghp_ / github_pat_ tokensBlocking
Private keyPEM-encoded RSA, EC or OpenSSH keysBlocking
DB URL with passwordpostgres:// and friends with inline credentialsBlocking
Google API keyAIza-prefixed keysSerious
Slack tokenxoxb / xoxp workspace tokensSerious
Hardcoded JWT secretA signing secret anyone can forge tokens withSerious
Generic API key or passwordLong literal assigned to a key/password nameSerious

Injection, auth and payment bugs

15 checks

Pattern analysis over your source. Reports the dangerous shape it detected, never a claim of proven exploitability.

Injection, auth and payment bugs: check name, what it detects, and severity
CheckWhat it detectsSeverity
SQL injectionQueries assembled by string concatenationBlocking
Command injectionShell commands built from a variableBlocking
Unverified JWTjwt.decode without checking the signatureBlocking
Client-set payment amountCharge amount taken from the request bodyBlocking
TLS verification offrejectUnauthorized:false or NODE_TLS_REJECT_UNAUTHORIZED=0Blocking
No rate limit on authLogin/reset routes with no throttling referencedSerious
Unverified Stripe webhookWebhook handled without constructEventSerious
Path traversalFile paths built from request inputSerious
Weak password hashingMD5 or SHA-1 used on passwordsSerious
XSS via raw HTMLdangerouslySetInnerHTML with a variableSerious
eval / new FunctionA string executed as codeSerious
Unsafe CORSAny origin allowed together with credentialsSerious
Open redirectRedirect target taken from request inputModerate
Raw error to clientStack traces and internals returned to the browserModerate
Debug mode onFramework debug flags left enabledModerate

Dependencies and config

4 checks

Your manifest, lockfile and .gitignore — read entirely offline.

Dependencies and config: check name, what it detects, and severity
CheckWhat it detectsSeverity
.env not git-ignoredAn environment file likely tracked in gitSerious
Dependencies from URLsPackages pulled from git/http, skipping integrity checksModerate
No lockfileInstalls can resolve to versions you never testedModerate
Install scriptsCode that runs automatically on npm installMinor

Plus the axe-core WCAG ruleset

On top of the checks above, every page is run through axe-core's 69 rules tagged WCAG 2.1 A/AA — colour contrast, form labels, image alternatives, ARIA validity, heading structure and the rest. Axiom rewrites the ones it recognises into plain language and computes the exact fix where the maths allows.