validation.vin
Check a 17-character vehicle identification number and its check digit; enforced for North American VINs.
validate_vin in Python
1.0.0
py rs ts
17 tests
validation.uk-utr
Check an HMRC Unique Taxpayer Reference's modulus 11 check digit, accepting the K and spacing people type.
validate_uk_utr in Python
2.0.1
py rs ts
18 tests
validation.email
Is this a plausible email address? A documented, pragmatic subset of RFC 5322, not the full grammar.
is_email in Python
1.0.0
py rs ts
28 tests
validation.lei
Check a 20-character Legal Entity Identifier against its ISO 17442 / ISO 7064 MOD 97-10 check digits.
validate_lei in Python
1.0.0
py rs ts
14 tests
validation.iban
Check an IBAN against the ISO 13616 mod-97-10 checksum and the registered length for its country.
is_iban in Python
1.0.0
py rs ts
22 tests
validation.luhn
Check a digit string against the Luhn mod-10 checksum used by payment cards and many identifiers.
is_luhn in Python
1.0.0
py rs ts
18 tests
validation.uk-ni-number
Check a UK National Insurance number's format and HMRC's disallowed prefix letters, and normalise it.
validate_uk_ni_number in Python
2.0.0
py rs ts
22 tests
validation.uk-postcode
Validate a UK postcode and normalise it to canonical upper case with one space before the inward code.
validate_uk_postcode in Python
2.0.0
py rs ts
26 tests
auth.validate-registration
Validate a sign-up form (email, password, name) in one call, with a message per field, in the browser and the API alike.
validate_registration in Python
1.0.0
py rs ts
14 tests
validation.uk-vat-number
Check a UK VAT registration number against HMRC's mod-97 checksum, including the post-2010 9755 variant.
is_uk_vat_number in Python
1.0.0
py rs ts
22 tests
validation.nhs-number
Check an NHS number's modulus 11 check digit and normalise it to ten digits.
validate_nhs_number in Python
2.0.0
py rs ts
17 tests
validation.isbn
Check an ISBN-10 or ISBN-13 and convert between them; the normalised form is always the ISBN-13.
validate_isbn in Python
1.0.0
py rs ts
19 tests
validation.uk-sort-code-account
Check a UK sort code and account number with the Vocalink/Pay.UK modulus rules, against a table you supply.
validate_uk_sort_code_account in Python
3.0.0
py rs ts
64 tests
net.device-validate
Validate one network inventory entry: name, host, ports, optional MAC and subnet, with every problem listed.
validate_device in Python
1.0.0
py rs ts
17 tests
validation.uk-modulus-table
Parse Vocalink's VALACDOS.txt and SCSUBTAB.txt into the table UK sort code modulus checking needs.
parse_uk_modulus_table in Python
1.0.0
py rs ts
28 tests
1.0.0
py rs ts
30 tests
auth.validate-login
Check a login form (email, password): the normalised email to look up, or a message for each field to fix.
validate_login in Python
1.0.0
py rs ts
11 tests
validation.bic
Check the format of a SWIFT/BIC code (8 or 11 characters) and split it into its parts.
validate_bic in Python
1.0.0
py rs ts
15 tests
validation.uk-company-number
Check a Companies House company number's format and prefix (SC, NI, OC, LP...) and zero-pad it to eight characters.
validate_uk_company_number in Python
2.0.1
py rs ts
18 tests
validation.gtin
Check an EAN-8, UPC-A, EAN-13 or GTIN-14 barcode number against the GS1 mod-10 check digit.
validate_gtin in Python
1.1.0
py rs ts
19 tests
finance.ledger.journal-validate
Check a double-entry journal: debits equal credits, no zero or two-sided lines, one currency, well-formed account codes.
validate_journal in Python
1.0.0
py rs ts
16 tests
validation.phone-e164
Normalise a phone number to E.164 (+447700900123) using a default country's trunk and dialling prefixes.
validate_phone_e164 in Python
2.0.0
py rs ts
31 tests
auth.validate-password-change
Check a change-password form: current password given and correct, new one meeting the policy and different.
validate_password_change in Python
1.0.0
py rs ts
15 tests
health.qrisk-inputs-validate Unreviewed
Check a QRISK3 cardiovascular risk input set against the calculator's published ranges; does not compute risk.
validate_qrisk_inputs in Python
1.0.1
py rs ts
29 tests
todo.item → validateDraft
The to-do item type (Todo, TodoDraft, Recurrence) and its validators, with a message per field.
validate_draft in Python, one function of this group
1.0.0
py rs ts
51 tests
retail.coupon-validate
Check a coupon against a basket: dates, usage limits, eligible products and minimum spend, with reason codes.
validate_coupon in Python
1.0.1
py rs ts
24 tests
net.hostname-validate
Check a host name against RFC 1123 and RFC 952 label rules and length limits, and normalise it.
validate_hostname in Python
1.0.0
py rs ts
26 tests
form.date-parts
Check a date typed into day, month and year boxes, with GOV.UK's error messages and the boxes to mark in error.
validate_date_parts in Python
1.0.1
py rs ts
49 tests
logistics.hs-code-validate
Check the format of a commodity code: 6-digit HS, 8-digit CN or 10-digit TARIC/UK code, with chapter and heading checks.
validate_hs_code in Python
1.0.0
py rs ts
16 tests
net.mac-address
Validate a MAC address in colon, hyphen, Cisco dot or bare form and normalise it, with multicast and local bits.
validate_mac_address in Python
1.0.0
py rs ts
22 tests
react.form.error-summary React ^19 · TypeScript only
A "There is a problem" box linking to each field in error, focused on arrival, built from a validator's fields (GOV.UK).
Not available in Python
1.0.1
ts
21 tests
form.state TypeScript only
A form's state as a pure reducer: values, touched fields, validator errors and the submit, for useReducer.
Not available in Python
1.0.1
ts
40 tests
todo.import-csv → validateTodoCsv
Read todos from a CSV file (RFC 4180) as todo.export-csv writes it, checking every row, with row-numbered errors.
validate_todo_csv in Python, one function of this group
1.1.0
py rs ts
59 tests
net.ipv4
Parse, format and check dotted-quad IPv4 addresses, refusing leading zeros, octal, hex and short forms.
A group of 3: parse_ipv4, format_ipv4, is_ipv4
1.0.0
py rs ts
39 tests
auth.password-policy
Check a new password against a named policy (NIST SP 800-63B-4 by default): length, common passwords, name and email.
A group of 2: password_policy, check_password
1.0.1
py rs ts
31 tests
health.nhs-number-format Unreviewed
Display an NHS number in the 3-3-4 format ("943 476 5919") after checking its modulus 11 check digit.
format_nhs_number in Python
1.0.1
py rs ts
13 tests
monitor.cert-expiry
How long a TLS certificate has left before its notAfter, and whether that is ok, a warning, critical or expired.
cert_expiry in Python
1.0.0
py rs ts
15 tests
auth.normalise-email
Trim an email address and lower-case its domain for storage and lookup, or null if it is not a plausible address.
normalise_email in Python
1.0.0
py rs ts
12 tests
energy.price-cap
Ofgem energy price cap unit rate and daily standing charge for a fuel and payment method on a date (GB average).
price_cap in Python
1.0.2
py rs ts
19 tests
finance.uk-bank-rate
Bank of England Bank Rate (base rate) in force on a date, from the Bank's official history since 2001.
uk_bank_rate in Python
1.0.1
py rs ts
14 tests
logistics.freight-rate
Freight charge from a carrier's dated weight-break tariff for a zone, with the fuel surcharge in force on the ship date.
freight_rate in Python
1.0.1
py rs ts
26 tests
retail.shipping-rate
Delivery charge from a dated rate table by service, zone, chargeable weight and size, with a free-over threshold.
shipping_rate in Python
1.0.1
py rs ts
20 tests
auth.jwt
Sign, verify and decode HS256 JSON Web Tokens (RFC 7519): signature, algorithm and exp/nbf/iat checked with leeway.
A group of 3: sign_jwt, verify_jwt, decode_jwt
1.0.0
py rs ts
54 tests
react.form.date-input React ^19 · TypeScript only
Day, month and year boxes under one legend, with hint, error message and the boxes in error marked (GOV.UK date input).
Not available in Python
1.0.1
ts
14 tests
energy.climate-change-levy
Climate Change Levy on a business supply of electricity, gas, LPG or solid fuel, at the main rate in force on the date.
climate_change_levy in Python
1.0.2
py rs ts
20 tests
todo.parse-quick-add
Turn one typed line like "Pay rent tomorrow !high #home every month" into a todo draft.
parse_quick_add in Python
1.0.0
py rs ts
44 tests
auth.access-token
Issue an API's HS256 access token, read one from an Authorization header, and refuse revoked or superseded ones.
A group of 3: issue_access_token, read_access_token, confirm_access_token
1.0.0
py rs ts
33 tests
finance.compound-interest
Compound interest accrued period by period in minor units, the way a statement is built.
compound_interest in Python
1.0.0
py rs ts
18 tests
finance.tax.vat-rate Unreviewed
Look up the VAT rate in force for a jurisdiction, category and date.
vat_rate in Python
1.2.2
py rs ts
25 tests
insurance.ipt Unreviewed
UK Insurance Premium Tax at the standard or higher rate in force on a date, added to or taken out of a premium.
insurance_premium_tax in Python
1.0.2
py rs ts
23 tests
monitor.cert-check
A TLS certificate's expiry state as a check status: ok and warning are up, critical is degraded, expired is down.
cert_check in Python
1.0.0
py rs ts
8 tests
health.news2 Unreviewed
NEWS2 early warning score from one set of observations: parameter scores, aggregate and RCP clinical risk band.
news2_score in Python
1.0.1
py rs ts
45 tests
monitor.component-state
A status page component's state from its checks: operational, degraded, partial or major outage, or maintenance.
component_state in Python
1.0.0
py rs ts
15 tests
banking.faster-payments-limit
Whether a Faster Payment fits the scheme maximum, the bank's per-payment limit and what is left of its daily limit.
faster_payments_check in Python
1.0.1
py rs ts
24 tests
charity.reclaim-batch
Gift Aid claim totals for a period from donation records: donor lines, aggregated small gifts, tax due.
gift_aid_claim_batch in Python
1.0.1
py rs ts
12 tests
logistics.sscc
Build an 18-digit SSCC pallet label number from extension digit, GS1 company prefix and serial, with its check digit.
build_sscc in Python
1.1.0
py rs ts
16 tests
telecoms.roaming-charge
Roaming charges for a trip abroad from a dated tariff table of zones: daily fees, data, calls and texts.
roaming_charge in Python
1.0.1
py rs ts
16 tests
energy.carbon-emissions
kgCO2e from kWh or litres of a fuel, using the UK government GHG conversion factors for the year.
carbon_emissions in Python
1.0.1
py rs ts
17 tests
hospitality.tourist-tax
Visitor levy (tourist tax) on an overnight stay: Edinburgh's 5%, Cardiff's per person per night, or a caller's own rule.
tourist_tax in Python
1.0.1
py rs ts
30 tests
crypto.constant-time-equal
Compare two byte strings in time that does not depend on where they differ, for checking MACs and hashes.
constant_time_equal in Python
1.0.0
py rs ts
12 tests
finance.payment-terms-due-date
Invoice due date from payment terms: net N days, end of month, N days after month end, day N of next month.
payment_due_date in Python
1.0.0
py rs ts
26 tests
money.parse
Parse "£1,234.50" or "1.234,50 €" into integer minor units, strictly: no guessing, no rounding.
parse_money in Python
1.0.0
py rs ts
37 tests
net.port
Check a TCP/UDP port number and name the IANA service registered on it, with its system/user/dynamic range.
A group of 2: is_port, port_service
1.0.0
py rs ts
30 tests
retail.promotion-apply
Apply BOGOF, 3-for-2, percent off, amount off and multibuy deals to a basket, best for the customer, allocated to lines.
apply_promotions in Python
1.0.0
py rs ts
23 tests
auth.bearer-token
The token from an HTTP Authorization header of the form "Bearer <token>" (RFC 6750), or null if it has none.
parse_bearer_token in Python
1.0.0
py rs ts
18 tests
dates.days-between
Calendar days from one ISO date to another, signed: negative when the second date is earlier.
days_between in Python
1.0.0
py rs ts
15 tests
dates.is-leap-year
Whether a year is a Gregorian leap year: every 4th, except centuries, except every 400th.
is_leap_year in Python
1.0.0
py rs ts
15 tests
finance.ledger.trial-balance
Trial balance from journal lines: debit or credit balance per account, and proof that debits equal credits.
trial_balance in Python
1.0.0
py rs ts
13 tests
react.form.textarea React ^19 · TypeScript only
A labelled multi-line text box with hint, error and an optional live character or word count (GOV.UK).
Not available in Python
1.0.1
ts
16 tests
todo.export-csv
Write todos as a CSV file (RFC 4180) with one column per field, for backups, spreadsheets and other apps.
export_csv in Python
1.0.0
py rs ts
14 tests
todo.merge
Merge imported todos into a list by id: an imported todo replaces the one with its id, new ids are appended.
merge_todos in Python
1.0.0
py rs ts
11 tests
todo.reschedule-recurrence
When a repeating todo's due date is moved by hand, move its series with it: the new date becomes the anchor.
reschedule_recurrence in Python
1.0.0
py rs ts
14 tests
banking.cheque-amount-words
The words and figures to write on a cheque: "One hundred and twenty pounds and fifty pence only", "£120.50".
cheque_amount_words in Python
1.0.0
py rs ts
18 tests
dates.business-days-between
Working days between two dates, excluding weekends and a caller-supplied holiday list.
business_days_between in Python
1.0.0
py rs ts
26 tests
time.unix-to-iso
Unix time in seconds to an ISO 8601 UTC timestamp such as 2026-09-26T12:00:00Z, for years 0001 to 9999.
unix_to_iso in Python
1.0.0
py rs ts
15 tests
todo.parse-tags
Read a tags box as typed, "#Home, work errands", into normalised tags: split on spaces and commas.
parse_tags in Python
1.0.0
py rs ts
12 tests
todo.recurrence-label
English text for a repeating todo's chip: "Every weekday", "Every 2 weeks on Monday", "Every month on the 31st".
recurrence_label in Python
1.0.0
py rs ts
30 tests
todo.normalise-tags
Clean up tags as typed: trim, drop the #, lower-case slug form, drop empties and duplicates, keep the order.
normalise_tags in Python
1.0.0
py rs ts
13 tests
dates.add-business-days
Move a date forward or back by working days, skipping weekends and a caller-supplied holiday list.
add_business_days in Python
1.0.0
py rs ts
19 tests
finance.early-payment-discount
Early settlement discount available on a payment date under "2/10 net 30" style terms, and the amount to pay.
early_payment_discount in Python
1.0.0
py rs ts
16 tests
monitor.http-check-result
Classify one HTTP probe as up, degraded or down, with a reason and message, from status, body and latency.
classify_http_check in Python
1.0.0
py rs ts
39 tests
todo.list
The to-do list reducer: add, edit, complete, remove, clear and reorder todos, each returning a new list.
A group of 8: add_todo, update_todo, toggle_todo, remove_todo, clear_completed, toggle_all, move_todo, toggle_all_mode
1.1.0
py rs ts
102 tests
health.gestational-age Unreviewed
Gestational age (weeks+days) and estimated due date from the last menstrual period by Naegele's rule, cycle-adjusted.
gestational_age in Python
1.0.1
py rs ts
20 tests
health.waiting-time Unreviewed
NHS England referral-to-treatment (RTT) wait in days and weekly bands, with the 18-week breach flag.
rtt_waiting_time in Python
1.0.1
py rs ts
18 tests
health.egfr Unreviewed
eGFR in mL/min/1.73 m² by the race-free CKD-EPI 2021 creatinine equation, from creatinine in µmol/L or mg/dL.
egfr_ckd_epi2021 in Python
1.0.1
py rs ts
25 tests
health.bmi Unreviewed
Adult body mass index (kg/m², 1 decimal place) and its NICE/WHO weight category.
bmi in Python
1.0.1
py rs ts
22 tests
health.bsa Unreviewed
Body surface area in m² by the Mosteller and the DuBois & DuBois formulas, to 2 decimal places.
body_surface_area in Python
1.0.1
py rs ts
16 tests
health.dose-weight-based Unreviewed
Weight-based dose (per kg) capped at a maximum single dose and rounded to a measurable volume, in exact micro-units.
weight_based_dose in Python
1.0.1
py rs ts
20 tests
health.appointment-slots Unreviewed
Bookable appointment slots from clinic sessions, a slot length, breaks and existing bookings.
appointment_slots in Python
1.0.1
py rs ts
20 tests
health.age-in-months Unreviewed
Age in completed months and days on a given date, for paediatric charts and doses; month ends handled like birthdays.
age_in_months in Python
1.0.1
py rs ts
19 tests
construction.retention
Retention held and released on a construction valuation: full rate, half at practical completion, none at the end.
retention in Python
1.0.0
py rs ts
17 tests
construction.valuation
Interim valuation: gross value to date, retention, previous payments, amount due, VAT or reverse charge, and CIS.
interim_valuation in Python
1.0.0
py rs ts
16 tests
manufacturing.tolerance-check
Check a measurement against a nominal size and its upper and lower deviations, in whole micrometres.
check_tolerance in Python
1.0.0
py rs ts
14 tests
monitor.heartbeat-check
A heartbeat's state as a check status for a status page: up, late as degraded, down as down, new as nothing yet.
heartbeat_check in Python
1.0.0
py rs ts
8 tests
monitor.maintenance-window
The scheduled maintenance window in force at a moment, if any, so alerts and uptime can be suppressed during it.
active_maintenance in Python
1.0.0
py rs ts
14 tests
payroll.minimum-wage-check Unreviewed
Check pay for a pay reference period against the minimum or living wage for age and apprenticeship.
minimum_wage_check in Python
1.0.1
py rs ts
19 tests
react.form.password-field React ^19 · TypeScript only
A password input with a Show/Hide button and an optional live checklist of a password policy (GOV.UK password input).
Not available in Python
1.0.1
ts
22 tests
monitor.heartbeat
Whether a cron job that pings on a schedule is new, up, late or down, from its last ping, period and grace time.
heartbeat_status in Python
1.0.0
py rs ts
14 tests
text.normalise-name
Tidy a personal name: trim, collapse whitespace and title-case, with Mc, Mac, O', hyphen and van/de rules.
normalise_name in Python
1.0.0
py rs ts
23 tests
legal.conflict-name-match Unreviewed
Fuzzy-match a name against existing clients and parties for a conflict check: normalised, token-sorted Jaro-Winkler.
conflict_name_match in Python
1.0.1
py rs ts
18 tests