Fewer questions come back to you
Users stop asking what an error code means. The answer is already in the result.
Product
MirrorMere is not a screen — it is the XBRL validation engine that runs behind one. It is a certified XBRL Validating Processor, and it goes straight inside the product you already sell.
How it is built
Most validators stop at What. They tell you something is wrong and leave the why, and the what-now, to whoever received the message. MirrorMere produces all three together — which is only possible because XBRL itself is built here as an ontology.
Ontology and reasoning
A validator that only emits error codes cannot tell you why. Here the concepts, the rules, the errors and the clause behind each of them sit together in one ontology, and the verdict is what SHACL reasons out over it. The reasoning itself is the reason.


ixbrlo:illegalMultipleUseOfId
a owl:Class ;
rdfs:subClassOf ixbrlo:ValidationError ;
rdfs:comment "id attribute reused across iXBRL elements that require uniqueness."@en ;
skos:note "Inline XBRL 1.1, Section 3 — ixe:illegalMultipleUseOfId"@en ;
skos:note "Inline XBRL 1.1, Section 4 — ixe:illegalMultipleUseOfId"@en ;
owl:equivalentClass <http://www.xbrl.org/2013/inlineXBRL/errors#illegalMultipleUseOfId> .
The vocabulary is the W3C standard one; the last line points at the error identifier XBRL International publishes. Nothing here is a name we invented.
Why Path
An error code says something is wrong. Why Path says which object, which rule and which clause — so the person holding the filing can fix it, and you can show your working when someone asks.
Users stop asking what an error code means. The answer is already in the result.
The object and the clause are named, so nobody has to go looking for them.
When an auditor or a regulator asks why, the trail is the answer.
Input
The file being validated.
Rule
The XBRL 2.1 §3–§5 checks that ran.
Clause
Two violations, both bound to XBRL 2.1 §5.1.3.4.
What to fix
The role http://xbrl.org/role/conformance cannot be used on link:label.
That last line is the whole point: it names the fix, not just the failure.
Results you can rely on
A validation result ends up as the grounds for an audit or a submission. So two things matter: the answer must not wobble, and “passed” must actually mean passed. Nothing here guesses or answers by probability — put the same document in a hundred times and you get the same answer a hundred times.
Every finding arrives with the clause it rests on. If no clause is broken, it says so. That is time your team does not spend chasing down whether a warning was real.
A check it could not run is reported as not executed and counted apart from the passes. Nothing slips through in silence, so you can take a clean result at face value.
The standard test suites run on every build, and a change that breaks even one of them never ships. Taking a new release does not overturn what you concluded last month.
Run it again. Same answer.
Validation core
Every specification is a separate module. Take the whole engine, or take only the ones you actually deal with.
| Specification | What it checks |
|---|---|
| XBRL 2.1 Core | Whether figures, periods, units and concept definitions hold together |
| XBRL Dimensions 1.0 | Whether breakdowns such as segment or region are combinations the taxonomy allows |
| XBRL Formula 1.0 | Whether the extra calculation and business rules set by the company or regulator hold |
| XBRL Table Linkbase 1.0 | Whether the report comes out in the table layout the regulator prescribed |
| Inline XBRL 1.1 | Whether what a reader sees and what a machine reads say the same thing |
| Open Information Model 1.0 | Whether the same content keeps its meaning across XML, JSON and CSV |
| Extensible Enumerations 1.0 / 2.0 | Whether a field meant to be chosen from a fixed list really holds a value from it |
| Report Packages 1.0 | Whether the submission bundle is packed the way the rules require |
| Taxonomy Packages 1.0 | Whether a taxonomy package is packed correctly and resolves without internet access |
| Units Registry 1.0 | Whether units such as currency, shares and percentages follow the standard register |
| Link Role Registry 1.0 | Whether the roles used are the ones published in the standard register |
| Transformation Rules Registry v3 / v4 / v5 | Whether “1,234” or “March 2025” on the page converts into the data value the rules prescribe |
Calculation 1.1 comes with the core. Whichever set you pick, the findings all come back in the same shape.
Pure Java and performance
Pure Java — no native code, nothing extra to install. And still quick enough to run the whole suite inside your build. Not once per release: every time you change something.
Timings vary by machine; what matters is the order of magnitude, not the exact number. The tests are published, so you can measure it on your own hardware.
If a JVM runs there, this runs there. Nothing else to install, no native libraries in the box.
Evaluation
The fastest way to judge an engine is to point it at documents you already know the answer for.