Correct photo capture clocks
Apply one explicit clock correction to existing JPEG Exif dates; keep every other source byte and download the full change report.
- 1Add input
- 2Adjust settings
- 3Get your result
Tool input and files are processed in this browser without being uploaded.
Before you start
A camera clock was wrong across a photo batch. Add exact seconds, or give one recorded and actual wall-clock pair, then choose the existing date fields to change. Keep originals and compare every corrected copy with the complete report.
How to use this tool
- Choose all supported original JPEG photos with the same camera-clock error.
- Enter exact seconds or one recorded/actual anchor pair; select existing date fields.
- Run, compare before/after preview rows and the batch summary, then download the complete ZIP.
- Use clock-report.json and corrected copies to review every source, field, byte span and hash; check the receiving program’s date priority.
Supported inputs and limits
1–500 original JPEG Files, 10 MiB each and 100 MiB total; filenames up to 512 UTF-8 bytes. The picker may impose a shorter basename limit.
Baseline 8-bit SOF0, one interleaved scan and terminal EOI; exactly one classic little- or big-endian Exif TIFF. Progressive JPEG, BigTIFF, multiple Exif sections, MPF, JUMBF, trailers and unsupported structures refuse the entire queue.
Per photo: 4096 markers, 5 supported IFD roles, 512 entries per IFD and 1500 entries; queue total 100000 entries. Selected date values must be existing 20-byte ASCII fields with valid years 0001–9999.
Exact integer seconds and recorded/actual anchors are mutually exclusive. Anchors use YYYY:MM:DD HH:mm:ss and change every selected existing field by the same wall-clock offset. No timezone inference or missing-tag creation.
Only DateTime, DateTimeOriginal and DateTimeDigitized can be selected. XMP dates, OffsetTime, SubSec, GPS, compressed pixels and every other byte stay unchanged. File-system dates are not edited.
The screen previews at most 20 changed fields and copies a bounded batch summary. The ZIP contains every corrected JPEG, complete clock-report.json, formula-safe clock-changes.csv and copy.txt. Source names, indices, hashes and selected/unselected dates remain complete.
Malformed, unsupported, missing-field, over-budget, cancelled or timed-out input yields no partial package. The whole operation has a 10-second deadline, including local loading and file reads; retry the same selected originals after cancellation.
Report and CSV each have an 8 MiB guard; complete binary plus text and binary plus metadata each have a 128 MiB guard. Processing stays in this browser, without uploading names or contents. Source pixels are not decoded or re-encoded by this tool.
Worked example
Example input
One supported original photo with DateTimeOriginal = 2024:02:29 23:59:59.
Example options
Add 1 second; select DateTimeOriginal.
Example output
DateTimeOriginal becomes 2024:03:01 00:00:00; all other bytes remain unchanged.
When something does not work
Keep the originals. If any selected field is absent, choose fields present in every source or prepare a supported source first. Review offset signs and calendar years. Cancelled or timed-out runs leave no partial ZIP; rerun the same selected files.
Frequently asked questions
Does this make XMP and file dates agree?
Only the explicitly selected existing Exif fields change. XMP, offset/subsecond tags and filesystem dates stay unchanged; a receiving program may prefer one of those dates.
Can anchors discover my timezone or create a missing date?
No. You supply both wall-clock values; their difference is applied uniformly. Missing selected tags refuse the entire queue.