Work
loupe-iiif
A browser extension that checks and validates IIIF manifests, with plain-language findings that point at the line that caused them.
Why it exists
A IIIF manifest is the JSON file that tells a viewer how to present a digital object, whether that's a book, a painting, a map, a score, or an A/V recording, and where to find its media. When one is wrong, the failure is usually silent: a misspelled field a viewer quietly ignores, an image URL that 404s, a structure that renders in one viewer and not the next.
loupe-iiif is built for the person writing the manifest, not for a gate at the end of a pipeline. Paste a manifest, load it from a URL, or open a file. It appears in a code editor and is checked as you type. Findings are underlined where they occur and listed in a report, and clicking one jumps to the exact spot in the JSON.
Four layers of checks
The checks run in order, from the mechanical to the editorial, so a missing comma never hides behind a hundred downstream complaints.
- L1 Well-formedness
- Is it parseable JSON?
- L2 Spec conformance
- Does it match the Presentation API structure for the version it declares?
- L3 Linking
- Do the URLs it references actually resolve?
- L4 Best-practice lint
- Valid, but ill-advised?
The Presentation API version is detected from the manifest's own
@context, and it's validated against that version's rules.
Versions 2.1, 3.0, and 4.0 are all supported.
How it's built
The 3.0 and 4.0 schemas come from IIIF's own presentation-validator project, the same schemas behind the community validator, so loupe-iiif agrees with the reference implementation rather than inventing a second opinion. The 2.1 schema is a smaller one maintained in the repo.
Manifest V3 forbids eval, so the schemas are precompiled into a
standalone, eval-free validator at build time instead of being compiled in the
browser. That constraint turned out to be a feature: validation is instant, and
it works with no network round trip.
Nothing is collected, stored, or transmitted. Manifest URLs are fetched straight from their host and everything is validated in your browser. No analytics, no accounts, no server of ours in the middle. It's free and open source under the ISC license.
Built with
Ajv · CodeMirror 6 · Manifest V3 · Svelte 5 · TypeScript · Vite
Try it
Talk to us
We build tools like this for the same reason we build everything else: collections are easier to open up when the plumbing is correct. If you're working on something similar, we'd like to hear about it.