Lints the DORA Register of Information CSV before it reaches your supervisor: LEI checksums, ISO 8601 dates, country and currency codes, duplicate or unresolved contract references, rows already expired. Runs entirely in your browser — nothing is uploaded.
Same engine as the VS Code extension, byte for byte.
Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.
VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmMCP server (npx)Docker Hubext install ReadyStack.dora-register-lint npx @readystack/dora-register-lint <file> npx @readystack/dora-register-lint --mcp
Team? One key for every ReadyStack linter, 5 seats, $149 once
Sweep every register CSV in the workspace and write one dated report file (doraRegister-report.md) you can attach to the audit trail
One payment, one licence key for this tool. The key is shown right after payment.
One hour of the compliance analyst who would otherwise re-check the file by hand costs more than the licence; a manual pass over an 800-row register is 24 x 800 = 19,200 check-row comparisons.
Buy the full version — $29· ReadyStack
Real numbers from this tool, line by line.

Twenty-four findings — nineteen errors and five warnings — on ten of eleven rows. That is what an eleven-row sample DORA Register of Information gives up the first time a compliance engineer at an EU payment institution checks the file before filing it.
The register is the list Article 28(3) of Regulation (EU) 2022/2554 asks a financial entity to maintain: every contractual arrangement with an ICT third-party provider, the function it supports, whether that function is critical, where it is provided, what it costs. An export job produces it, and its errors are not spelling mistakes. They are arithmetic, and arithmetic is invisible to the person doing the final read-through.
Start with the identifier. An LEI is twenty characters (ISO 17442) and the last two are check digits computed over the other eighteen with ISO 7064 MOD 97-10. Row two of the sample carried 549300ZBWZJMTEDVDS68. The check digits should be 67. One character is off — a transposition, a paste that lost a keystroke — and nothing about the value looks wrong. A spreadsheet will not catch it. A generic CSV validator will not catch it, because the field is twenty alphanumeric characters and that is all a schema knows to ask. The lint recomputes the digits and prints the two it expected.
Then the dates. 01/04/2024 is the first of April where it was typed and the fourth of January where it is read; the sample carries one. 2026-02-30 is a date that does not exist. One row ends before it starts. And one arrangement ended on 2026-06-30 while the file is being filed as of 2026-09-13 — a contract that terminated in June, still listed as live in September. That last check depends entirely on the reference date, which you set: move the date and the finding moves with it.
Then the links. A register is a graph, not a list. ARR-2026-003 appears as the reference on two different rows, so the supervisor cannot tell which arrangement is which. Another row points at overarching arrangement ARR-2026-009, which no row in the file declares. One row names itself as its own parent. One row is filed twice, field for field.
And the dull ones that bounce a file just as hard: fourteen fields where the header has thirteen, because a provider name held an unescaped comma; Crédit where Crédit was meant, UTF-8 read as Latin-1; 412.000,00 in a numeric column; the word Critical in a yes/no column; Norway where an ISO 3166-1 alpha-2 code belongs; eur in lower case.
Twenty-four checks, all computed from the file itself. None of them gives legal advice or tells you whether the register is complete — they tell you whether what you wrote down survives being read by a machine that is not yours.
Why not hand the file to an assistant? Because the register is the map of who holds your data and which functions stop without them — the one file you cannot paste into a hosted chat window. And because ISO 7064 is arithmetic: a model either runs it or guesses. This runs on the file where it sits, and so does the same engine in the browser.
Checking the file open in your editor is free: every row, all twenty-four checks, no key and no account, findings in the Problems panel and a written summary in the output channel. The licence covers a different job — sweeping every register CSV in the workspace at once and writing one dated report file for the audit trail. By hand the same pass over an 800-row register is 24 × 800 = 19,200 comparisons, and the check digits cannot be done by eye at all; one hour of the analyst who would do it costs more than the licence.
Same engine, byte for byte, in the browser: https://getreadystack.com/tools/dora-register-lint
It reads the register CSV open in your editor and runs 24 checks on it: it recomputes the ISO 7064 check digits inside every LEI, rejects dates that are not ISO 8601 or do not exist, flags country and currency values that are not ISO codes, finds duplicate contract references, links pointing at rows that are absent, and arrangements that ended before your reference date.
The engineer or compliance analyst inside an EU financial entity - a bank, insurer, investment firm, payment or e-money institution - who generates the Register of Information export under DORA Article 28(3) and has to hand it to a national competent authority without it bouncing back for data quality rework.
The register names every provider holding your data and every function that stops without them, so pasting it into a hosted assistant exports your outsourcing map. A generic CSV validator checks shape, not ISO 7064 check digits, not whether a linked arrangement reference exists in the file, not whether a contract already ended. This runs locally and does all three.
Checking the file open in your editor is free forever, with no key, no account and no limit on rows or runs - all 24 checks on every row. The licence covers a different job: sweeping every register CSV in the workspace at once and writing one dated report file you can attach to the audit trail.
A person doing it by hand compares 24 checks against every row: an 800-row register is 19,200 comparisons, and the LEI check digits cannot be done by eye at all. One hour of a financial-sector compliance analyst costs more than the 29 dollar licence, which is a one-off with one key per person or CI seat.
A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. ICT Register Lint - DORA register of information (CSV, XLSX) checks the file you open against 24 rules from a rule set dated 2026-09-20, and points at the exact line. For a filing, an audit or a client you need that dated result on your own files.
One question, answered by the person who built it. Your email only if you want the answer sent.
Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.
For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →