Workflow & Usage
- Add JPEGs. Drag & drop or click to select one or more
.jpg/.jpegfiles. - Instant analysis. The checker reads headers client-side - no uploads, no WASM, no workers.
- Review results. Each card shows:
- Progressive or Baseline (SOF2 vs SOF0)
- Dimensions & precision (sample depth)
- Subsampling (e.g., 4:2:0, 4:4:4, or grayscale)
- DQT/DHT table counts
- Scan list with Ss–Se and Ah/Al per SOS
- JFIF presence & basic EXIF orientation (if found)
What This Checker Verifies
-
Progressive vs Baseline
Detects SOF2 (progressive) and SOF0 (baseline) markers so you know how the image will stream. -
Scan Structure (SOS)
Lists every scan’s component IDs, spectral selection (Ss–Se), and successive approximation (Ah/Al) to reveal the pass strategy. -
Chroma Subsampling
Infers 4:4:4 / 4:2:2 / 4:2:0 / 4:1:1 / 4:4:0 / GRAY from component sampling factors in the SOF segment. -
Tables & Metadata
Counts DQT (quantization) and DHT (Huffman) tables; notes JFIF and basic EXIF orientation when present.
Tip: Use this checker to audit image pipelines, verify email-safe assets, or confirm CMS/CDN behavior after transforms.
Interpreting Results
- Progressive (SOF2): Renders in multiple passes. Good for perceived speed where streaming matters.
- Baseline (SOF0): Decodes top-to-bottom in a single pass. Fine for local fast loads; less pleasant on slow links.
- Scans: More scans can mean smoother progression but not always smaller files - it depends on the encoder strategy.
- Subsampling:
- 4:2:0: great default for photos (smaller file size).
- 4:4:4: use when color edges matter (logos/UI/illustrations).
- GRAY: for true grayscale assets; smallest when appropriate.
Limitations
- No partial-pass preview: Browsers don’t expose progressive pass rendering to canvas.
- Header-only: We don’t decode pixels; corrupted files may be partially readable or fail early.
- Metadata variety: Some producers write non-standard segments; we aim to be polite but strict enough to avoid false positives.
How It Works (Under the Hood)
- Marker walk: Reads the byte stream, confirming SOI/EOI, then iterates segments by marker (
0xFFxx) and length. - SOF/SOS parsing: Extracts width/height/precision/components, then parses each SOS for components, Ss/Se, and Ah/Al.
- Subsampling inference: Uses component sampling factors (H×V) to map to human-readable subsampling (e.g., 4:2:0).
- Tables & metadata: Increments DQT/DHT counts; notes APP0 JFIF; lightly parses APP1/Exif for orientation.
- Privacy by design: Everything happens locally; you can export a JSON report for reproducible audits.
Use Cases
- CDN/CMS QA: Verify whether transformations keep progressive encoding and intended subsampling.
- Email & Newsletters: Ensure images remain progressive for better perceived load across clients.
- Performance Audits: Inspect scan strategies and table counts for assets that feel slow or heavy.
Tips
- Measure before changing. If a file is baseline but loads fast, switching to progressive might not be noticeable in all contexts.
- Mind subsampling for UI art. Logos and crisp graphics often look better as PNG/WebP or at least with 4:4:4.
- Pair with the Converter. Need progressive output? Re-encode with the Progressive JPEG Converter and compare size/quality.