[Bug] Only one of several new photos uploaded to Immich (others remain on device and invisible in app) #7151

Closed
opened 2026-02-20 05:00:04 -05:00 by deekerman · 1 comment
Owner

Originally created by @thebestbaduser on GitHub (Oct 24, 2025).

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

Describe the bug
When multiple photos are taken around the same time, only one of them uploads to Immich.
The other photos remain on the device but do not appear in the Immich mobile gallery — making it impossible to manually retry upload, since the app only displays media that already exists on the server.

Expected behavior
All new photos taken on the phone should upload to Immich, and if upload fails, they should still be visible in the app with an option to retry.

Steps to reproduce
Take several photos in a short time (e.g. 3 photos in a row)
Wait for Immich auto-upload to run
Only one photo appears in the Immich web interface and in the app
The other photos remain on the phone’s gallery, but are missing in Immich app (so can’t be uploaded manually)
Environment
Phone: vivo X200 Pro (Android 15)

Image
Image

Installation type: Docker
Upload type: Auto-upload
Photo format: Standard JPG
Database: PostgreSQL (default from Immich Docker setup)
Additional context
Photos exist on the device and are visible in the system gallery
All taken within seconds of each other
Only one was uploaded
Internet connection stable
Restart not yet tested
Expected improvement: show pending / failed uploads in app to allow manual retry

The OS that Immich Server is running on

Linux DebianServer 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64

Version of Immich Server

v2.1.0

Version of Immich Mobile App

v2.1.0

Platform with the issue

  • Server
  • Web
  • Mobile

Device make and model

Vivo X200 Pro

Your docker-compose.yml content

#
# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
#
# Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # extends:
    #   file: hwaccel.transcoding.yml
    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    volumes:
      # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - '2283:2283'
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false

  immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
    #   file: hwaccel.ml.yml
    #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always
    healthcheck:
      disable: false

  redis:
    container_name: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
#      DB_STORAGE_TYPE: 'HDD'
    volumes:
      # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always

volumes:
  model-cache:

Your .env content

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/***/immichlib
# The location where your database files are stored
DB_DATA_LOCATION=./postgres

# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=**

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=***
DB_DATABASE_NAME=***

Reproduction steps

Take several photos in a short time (e.g. 3 photos in a row)

Wait for Immich auto-upload to run

Only one photo appears in the Immich web interface and in the app

The other photos remain on the phone’s gallery, but are missing in Immich app (so can’t be uploaded manually)

Relevant log output


Additional information

I noticed this behavior by accident, I don't know when it started.

Originally created by @thebestbaduser on GitHub (Oct 24, 2025). ### I have searched the existing issues, both open and closed, to make sure this is not a duplicate report. - [ ] Yes ### The bug Describe the bug When multiple photos are taken around the same time, only one of them uploads to Immich. The other photos remain on the device but do not appear in the Immich mobile gallery — making it impossible to manually retry upload, since the app only displays media that already exists on the server. Expected behavior All new photos taken on the phone should upload to Immich, and if upload fails, they should still be visible in the app with an option to retry. Steps to reproduce Take several photos in a short time (e.g. 3 photos in a row) Wait for Immich auto-upload to run Only one photo appears in the Immich web interface and in the app The other photos remain on the phone’s gallery, but are missing in Immich app (so can’t be uploaded manually) Environment Phone: vivo X200 Pro (Android 15) ![Image](https://github.com/user-attachments/assets/a0d926c7-f1dd-4fc8-92e6-3677320b9a23) ![Image](https://github.com/user-attachments/assets/bc65cce4-207b-40f9-a42a-59c75fdc078c) Installation type: Docker Upload type: Auto-upload Photo format: Standard JPG Database: PostgreSQL (default from Immich Docker setup) Additional context Photos exist on the device and are visible in the system gallery All taken within seconds of each other Only one was uploaded Internet connection stable Restart not yet tested Expected improvement: show pending / failed uploads in app to allow manual retry ### The OS that Immich Server is running on Linux DebianServer 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64 ### Version of Immich Server v2.1.0 ### Version of Immich Mobile App v2.1.0 ### Platform with the issue - [ ] Server - [ ] Web - [ ] Mobile ### Device make and model Vivo X200 Pro ### Your docker-compose.yml content ```YAML # # WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose # # Make sure to use the docker-compose.yml of the current release: # # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml # # The compose file on main may not be compatible with the latest release. name: immich services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} # extends: # file: hwaccel.transcoding.yml # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding volumes: # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro env_file: - .env ports: - '2283:2283' depends_on: - redis - database restart: always healthcheck: disable: false immich-machine-learning: container_name: immich_machine_learning # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. # Example tag: ${IMMICH_VERSION:-release}-cuda image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration # file: hwaccel.ml.yml # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable volumes: - model-cache:/cache env_file: - .env restart: always healthcheck: disable: false redis: container_name: immich_redis image: docker.io/redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8 healthcheck: test: redis-cli ping || exit 1 restart: always database: container_name: immich_postgres image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' # DB_STORAGE_TYPE: 'HDD' volumes: # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file - ${DB_DATA_LOCATION}:/var/lib/postgresql/data restart: always volumes: model-cache: ``` ### Your .env content ```Shell # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables # The location where your uploaded files are stored UPLOAD_LOCATION=/mnt/***/immichlib # The location where your database files are stored DB_DATA_LOCATION=./postgres # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List # TZ=Etc/UTC # The Immich version to use. You can pin this to a specific version like "v1.71.0" IMMICH_VERSION=release # Connection secret for postgres. You should change it to a random password # Please use only the characters `A-Za-z0-9`, without special characters or spaces DB_PASSWORD=** # The values below this line do not need to be changed ################################################################################### DB_USERNAME=*** DB_DATABASE_NAME=*** ``` ### Reproduction steps Take several photos in a short time (e.g. 3 photos in a row) Wait for Immich auto-upload to run Only one photo appears in the Immich web interface and in the app The other photos remain on the phone’s gallery, but are missing in Immich app (so can’t be uploaded manually) ### Relevant log output ```shell ``` ### Additional information I noticed this behavior by accident, I don't know when it started.
Author
Owner

@github-actions[bot] commented on GitHub (Oct 24, 2025):

This issue has automatically been closed as it is likely a duplicate. We get a lot of duplicate threads each day, which is why we ask you in the template to confirm that you searched for duplicates before opening one. If you're sure this is not a duplicate, please leave a comment and we will reopen the thread if necessary.

@github-actions[bot] commented on GitHub (Oct 24, 2025): This issue has automatically been closed as it is likely a duplicate. We get a lot of duplicate threads each day, which is why we ask you in the template to confirm that you searched for duplicates before opening one. If you're sure this is not a duplicate, please leave a comment and we will reopen the thread if necessary.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/immich#7151
No description provided.