diff --git a/server/src/services/library.service.spec.ts b/server/src/services/library.service.spec.ts
index 5f81d92ec2b3d3..6c22996bbc4836 100644
--- a/server/src/services/library.service.spec.ts
+++ b/server/src/services/library.service.spec.ts
@@ -337,12 +337,35 @@ describe(LibraryService.name, () => {
 
       expect(assetMock.updateAll).toHaveBeenCalledWith([assetStub.trashedOffline.id], {
         deletedAt: null,
-        fileCreatedAt: assetStub.trashedOffline.fileModifiedAt,
         fileModifiedAt: assetStub.trashedOffline.fileModifiedAt,
         isOffline: false,
         originalFileName: 'path.jpg',
       });
     });
+
+    // regression test for https://github.com/immich-app/immich/issues/15640
+    it('should not touch fileCreatedAt when un-trashing an asset previously marked as offline', async () => {
+      // After the initial import, fileCreatedAt is overwritten with metadata information (dateTimeOriginal).
+      // We need to retain this information. If we overwrite this, we'd need to trigger a new metadata extraction job.
+
+      const mockAssetJob: ILibraryAssetJob = {
+        id: assetStub.external.id,
+        importPaths: ['/'],
+        exclusionPatterns: [],
+      };
+
+      assetMock.getById.mockResolvedValue(assetStub.trashedOffline);
+      storageMock.stat.mockResolvedValue({ mtime: assetStub.trashedOffline.fileModifiedAt } as Stats);
+
+      await expect(sut.handleSyncAsset(mockAssetJob)).resolves.toBe(JobStatus.SUCCESS);
+
+      expect(assetMock.updateAll).toHaveBeenCalledWith(
+        [assetStub.trashedOffline.id],
+        expect.not.objectContaining({
+          fileCreatedAt: expect.anything(),
+        }),
+      );
+    });
   });
 
   it('should update file when mtime has changed', async () => {
@@ -360,7 +383,6 @@ describe(LibraryService.name, () => {
 
     expect(assetMock.updateAll).toHaveBeenCalledWith([assetStub.external.id], {
       fileModifiedAt: newMTime,
-      fileCreatedAt: newMTime,
       isOffline: false,
       originalFileName: 'photo.jpg',
       deletedAt: null,
diff --git a/server/src/services/library.service.ts b/server/src/services/library.service.ts
index dca1dec9e2786e..daccf01dceedb1 100644
--- a/server/src/services/library.service.ts
+++ b/server/src/services/library.service.ts
@@ -511,7 +511,6 @@ export class LibraryService extends BaseService {
       await this.assetRepository.updateAll([asset.id], {
         isOffline: false,
         deletedAt: null,
-        fileCreatedAt: mtime,
         fileModifiedAt: mtime,
         originalFileName: parse(asset.originalPath).base,
       });