I built lapse, a small CLI tool that makes the EXIF timestamps of burst-shot JPEGs unique so that Google Photos displays them in the order they were shot.

The problem

When you shoot a burst, many frames land within the same second. Cameras record the sub-second part in EXIF (SubSecTimeOriginal), but Google Photos ignores it — so photos taken in the same second lose their shooting order after upload.

What lapse does

lapse walks through the JPEGs in a directory in natural filename order (image_2.jpg before image_10.jpg) and assigns each file: