Validation catalog

What ArbiterQA can check

Every check ArbiterQA can run, grouped by what it protects. Each one is opinionated, versioned against an open Standard, and returns a verdict with evidence — not a screenshot for you to grade.

Email

62 checks across 5 sets

Cold outreach

10 checks

Nine checks for unsolicited first-touch prospecting — email written to read as one-to-one, where success is a reply rather than a click. Four of them block, and they are the four where a defect makes the send worth less than not sending: a leaked merge tag, a dead link, and the two legal requirements senders most often omit on the theory that a personal-looking email is not commercial. It is: CAN-SPAM applies at any volume, with no bulk threshold. The rest report without blocking. Deliberately absent are every check that measures whether an email looks professionally designed — logo, hero image, CTA button. Passing those would make a cold email worse, not better.

No placeholder / merge-tag text

Required1 credit

Scan subject, first 200 chars of text/plain (preheader proxy), and HTML body text against placeholderPatterns.

Unsubscribe mechanism present

Required1 credit

Check MIME List-Unsubscribe header and rendered HTML anchors for unsubscribe URL/text patterns. Pass if either check passes.

Physical mailing address present

Required1 credit

Strip HTML tags from body and match physical address patterns (street number + street + city/state/postal code).

Links valid, reachable, and correctly redirected

Required1 credit

Every link in the email must parse as a valid absolute URL with a legitimate scheme, resolve over HTTP (redirect chains followed and recorded), and land on an approved destination when a domain list is configured. Bot-protected links are reported unverifiable, never failed. See docs/EMAIL-LINK-INTEGRITY.md.

From-domain match

Recommended1 credit

Parse From: header; extract domain. Fail if domain is not in allowedFromDomains parameter list (case-insensitive). Error if From: header is absent.

Subject line within length limit

Recommended1 credit

Extract Subject header; count Unicode characters; fail when count exceeds maxSubjectLength.

Preheader / inbox preview text intentional

Recommended1 credit

The inbox preview snippet must be intentional: no boilerplate ("view in browser", unsubscribe) or leaked merge tokens next to the subject line, required preheader content present within the visible window, and no preview-garbling defects in the source.

Images have usable ALT text

Recommended1 credit

Every image must carry an alt attribute: informative images with real alternative text (not filenames, URLs, or placeholders), decorative images marked alt="", and image-only links must keep an accessible name. Spacers and tracking pixels are ignored.

Tracking parameters present, well-formed, and preserved

Recommended1 credit

Tracking on email links must be intact: no unresolved merge tags, empty UTM values, typo'd utm_ keys, duplicate parameters, ad-platform click-ids, or raw email addresses in query strings. When tracked domains are configured, marketing links must carry the required parameters (UTM or custom names), match the required link pattern, and keep their parameters through redirect chains; a required tracking pixel can also be enforced. See docs/EMAIL-TRACKING-INTEGRITY.md.

Email opens fully in Gmail

Required1 credit

Gmail truncates a message whose HTML source exceeds roughly 102KB and hides the rest behind "View entire message" — taking the footer, the unsubscribe link and the tracking pixel with it. The HTML body must stay under the configured byte limit. See docs/EMAIL-GMAIL-CLIPPING.md.

Marketing email

18 checks

Seventeen checks for bulk commercial email sent to a consented list — campaigns, newsletters, promotions, lifecycle and re-engagement sends, where success is a click. Thirteen of them block, because marketing carries the heaviest regulatory load of any email you send: CAN-SPAM and CASL on opt-out and postal address, the European Accessibility Act on alt text, and Gmail, Yahoo and Microsoft on sender authentication — enforced since May 2026 with permanent rejections rather than throttling. The rest report without blocking. Expect failures. This is a demanding standard and real marketing email frequently does not meet it: 61.9% is missing usable alt text, and roughly a quarter ships no plain-text part at all. We would rather tell you that than pass you.

Unsubscribe mechanism present

Required1 credit

Check MIME List-Unsubscribe header and rendered HTML anchors for unsubscribe URL/text patterns. Pass if either check passes.

Physical mailing address present

Required1 credit

Strip HTML tags from body and match physical address patterns (street number + street + city/state/postal code).

Footer complete with required elements

Required20 credits

The email footer must contain all required elements as configured (default: physical address and unsubscribe link).

From-domain match

Required1 credit

Parse From: header; extract domain. Fail if domain is not in allowedFromDomains parameter list (case-insensitive). Error if From: header is absent.

Plain-text alternative part present

Required1 credit

Parse MIME structure. Fail when not multipart/alternative or text/plain part is absent/empty.

No placeholder / merge-tag text

Required1 credit

Scan subject, first 200 chars of text/plain (preheader proxy), and HTML body text against placeholderPatterns.

Links valid, reachable, and correctly redirected

Required1 credit

Every link in the email must parse as a valid absolute URL with a legitimate scheme, resolve over HTTP (redirect chains followed and recorded), and land on an approved destination when a domain list is configured. Bot-protected links are reported unverifiable, never failed. See docs/EMAIL-LINK-INTEGRITY.md.

CTA button visible and unclipped

Required20 credits

At least one call-to-action button must be visible and fully rendered at each selected viewport.

Layout not broken at any viewport

Required30 credits

The overall email layout must not be broken at any selected viewport.

Images render and scale correctly

Required1 credit

Every image in the email must load, and must be displayed at a size its file can actually fill. Stretching an image beyond its own pixels forces the mail client to invent the ones it does not have, which is what makes an image look soft or blocky — so an image displayed more than a quarter larger than its file is reported, as is one squashed or stretched out of its true shape. Good practice is to export at twice the display size and set the width attribute to half, so images stay sharp on the high-resolution screens most email is read on.

Image sources resolve and are permitted

Required1 credit

Inventory img/background/style-block image references; resolve cid/data/remote with manual redirect following (chain recorded, capped at 5 hops); fail on unresolvable/undecodable sources, hosts outside approvedAssetHosts (source or redirect destination; empty list = no restriction), and http-only sources whose https upgrade fails.

Images have usable ALT text

Required1 credit

Every image must carry an alt attribute: informative images with real alternative text (not filenames, URLs, or placeholders), decorative images marked alt="", and image-only links must keep an accessible name. Spacers and tracking pixels are ignored.

Preheader / inbox preview text intentional

Required1 credit

The inbox preview snippet must be intentional: no boilerplate ("view in browser", unsubscribe) or leaked merge tokens next to the subject line, required preheader content present within the visible window, and no preview-garbling defects in the source.

Subject line within length limit

Recommended1 credit

Extract Subject header; count Unicode characters; fail when count exceeds maxSubjectLength.

Brand logo visible in header

Recommended20 credits

The brand logo must be present and clearly visible in the header area of the email at all selected viewports.

Images unclipped and displayed properly

Recommended20 credits

No image in the rendered email may be clipped, cropped, or scaled in a way that damages its message — cut-off text inside images, truncated faces or products, or visibly broken framing.

Tracking parameters present, well-formed, and preserved

Recommended1 credit

Tracking on email links must be intact: no unresolved merge tags, empty UTM values, typo'd utm_ keys, duplicate parameters, ad-platform click-ids, or raw email addresses in query strings. When tracked domains are configured, marketing links must carry the required parameters (UTM or custom names), match the required link pattern, and keep their parameters through redirect chains; a required tracking pixel can also be enforced. See docs/EMAIL-TRACKING-INTEGRITY.md.

Email opens fully in Gmail

Required1 credit

Gmail truncates a message whose HTML source exceeds roughly 102KB and hides the rest behind "View entire message" — taking the footer, the unsubscribe link and the tracking pixel with it. The HTML body must stay under the configured byte limit. See docs/EMAIL-GMAIL-CLIPPING.md.

Operational email

14 checks

Fourteen checks for email you send about your service itself — outage and maintenance notices, security alerts, terms-of-service and privacy changes, product sunsets, forced migrations. This is the only email you send that nobody can opt out of. It reaches your entire user base, including every person using a screen reader and every Outlook recipient who has never added you to their safe-senders list. So the test these checks apply is not "will this convert" but "will everyone understand it, and will they believe it came from you". Seven of them block. A merge tag that never filled in makes a security notice look like a phishing attempt. A dead link strands someone who has been told to act and given nowhere to go. Images with no alt text hide the instruction from the readers most likely to have images switched off. Everything else reports. ⚠ Run this against a test send. Some of these checks follow the links and images in your email. The risk is far lower here than for transactional mail — we measured tokenised account-action links in 4% of operational email, against 63% of transactional — but 81% carries an open-tracking pixel, so a validation run will register an open you did not earn. Deliberately absent: the unsubscribe link (you cannot opt out of a security notice, and offering one is a control that either does nothing or breaks account management), campaign tracking checks (there is no campaign to attribute a maintenance window to), and the call-to-action assertion (half of operational email correctly has no CTA at all, and not one outage notice we measured carries a button).

No placeholder / merge-tag text

Required1 credit

Scan subject, first 200 chars of text/plain (preheader proxy), and HTML body text against placeholderPatterns.

Links valid, reachable, and correctly redirected

Required1 credit

Every link in the email must parse as a valid absolute URL with a legitimate scheme, resolve over HTTP (redirect chains followed and recorded), and land on an approved destination when a domain list is configured. Bot-protected links are reported unverifiable, never failed. See docs/EMAIL-LINK-INTEGRITY.md.

From-domain match

Required1 credit

Parse From: header; extract domain. Fail if domain is not in allowedFromDomains parameter list (case-insensitive). Error if From: header is absent.

Plain-text alternative part present

Required1 credit

Parse MIME structure. Fail when not multipart/alternative or text/plain part is absent/empty.

Images have usable ALT text

Required1 credit

Every image must carry an alt attribute: informative images with real alternative text (not filenames, URLs, or placeholders), decorative images marked alt="", and image-only links must keep an accessible name. Spacers and tracking pixels are ignored.

Images render and scale correctly

Required1 credit

Every image in the email must load, and must be displayed at a size its file can actually fill. Stretching an image beyond its own pixels forces the mail client to invent the ones it does not have, which is what makes an image look soft or blocky — so an image displayed more than a quarter larger than its file is reported, as is one squashed or stretched out of its true shape. Good practice is to export at twice the display size and set the width attribute to half, so images stay sharp on the high-resolution screens most email is read on.

Image sources resolve and are permitted

Required1 credit

Inventory img/background/style-block image references; resolve cid/data/remote with manual redirect following (chain recorded, capped at 5 hops); fail on unresolvable/undecodable sources, hosts outside approvedAssetHosts (source or redirect destination; empty list = no restriction), and http-only sources whose https upgrade fails.

Layout not broken at any viewport

Recommended30 credits

The overall email layout must not be broken at any selected viewport.

Images unclipped and displayed properly

Recommended20 credits

No image in the rendered email may be clipped, cropped, or scaled in a way that damages its message — cut-off text inside images, truncated faces or products, or visibly broken framing.

Subject line within length limit

Recommended1 credit

Extract Subject header; count Unicode characters; fail when count exceeds maxSubjectLength.

Preheader / inbox preview text intentional

Recommended1 credit

The inbox preview snippet must be intentional: no boilerplate ("view in browser", unsubscribe) or leaked merge tokens next to the subject line, required preheader content present within the visible window, and no preview-garbling defects in the source.

Physical mailing address present

Recommended1 credit

Strip HTML tags from body and match physical address patterns (street number + street + city/state/postal code).

Brand logo visible in header

Recommended20 credits

The brand logo must be present and clearly visible in the header area of the email at all selected viewports.

Email opens fully in Gmail

Required1 credit

Gmail truncates a message whose HTML source exceeds roughly 102KB and hides the rest behind "View entire message" — taking the footer, the unsubscribe link and the tracking pixel with it. The HTML body must stay under the configured byte limit. See docs/EMAIL-GMAIL-CLIPPING.md.

Transactional email

14 checks

Fourteen checks for email triggered by your customer's own action and carrying data they are waiting for — receipts, order and shipping confirmations, password resets, verification codes, invoices. Seven of them block. The test we apply is not "is this untidy" but "does the recipient end up unable to do the thing they came to do": a merge tag that never filled in, a dead reset link, a verification code with no plain-text version, images with no alt text in an inbox that blocks images. Everything else reports. ⚠ Run this against a test send, not a live one. Three of these checks follow the links and images in your email, and in transactional mail those links do things — they confirm addresses, sign people in, authenticate order access. Validating a real message addressed to a real person can consume a one-time token or register activity in your own systems. Deliberately absent: the unsubscribe link (you cannot opt out of the mail that runs your account), campaign tracking checks (there is no campaign to attribute a receipt to), and the call-to-action assertion (half of transactional senders correctly have no CTA at all).

No placeholder / merge-tag text

Required1 credit

Scan subject, first 200 chars of text/plain (preheader proxy), and HTML body text against placeholderPatterns.

Links valid, reachable, and correctly redirected

Required1 credit

Every link in the email must parse as a valid absolute URL with a legitimate scheme, resolve over HTTP (redirect chains followed and recorded), and land on an approved destination when a domain list is configured. Bot-protected links are reported unverifiable, never failed. See docs/EMAIL-LINK-INTEGRITY.md.

From-domain match

Required1 credit

Parse From: header; extract domain. Fail if domain is not in allowedFromDomains parameter list (case-insensitive). Error if From: header is absent.

Plain-text alternative part present

Required1 credit

Parse MIME structure. Fail when not multipart/alternative or text/plain part is absent/empty.

Images have usable ALT text

Required1 credit

Every image must carry an alt attribute: informative images with real alternative text (not filenames, URLs, or placeholders), decorative images marked alt="", and image-only links must keep an accessible name. Spacers and tracking pixels are ignored.

Images render and scale correctly

Required1 credit

Every image in the email must load, and must be displayed at a size its file can actually fill. Stretching an image beyond its own pixels forces the mail client to invent the ones it does not have, which is what makes an image look soft or blocky — so an image displayed more than a quarter larger than its file is reported, as is one squashed or stretched out of its true shape. Good practice is to export at twice the display size and set the width attribute to half, so images stay sharp on the high-resolution screens most email is read on.

Image sources resolve and are permitted

Required1 credit

Inventory img/background/style-block image references; resolve cid/data/remote with manual redirect following (chain recorded, capped at 5 hops); fail on unresolvable/undecodable sources, hosts outside approvedAssetHosts (source or redirect destination; empty list = no restriction), and http-only sources whose https upgrade fails.

Layout not broken at any viewport

Recommended30 credits

The overall email layout must not be broken at any selected viewport.

Images unclipped and displayed properly

Recommended20 credits

No image in the rendered email may be clipped, cropped, or scaled in a way that damages its message — cut-off text inside images, truncated faces or products, or visibly broken framing.

Subject line within length limit

Recommended1 credit

Extract Subject header; count Unicode characters; fail when count exceeds maxSubjectLength.

Preheader / inbox preview text intentional

Recommended1 credit

The inbox preview snippet must be intentional: no boilerplate ("view in browser", unsubscribe) or leaked merge tokens next to the subject line, required preheader content present within the visible window, and no preview-garbling defects in the source.

Physical mailing address present

Recommended1 credit

Strip HTML tags from body and match physical address patterns (street number + street + city/state/postal code).

Brand logo visible in header

Recommended20 credits

The brand logo must be present and clearly visible in the header area of the email at all selected viewports.

Email opens fully in Gmail

Required1 credit

Gmail truncates a message whose HTML source exceeds roughly 102KB and hides the rest behind "View entire message" — taking the footer, the unsubscribe link and the tracking pixel with it. The HTML body must stay under the configured byte limit. See docs/EMAIL-GMAIL-CLIPPING.md.

More email checks

6 checks

Additional listed checks for email subjects.

Accessibility criteria met (WCAG, source-decidable)

Recommended1 credit

Source-decidable WCAG checks over the email: language declaration, table semantics, colour contrast, link naming, tap-target size, and animation duration — enabled by conformance level (A, AA default, AAA). Checks that cannot be decided from source abstain with a typed reason rather than guessing, and the result is never a compliance verdict. See docs/EMAIL-ACCESSIBILITY.md.

Hero / banner image renders

Recommended20 credits

The primary hero or banner image in the email body must load and render fully.

Subject line matches approved content

Recommended1 credit

Customer-configured subject verification: the received subject must exactly match an approved subject, contain required phrases, avoid prohibited patterns, and match a required pattern when configured. Skips until approvedSubjects is configured. See docs/EMAIL-SUBJECT-CONTENT.md.

Typography follows approved brand rules

Recommended1 credit

Customer-configured typography verification: every font stack in the email must match an approved brand stack, webfonts must ship an Outlook defense, and weights/sizes must use client-safe vocabulary. Skips until approvedFontStacks is configured. See docs/EMAIL-TYPOGRAPHY.md.

Link UTM and query parameters inventoried

Recommended

Lists every http(s) link in the email and returns its decoded query parameters, with utm_-prefixed keys surfaced separately. Does not judge correctness — inventory only. See docs/EMAIL-UTM-INVENTORY.md.

Email still legible with images off

Recommended10 credits

With images blocked — what Outlook shows every recipient who has not added you to their Safe Senders list — the email must still convey what it is offering and give the reader a way to act. Requires the Images have usable ALT text check, which supplies the free half of the same question.

Webpages

6 checks across 5 sets

Accessibility

1 check

Body text stays in a readable size range on the page.

Brand

2 checks

Logo and footer present as the brand requires.

Change detection

1 check

The page is compared to the last capture of the same URL and width.

Content

1 check

Placeholder copy such as lorem ipsum is not on the page.

Performance

1 check

Load time is measured from the browser clock.

Common questions

What is a Validation?
A Validation is a single opinionated check — visual or functional — that ArbiterQA runs against an email or webpage and returns as pass, fail, or error with evidence attached.
What is a Validation Set?
A Validation Set is a curated group of checks that protect one outcome, such as brand compliance or accessibility. Selecting a set runs every check it contains.
Can I customize what a check enforces?
Checks with custom configuration let you replace the Standard default with your own rule — your logo requirement, your footer elements — while keeping the same judgment engine.
How do I run these?
Name the checks or sets through the API, MCP, or the arbiterqa npm CLI. ArbiterQA renders the subject, runs the checks, and returns a structured verdict your CI or agent can gate on.

Point ArbiterQA at your first check

Agents call the same catalog you see here through the API, MCP, or the npm CLI. Start free with 1,000 credits.