Skip to content
heic.fyi

Optimize

Edit HEIC Date Taken

Fix a wrong camera clock, shift a trip across time zones or give a photo a date it never had. The date is rewritten inside the HEIC; the picture is not re-encoded and every file is checked before you get it.

Input

Drop HEIC or HEIF files here

or choose them from your device

HEIC or HEIF · up to 100 MB per file · processed on your device

At a glance

Input
HEIC/HEIF, up to 50 files
Output
The same HEIC, only Exif and XMP text changed
Range
Years 1900 to 2099, no clamping
Checked
Re-read, byte-compared and decoded

What this tool does

This tool changes the date and time a HEIC photo says it was taken, and optionally the UTC offset, without re-encoding the picture. The date lives in text inside the file's Exif block (DateTimeOriginal, "date taken", plus the created and modified dates), so the tool overwrites that text where it sits. Most edits leave the file exactly the same length and change a few dozen bytes; the coded image data, thumbnails and everything else in the container are copied untouched, and in my tests the SHA-256 of that data was identical before and after every edit.

There are four ways to choose the new date. Set an exact date writes the same date and time to every file. Shift moves each photo later or earlier by years, months, days, hours, minutes and seconds from its own date, which is the fix for a camera clock that was wrong or a trip shot in another time zone. Edit each file gives every photo its own date. From the file name reads names such as IMG_20240704_093015 or PXL_20240704_093015123 and uses a date and time only when both are present and real. A table shows every photo's current dates (date taken, modified, UTC offset, XMP date and any GPS time) beside what it will become, and it updates as you type.

Exif dates have no time zone, so the tool treats them as wall-clock readings. A shift moves the clock time and ignores daylight saving; it does not change the UTC offset unless you pick one. If you pick an offset, it is written to the OffsetTime tags, which are created when the file lacks them. GPS date and time stamps in the file are UTC, so they are rewritten to match the new local time and offset, or removed when the file gives no way to convert (see Good to know). If the photo carries an XMP packet with dates, those are rewritten too where the new text is the same length, and anything left is listed.

Each saved file is re-read from scratch before it is offered: the container, every item's bytes, the whole Exif tag set (compared tag for tag against the plan), a second Exif parser, the XMP, and a decode compared with the original decode. A file that fails any check is discarded. If a photo has no Exif or no date tags and you give it a date, the file has to grow by a few hundred bytes to hold the new tags, and the report says so. In my tests, 39 scripted edits (big- and little-endian Exif, zeroed and malformed dates, leap days and year boundaries, XMP, GPS stamps, grids) and 24 further photos edited through the page, including a 27 MP and a 48 MP file, all passed, and exiftool, Pillow and pillow-heif read the new dates and decoded identical pixels. A 48 MP photo took about 12 seconds to save and verify in Chromium, most of it the two decodes. The tool cannot set the file's "last modified" time on your device; that is covered below.

How to use it

  1. 01

    Add your HEIC photos

    Up to 50 files or 500 MB. Files are read, not decoded, so the table of current dates appears almost at once, even for a 48 MP photo.

  2. 02

    Choose what to do

    Set an exact date, Shift by an amount, Edit each file, or From the file name. Enter the date, the amount or each photo's date; the "Will become" column shows the result for every photo before anything is written.

  3. 03

    Pick a UTC offset if the zone matters

    Leave it as it is in each file, or set one from UTC-12:00 to UTC+14:00. Setting an offset also keeps GPS time stamps consistent and creates the OffsetTime tags where they are missing.

  4. 04

    Decide about the other dates

    By default the created and modified dates follow the date taken, so no old date is left behind. Untick it to change only DateTimeOriginal. "Only add a date to photos that have none" leaves photos that already have one alone.

  5. 05

    Press Save

    Each photo is edited, then re-read and verified. Photos that would not change, or cannot be changed, are listed with the reason instead of being downloaded.

  6. 06

    Check the report and download

    The report shows each field before and after, whether the file stayed the same size, the image-data hash and the checks that ran. Download one file or all as heic-new-dates.zip. Files are named with -new-date.

When to use it

A camera clock that was wrong

A camera set to the wrong year or an hour out leaves every photo mis-sorted. Shift the whole batch by the same amount: each photo moves from its own date, so the gaps between shots stay exactly as they were.

A trip shot on home time

Photos taken in Tokyo on a phone still set to London time sit nine hours off. Shift later by 9 hours and set the offset to UTC+09:00, and both the clock time and the zone say where you were.

Converted or scanned photos with no date

Files from a converter or a scanner often lose their Exif, and photo libraries then sort them by the day you imported them. Set an exact date, or read it from the file name, and the photo gets a real date taken.

Fixing a zeroed date

Some cameras and apps write 0000:00:00 00:00:00. That is not a date, so a shift leaves it alone and says so; setting an exact date replaces it.

Good to know

  • 01A web page cannot set a file's "last modified" time. The downloaded file will show the moment you saved it in Finder or Explorer. Photo apps such as Apple Photos, Google Photos, Windows Photos and Lightroom read the date inside the file, which is what changes, but a file manager sorting by Date Modified will not reflect it.
  • 02Only dates this tool knows are changed. Apple's MakerNote is an opaque block and is left byte for byte as it was, including anything in it that relates to time. XMP properties that are not capture dates (xmp:MetadataDate, edit history), a JPEG thumbnail embedded inside the Exif, and the track times of an image sequence are not edited.
  • 03SubSecTime digits (the fraction of a second) are kept, because they only order shots within one second. If you set an exact date, they stay on each photo.
  • 04GPS date and time stamps are UTC. They are recomputed from the new local time and the UTC offset in the file (or the offset you choose; if the file has none, the offset implied by its own GPS stamp when that is plausible). When none of those exist, the GPS date and time are removed rather than left contradicting the new date. Latitude, longitude and everything else in the GPS block stay.
  • 05Years run from 1900 to 2099, and nothing is clamped: 29 February plus a year, or a shift that leaves the range, is refused for that photo with the reason. Whole-year and whole-month shifts keep the day number, so they need that day to exist in the new month.
  • 06Adding tags that a file does not have makes it a few hundred bytes longer. A file with an image sequence (a moving photo track) is refused for that, because adding an item would mean moving its tracks. Dates that are already in such a file can still be changed.
  • 07Tested on files made with pillow-heif and libheif, the sample files on this site and hand-built variants (big- and little-endian Exif, zeroed and malformed dates, XMP, grids, a 48 MP photo), not on a broad set of genuine iPhone photographs. I could not test Apple, Windows or Android apps, only exiftool 13.10, Pillow, pillow-heif and the browser.

Technical notes

Privacy and limits

Your file stays on your device

This tool runs in your browser with WebAssembly. The file is read into the tab, processed there and discarded when you close it — there is no upload and no account. You can check this yourself in your browser's network panel, and the privacy page lists what analytics does and does not receive.

Limits and checks

Up to 100 MB and 100 megapixels per file; batches of up to 50 files and 500 MB. Files are treated as untrusted input and every output is re-opened and validated before it is offered — see how we handle untrusted files.

Frequently asked questions

Related tools and reading

Further reading

Last updated: . Something wrong or out of date? Tell us — corrections are recorded in the changelog.