Skip to content
checkaifree

Local image workflow

Image file checks: format, dimensions, hashes and defined pixel differences

Start with the question the file needs to answer. A container label, an exact byte identity and a decoded pixel comparison produce different evidence; keep their outputs and limitations separate.

18 October 2026 · Check AI Free

Choose a check from the task

Choose a check from the task
Your questionFirst toolOutput to keep
Is this .jpg really JPEG?Image file type checkerSignature, supported structural diagnostics, extension/MIME comparison
Will its displayed size or bytes fit a requirement?Image dimensions checkerEncoded/display width and height, EXIF orientation, exact pixel count and stated maximum conditions
Did I receive the exact same file bytes?Image file SHA-256Digest and byte length; optional expected digest result
Which selected files are exact copies?Find exact duplicate filesPer-file status and groups confirmed by hash, size and byte checks
Where do two decoded images differ?Compare image filesIndependent byte result, native RGBA status, change bounds and difference PNG

Three defined scenes

These scenes share a project-authored 8 × 6 RGBA chart and source-defined variants. They are not independent photographs or an accuracy study. The actual canonical files were selected and compared in Chromium, including a newly downloaded text replacement. The downloadable summary computes byte facts on the server and labels independent Pillow expectations; it does not run Canvas or supply a reading of files you later select.

Three defined scenes
SceneReference outputDecision
S-H05-BYTESTwo differently named copies group together; a same-name metadata variant does notUse exact-file groups when byte identity is the requirement.
S-H05-METADATA338 versus 330 bytes; different hashes; identical defined Chromium RGBA, independently confirmed by PillowA file-byte change alone does not locate a pixel change.
S-H05-PIXELOne changed red sample at (5, 3); delta 15; 1 × 1 change boundsUse native-size coordinates and the difference map to locate the defined change.
  • Download the original synthetic RGBA PNG — Project-authored 8 × 6 PNG, 338 bytes. Four colored regions, alpha controls and one Description tEXt field: Fictional metadata; pixel samples are unchanged. This canonical download differs from the separate 266-byte built-in hash sample.
  • Download the verified metadata text replacement — 330-byte output replacing original.png chunk-2 Description with “Edited locally for the SHA-256 exercise.” using tEXt. Original IDAT is retained; independent decoded samples match.
  • Download the one-pixel difference control — Same 8 × 6 chart in a 266-byte PNG without the Description field. The red channel at zero-based (5, 3) changes from 240 to 255; independent Pillow locates exactly one changed pixel.
  • Download the three-scene summary — Build-computed hashes, headers and byte groups with separately labeled Pillow expectations. The summary does not run Canvas; selected files receive their own browser report.

Carry the evidence through a handoff

  1. Step 1

    Inspect type and limits

    Keep the received original. Read its signature and actual structure before relying on its extension; compare encoded and valid-EXIF display dimensions with the next operation's byte/pixel limits.

  2. Step 2

    Use identity or pixels according to the need

    Hash/group files for exact bytes. For pixel questions, compare full native sRGB RGBA after the stated orientation policy; do not resize to thumbnails to manufacture equal dimensions.

  3. Step 3

    Export the scope with the result

    Review local reports before sharing. Duplicate reports exclude filenames by default. Pixel reports retain hashes, decode states, fixed conditions and limited changed values, while a difference PNG itself can reveal part of the image's geometry.

Keep failure and uncertainty visible

A malformed container, unreadable file, unsupported signature, hash error or cancellation is not an empty or successful equality result. One batch failure does not erase the other real rows. Pixel decoding is limited to static JPEG/PNG/WebP, 20 MiB per file, 16 million pixels and 8192 pixels per side, with animation and multi-picture JPEG rejected.

The RGBA comparison includes alpha and normalizes fully transparent RGB to zero. It applies valid EXIF orientation once, ignores XMP orientation and uses the browser's sRGB color pipeline for embedded profiles. Different native dimensions remain not compared. This is neither perceptual similarity nor original sensor-pixel, authorship, file-safety or provenance verification.

  • NIST FIPS 180-4, August 2015 — Fixed Secure Hash Standard used for SHA-256. A content digest identifies bytes; this workflow does not add identity authentication or signature validation.
  • WHATWG HTML Canvas source, revision de953a7cf052 — Primary specification snapshot checked 18 October 2026, including Canvas color spaces and ImageData. The site's native-size, 8-bit sRGB RGBA and transparent-RGB policy is stated separately.
  • The fixed original, re-encode and screenshot experiment — Eight licensed Commons photographs and specified local transforms. Its historical 800 × 600 Chromium captures are known screenshots because the capture process was recorded, not because they use PNG.

Sources and reproducible inputs

  • Download the original synthetic RGBA PNG — Project-authored 8 × 6 PNG, 338 bytes. Four colored regions, alpha controls and one Description tEXt field: Fictional metadata; pixel samples are unchanged. This canonical download differs from the separate 266-byte built-in hash sample.
  • Download the verified metadata text replacement — 330-byte output replacing original.png chunk-2 Description with “Edited locally for the SHA-256 exercise.” using tEXt. Original IDAT is retained; independent decoded samples match.
  • Download the one-pixel difference control — Same 8 × 6 chart in a 266-byte PNG without the Description field. The red channel at zero-based (5, 3) changes from 240 to 255; independent Pillow locates exactly one changed pixel.
  • NIST FIPS 180-4, August 2015 — Fixed Secure Hash Standard used for SHA-256. A content digest identifies bytes; this workflow does not add identity authentication or signature validation.
  • W3C Web Cryptography API, 26 January 2017 — Fixed Recommendation defining SubtleCrypto.digest and SHA-256. The tool uses the browser API with no substitute hash algorithm.
  • W3C PNG Third Edition, 24 June 2025 — Fixed primary specification for the PNG signature, chunks, CRC, image dimensions, alpha and embedded metadata. A subset structure check does not certify full conformance.
  • WHATWG HTML Canvas source, revision de953a7cf052 — Primary specification snapshot checked 18 October 2026, including Canvas color spaces and ImageData. The site's native-size, 8-bit sRGB RGBA and transparent-RGB policy is stated separately.

Continue with your file