Offline mode
Kiosk now supports Offline Mode, allowing assets to be downloaded for viewing without an active connection to Immich.
Why it's useful:
Offline Mode is ideal for setups where maintaining a live connection to Immich might be costly or inefficient.
For example, if your Immich storage is hosted on a NAS with disks that spin down to save power, using Offline
Mode prevents Kiosk from constantly triggering disk spin-ups.
Key Highlights:
- Offline viewing: View photos without needing a live connection to Immich.
- Configurable settings: Set limits on asset count, disk usage, and expiration.
- Persistent caching: Use Docker volume mounts to retain offline assets between container restarts.
- Offline Mode must be explicitly enabled in config.yaml.
Setup Notes:
- Use the use_offline_mode=true URL parameter to trigger offline behavior on devices.
- Only a limited set of URL parameters are supported in Offline Mode (e.g., show_progress, frameless, clock_source).
Limitations:
- Some features like Album Ordering, Experimental Video, and Like/Hide buttons are unavailable in Offline Mode.
Example Config:
offline_mode:
enabled: true
number_of_assets: 500
max_size: 50mb
expiration_hours: 24
Read the offline mode docs
Fully Kiosk Browser support
If you use the Fully Kiosk Browser to display Kiosk on a Android device and you have the pro version. You can set the new sleep_dim_screen
to true
to dim the screen when in sleep mode.
IMG_5977.mov
Read the sleep mode docs
Update to splitview layout
When using layout=splitview
, Kiosk will now automatically switch to layout=splitview-landscape
if the device or browser is in portrait orientation.
IMG_5974.mov
Demo
Kiosk now has a online demo
require_all_people
The "Require all people" feature allows you to filter images to only
show those where all specified people are present together in the same photo.
Read the require all people docs
Asset owner
Added show_owner
which displays the asset owner. Thanks to @koostamas for adding this.

Show Image QR
Added show_image_qr
which displays the QR code that links to the asset in Immich next to the metadata.
Added the /image/reload
endpoint
The /image/reload
endpoint wraps the /image
endpoint (which serves a raw image) in
a light html page that auto reloads itself using refresh
setting.
Why?
Someone on Reddit asked me to so they could use Kiosk on thier Kindle
Useful if you have an old device that Kiosk can not support.
iframe
Immich Kiosk now supports iframe integration, allowing you to embed custom content directly into your Kiosk display.
Why it's useful:
This feature is perfect for users who want to enhance their Kiosk with additional content—such as local weather dashboards, calendars, or custom informational pages. For example, you can embed a local HTML file showing your smart home stats or a remote webpage with real-time updates.
Read the iframe docs
mute/unmute button

When experimental_album_video
is set to true
, a mute/unmute button will appear in the menu.
Kiosk will remember your preference using local storage and try to apply it after a refresh.
However, due to browser restrictions, unmuting video requires user interaction. If your saved preference is to have video unmuted, Kiosk will wait for you to interact with the screen before applying that setting.
Thanks to @ngirardin for helping implimenting this feature.
update to http_timeout
Kiosk's frontend will now utilise the http_timeout
configuration.
If a Kiosk API endpoint timesouts 3 times in a row Kiosk will reload the browser.
What's Changed
🚀 New Features
- Feature/AgeSwitchToYearsAfter by @damongolding in #374
- Feature/frontend timeout reload by @damongolding in #375
- Feature/require_all_people by @damongolding in #376
- Feature/demo by @damongolding in #382
- Feature/Option to show asset owner by @koostamas in #385
- Feature/auto-reload add
/image/reload
endpoint by @damongolding in #395 - Feature/offline mode by @damongolding in #386
- Feature/show_image_qr by @damongolding in #400
- Feature/fullykiosk by @damongolding in #396
- Feature/iframe by @damongolding in #405
- Feature/image-orientation-class by @damongolding in #407
- Feature/mute button by @ngirardin in #380
⚡ Fixes
- Fix/video image by @damongolding in #387
- Fix/moreinfo-splitview-landscape by @damongolding in #403
📓 Documentation
- Rename pre_fetch config option to prefetch for consistency by @ngirardin in #378
🔨 Maintenance
- deps by @damongolding in #394
New Contributors
- @ngirardin made their first contribution in #378
- @koostamas made their first contribution in #385
Full Changelog: v0.20.2...v0.21.0