Your first result, with practice files
You need the purchased ZIP and a working Python 3.10+ command. Extract the ZIP, then open a terminal in its extracted folder. The free guide pack contains static examples only; audit.py is in the buyer package. Python, Aseprite and the separate Svarn preview are not included.
Check one export
Run the command below from the folder containing audit.py. It reads the manifest and its three PNGs without changing them.
python3 audit.py examples/first-export --format textExpected: Export checks passed and three PNGs checked. These small practice files were made by a test harness, not Aseprite.
Compare the two practice exports
Create a readable HTML report, then open report.html in your browser.
python3 audit.py examples/first-export --compare examples/second-export --format html > report.htmlExpected: added new_badge.png, removed old_badge.png, changed idle_02.png.
The shell's > operator creates or replaces the report file. Choose a new filename to keep an old result. Never redirect output into an input manifest or PNG.

Use your own Svarn exports
Keep each export in its own folder, with svarn-manifest.json beside the PNGs. Complete the export in Svarn first. Quote any path containing spaces.
python3 audit.py "/path/to/svarn-export" --format textFor a revision comparison, put the older folder first and the newer folder after --compare. Both must pass the supported checks.
python3 audit.py "/path/to/old-export" --compare "/path/to/new-export" --format html > revision-report.htmlOmit --format to get the original JSON format with complete SHA-256 hashes. Use --format text for a terminal summary or --format html for a self-contained, printable report. Exit code 0 means the checks passed; 1 means the audit failed.
Reports contain filenames and hashes. Review them before sharing. No files are uploaded. HTML reports need no scripts, external fonts or internet connection.
Read the result with confidence
Passed
The listed PNGs passed the supported file checks. Review the artwork in Aseprite as well; this is not a visual comparison with your source.
Warnings
Exporter warnings stay visible. Passing file checks does not resolve those warnings. Review the original manifest before delivery.
Changes
Added and removed describe names present in only one export. Changed describes same-name PNGs with different bytes.

Open File fingerprints · first export to inspect the hashes. They identify bytes, not authenticity or quality. Print or save the report to PDF using your browser; the print layout includes the fingerprints even when the disclosure is closed on screen.
If a check needs attention

A failed check stops the comparison. Text and JSON mode explain the failure on standard error. HTML mode also writes a visible failure report to standard output.
Missing or corrupt PNG
Check the named file. Re-export with Svarn into a new empty folder, resolve any exporter failures, then audit that new folder. Do not edit hashes or the manifest to force a pass.
Extra PNG or unsafe filename
The audit rejects PNGs that are not listed in the manifest and names with path separators, leading dots or control characters. Use an intact export folder rather than mixing exports.
Invalid or incomplete manifest
The manifest must be a schema-1 JSON object with valid positive integer dimensions, failures and warnings arrays, and a complete status. Nonempty failures or inconsistent warning status are rejected. Re-export with Svarn; do not substitute a screenshot or rename another JSON file.
Python command not found
Check that Python 3.10+ is installed and available as python3. This package does not install Python. Run python3 --version to confirm your environment.
Know exactly what was checked
Supported checks
Manifest-listed file presence, dimensions, PNG chunk CRCs and order, critical chunks, compressed streams, filters, indexed-colour bounds and SHA-256 hashes for the supported PNG subset. A comparison identifies added, removed and byte-changed PNGs.
Boundaries
- Svarn schema 1; 8-bit, non-interlaced RGB, indexed or RGBA PNGs.
- Manifest up to 2,000,000 bytes; 1–10,000 listed PNGs; 64 MiB and 16 million pixels per PNG.
- Unique plain PNG basenames only. Manifest and PNG symbolic links are rejected. Other non-PNG files in the export folder are not checked.
- This is not a full PNG conformance validator. It does not fully decode artwork or compare pixels with an Aseprite source.
Verified evidence
Linux/Python checks and Chrome 152 report views. One saved fictional Aseprite Linux export was replayed through valid, corrupt, missing-file and byte-change cases. The screenshots here show synthetic audit examples. Other platforms, real customer workflows, physical printing and new native Aseprite installation were not verified for this update.
The editable source, regression tests and a deterministic ZIP builder are included with the buyer package. Run python3 tests/run.py to check the included fixtures; run python3 build-package.py /path/to/new-output to rebuild the buyer and guide archives. Choose an output folder outside the extracted package.
Licence and original preview rights remain unchanged. No activation or account is required. For support, reply to the seller contact on your purchase receipt with version 0.1.1 and a description of the problem; no response time is promised.