wacz-validator
Tells you whether a WACZ is actually valid — and why it is not.
What wacz-validator is
Section titled “What wacz-validator is”A producer-independent validator for WACZ — the format that packages WARC data and its metadata into a ZIP file. Point it at an archive and it reports, rule by rule, what conforms and what does not.
Producer-independent means it makes no assumptions about which tool wrote the archive. It reads the ZIP as the spec describes it, so a WACZ from any recorder is judged the same way.
Two things it is not
Section titled “Two things it is not”It does not replay archives — that is ReplayWeb.page’s job. And it does not produce them; when this site mentions BrowserHive, that is a separate project whose output wacz-validator happens to check.
How it is put together
Section titled “How it is put together”flowchart LR
tui["@wacz-validator/tui (bin: wacz-validator)"] ==>|"WS / JSON-RPC"| daemon["@wacz-validator/daemon"]
browser(["browser (planned)"]) -.->|"WS"| daemon
cli["@wacz-validator/validate-cli (bin: wacz-validator-validate)"] -->|validates with| core["@wacz-validator/core"]
daemon -->|validates with| core
tui -->|import| protocol["@wacz-validator/protocol"]
daemon -->|import| protocol
protocol -.->|"import type only"| core
core -->|import| shared["@wacz-validator/contract"]
protocol -->|import| shared
classDef shared fill:#fff3cd,stroke:#d4a72c,color:#5c4500;
classDef future fill:#eeeeee,stroke:#999999,color:#666666;
class shared,protocol shared;
class browser future;
The daemon is stateless, which is what lets a future browser frontend speak the same protocol as the terminal UI. See Architecture.
Where things are
Section titled “Where things are”| I want to… | Page |
|---|---|
| validate an archive for the first time | Quickstart |
| know what each rule checks | Rules |
understand --profile |
Profiles |
| consume the JSON output | JSON report |
| see real failing archives | Corpus |
validate an s3:// archive |
Apple Container stack |