diff --git a/api/scanner/scanner_album.go b/api/scanner/scanner_album.go
index 54f5c8e..0005e4a 100644
--- a/api/scanner/scanner_album.go
+++ b/api/scanner/scanner_album.go
@@ -185,11 +185,7 @@ func findMediaForAlbum(ctx scanner_task.TaskContext) ([]*models.Media, error) {
 					return errors.Wrapf(err, "scanning media error (%s)", mediaPath)
 				}
 
-				if !isNewMedia && media.UpdatedAt.After(item.ModTime()) {
-					return errors.New("nothing to do, processed already")
-				}
-
-				if err = scanner_tasks.Tasks.AfterMediaFound(ctx, media, isNewMedia); err != nil {
+				if err = scanner_tasks.Tasks.AfterMediaFound(ctx, media, isNewMedia, item.ModTime()); err != nil {
 					return err
 				}
 
diff --git a/api/scanner/scanner_task/scanner_task.go b/api/scanner/scanner_task/scanner_task.go
index cee1e38..c374b0d 100644
--- a/api/scanner/scanner_task/scanner_task.go
+++ b/api/scanner/scanner_task/scanner_task.go
@@ -5,6 +5,7 @@ import (
 	"database/sql"
 	"flag"
 	"io/fs"
+	"time"
 
 	"github.com/photoview/photoview/api/graphql/models"
 	"github.com/photoview/photoview/api/scanner/media_encoding"
@@ -28,7 +29,7 @@ type ScannerTask interface {
 
 	// AfterMediaFound will run each media file after is has been saved to the database, but not processed yet.
 	// It will run even when the media is already present in the database, in that case `newMedia` will be true.
-	AfterMediaFound(ctx TaskContext, media *models.Media, newMedia bool) error
+	AfterMediaFound(ctx TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error
 
 	BeforeProcessMedia(ctx TaskContext, mediaData *media_encoding.EncodeMediaData) (TaskContext, error)
 	ProcessMedia(ctx TaskContext, mediaData *media_encoding.EncodeMediaData, mediaCachePath string) (updatedURLs []*models.MediaURL, err error)
diff --git a/api/scanner/scanner_task/scanner_task_base.go b/api/scanner/scanner_task/scanner_task_base.go
index 4864fcf..78187d1 100644
--- a/api/scanner/scanner_task/scanner_task_base.go
+++ b/api/scanner/scanner_task/scanner_task_base.go
@@ -2,6 +2,7 @@ package scanner_task
 
 import (
 	"io/fs"
+	"time"
 
 	"github.com/photoview/photoview/api/graphql/models"
 	"github.com/photoview/photoview/api/scanner/media_encoding"
@@ -22,7 +23,7 @@ func (t ScannerTaskBase) MediaFound(ctx TaskContext, fileInfo fs.FileInfo, media
 	return false, nil
 }
 
-func (t ScannerTaskBase) AfterMediaFound(ctx TaskContext, media *models.Media, newMedia bool) error {
+func (t ScannerTaskBase) AfterMediaFound(ctx TaskContext, media *models.Media, newMedia bool, mediaModTime time.Time) error {
 	return nil
 }
 
diff --git a/api/scanner/scanner_tasks/exif_task.go b/api/scanner/scanner_tasks/exif_task.go
index 5b44abb..73f08ad 100644
--- a/api/scanner/scanner_tasks/exif_task.go
+++ b/api/scanner/scanner_tasks/exif_task.go
@@ -2,6 +2,7 @@ package scanner_tasks
 
 import (
 	"log"
+	"time"
 
 	"github.com/photoview/photoview/api/graphql/models"
 	"github.com/photoview/photoview/api/scanner/exif"
@@ -12,7 +13,10 @@ type ExifTask struct {
 	scanner_task.ScannerTaskBase
 }
 
-func (t ExifTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
+func (t ExifTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
+	if !newMedia && media.UpdatedAt.After(newModTime) {
+		return nil
+	}
 
 	_, err := exif.SaveEXIF(ctx.GetDB(), media)
 	if err != nil {
diff --git a/api/scanner/scanner_tasks/notification_task.go b/api/scanner/scanner_tasks/notification_task.go
index 7260667..48a311f 100644
--- a/api/scanner/scanner_tasks/notification_task.go
+++ b/api/scanner/scanner_tasks/notification_task.go
@@ -27,7 +27,7 @@ func NewNotificationTask() NotificationTask {
 	}
 }
 
-func (t NotificationTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
+func (t NotificationTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
 	if newMedia {
 		t.throttle.Trigger(func() {
 			notification.BroadcastNotification(&models.Notification{
diff --git a/api/scanner/scanner_tasks/processing_tasks/sidecar_task.go b/api/scanner/scanner_tasks/processing_tasks/sidecar_task.go
index abad1df..9cd64af 100644
--- a/api/scanner/scanner_tasks/processing_tasks/sidecar_task.go
+++ b/api/scanner/scanner_tasks/processing_tasks/sidecar_task.go
@@ -8,6 +8,7 @@ import (
 	"log"
 	"os"
 	"path"
+	"time"
 
 	"github.com/photoview/photoview/api/graphql/models"
 	"github.com/photoview/photoview/api/scanner/media_encoding"
@@ -20,7 +21,7 @@ type SidecarTask struct {
 	scanner_task.ScannerTaskBase
 }
 
-func (t SidecarTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
+func (t SidecarTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
 	if media.Type != models.MediaTypePhoto || !newMedia {
 		return nil
 	}
diff --git a/api/scanner/scanner_tasks/scanner_tasks.go b/api/scanner/scanner_tasks/scanner_tasks.go
index 4e67198..510c46e 100644
--- a/api/scanner/scanner_tasks/scanner_tasks.go
+++ b/api/scanner/scanner_tasks/scanner_tasks.go
@@ -2,6 +2,7 @@ package scanner_tasks
 
 import (
 	"io/fs"
+	"time"
 
 	"github.com/photoview/photoview/api/graphql/models"
 	"github.com/photoview/photoview/api/scanner/media_encoding"
@@ -91,9 +92,9 @@ func (t scannerTasks) AfterScanAlbum(ctx scanner_task.TaskContext, changedMedia
 	})
 }
 
-func (t scannerTasks) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
+func (t scannerTasks) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
 	return simpleCombinedTasks(ctx, func(ctx scanner_task.TaskContext, task scanner_task.ScannerTask) error {
-		return task.AfterMediaFound(ctx, media, newMedia)
+		return task.AfterMediaFound(ctx, media, newMedia, newModTime)
 	})
 }
 
diff --git a/api/scanner/scanner_tasks/video_metadata_task.go b/api/scanner/scanner_tasks/video_metadata_task.go
index e67d6eb..db091a1 100644
--- a/api/scanner/scanner_tasks/video_metadata_task.go
+++ b/api/scanner/scanner_tasks/video_metadata_task.go
@@ -5,6 +5,7 @@ import (
 	"log"
 	"strconv"
 	"strings"
+	"time"
 
 	"github.com/photoview/photoview/api/graphql/models"
 	"github.com/photoview/photoview/api/scanner/scanner_task"
@@ -17,7 +18,7 @@ type VideoMetadataTask struct {
 	scanner_task.ScannerTaskBase
 }
 
-func (t VideoMetadataTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
+func (t VideoMetadataTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
 
 	if !newMedia || media.Type != models.MediaTypeVideo {
 		return nil
