Skip to content

Settings

All Lychee settings are stored in the database alongside album and photo metadata. They are accessible to the administrator after logging in by opening the left menu (hamburger icon in the top-left corner), navigating to the Admin page, and clicking the Settings button.

The settings UI organises options into labelled sections. Throughout this reference, settings are annotated with the following tags:

TagMeaning
ExpertHidden by default. Enable the Expert mode toggle at the top of the Settings page to reveal these options.
SERequires an active Lychee Supporter Edition license.
ProRequires the Lychee Pro tier.

General site-wide options.

(boolean; default: 1)

Use dark mode for the Lychee UI.

(boolean; default: 1)

Show an admin dashboard instead of management links in the left menu.

(string; default: John Smith)

Name of the gallery owner, used in the copyright notice and landing page.

(string; default: Lychee v7)

Browser title for the gallery.

(string; default: en)

Language used by the Lychee interface.

(enum: gallery|flow|timeline; default: gallery)

Which page is shown after landing on the root URL.

(enum: header|cover; default: header)

Which album photo (header or cover) is used as the Open Graph image when sharing album links on social media.

(string; default: empty)

Fallback URL or photo ID for Open Graph images when no album-specific image is available. When empty, the landing page background is used.

(boolean; default: 1)

Enable the embed API endpoints and related UI features for embedding Lychee content in external websites. When disabled, all embed endpoints return 404.

(boolean; default: 0) Expert

Send notifications when new photos are uploaded.


Manage your Supporter Edition license.

(boolean; default: 0)

Hide Lychee SE call-for-action prompts throughout the UI. Note that when a valid SE license is active, these prompts are already hidden automatically — this setting is only useful if you want to suppress them without a license.

(boolean; default: 0)

Enable a visual preview of Lychee SE features without an active license.

(string; default: empty)

Your Lychee SE license key. Obtain one at lycheeorg.dev/get-supporter-edition.


Controls the visual layout and display behaviour of the gallery.

(enum: square|justified|masonry|grid; default: justified)

Photo layout inside albums:

  • square — All thumbnails are cropped to a uniform square and arranged in a regular grid. Clean and predictable, but crops out parts of each photo.
  • justified — Thumbnails preserve their original aspect ratio. Each row is scaled so that photos are flush with both the left and right edges, giving a neat newspaper-like look.
  • masonry — Thumbnails preserve their original aspect ratio and are arranged in fixed-width columns, each photo slotting below the shortest column. Rows are not aligned, producing a Pinterest-style layout.
  • grid — Similar to square but columns have a configurable minimum width (photo_layout_grid_column_width). Photos are not cropped; they fill the cell at their natural ratio.

(enum: 1/1|2/3|3/2|4/5|5/4|16/9; default: 1/1)

Default aspect ratio for album thumbnail covers.

(enum: created_at|title|description|max_taken_at|min_taken_at|title_strict|description_strict; default: max_taken_at)

Column used for the default album sort. See the note on title vs title_strict below.

(enum: ASC|DESC; default: ASC)

Direction of the default album sort.

(enum: created_at|taken_at|title|description|is_highlighted|type|title_strict|description_strict; default: taken_at)

Column used for the default photo sort. See the note on title vs title_strict below.

(enum: ASC|DESC; default: ASC)

Direction of the default photo sort.

(enum: none|layers|album|photo|all; default: layers)

Decorations displayed on album covers (sub-album count, photo count, or both).

(enum: column|column-reverse|row|row-reverse; default: row)

Alignment of album decorations: horizontal or vertical.

(enum: disabled|description|takedate|creation|oldstyle|num_photos|num_albums|num_photos_albums; default: oldstyle)

What is shown as the subtitle beneath each album in the albums view.

(enum: exif|desc|date|none; default: desc)

Default content shown in the image overlay at the bottom of the photo view.

(enum: always|hover|never; default: always)

When to display the title and metadata on album thumbnails.

(enum: always|hover|never; default: hover)

When to display the title and metadata on photo thumbnails.

(enum: older_younger|younger_older; default: younger_older)

Which date (older or newer) is displayed first on album thumbnails.

(enum: older_younger|younger_older; default: older_younger)

Which date (older or newer) is displayed first in the album header.

(boolean; default: 0)

Disable the large header image inside album views.

(boolean; default: 1)

Set the autoplay attribute on video elements.

(boolean; default: 1)

Loop back to the first photo after reaching the last one in an album (and vice versa).

(positive integer; default: 5)

Seconds between photos in slideshow mode.

(license; default: none)

Default Creative Commons license applied to newly uploaded photos.

(enum: private|public|inherit|public_hidden; default: private)

Default visibility for newly created albums. private = owner only; public = publicly visible; inherit = inherit from parent; public_hidden = public but not listed.

(boolean; default: 0)

Show a module in the photo details panel for easily copying photo URLs.

(boolean; default: 0)

Allow anonymous users to use the photo URL copy module.

(enum: 1|2|3; default: 3) SE

Number of album columns on mobile viewports.

(enum: grid|list; default: grid)

Default album view: grid (thumbnail cards) or list (detailed rows). Users can toggle this client-side, but the preference does not persist across reloads.

(positive integer; default: 30)

Number of child albums per page in paginated album views.

(enum: infinite_scroll|load_more_button|page_navigation; default: infinite_scroll)

How album pagination is presented: auto-load on scroll, a manual “Load More” button, or page number navigation.

(positive integer; default: 100)

Number of photos per page in paginated album views.

(enum: infinite_scroll|load_more_button|page_navigation; default: infinite_scroll)

How photo pagination is presented: auto-load on scroll, a manual “Load More” button, or page number navigation.

(enum: show|separate|separate_shared_only|hide; default: show) Expert

How albums shared by other users appear in the gallery: inline with owned albums, in separate tabs, in tabs (direct shares only), or hidden.

(boolean; default: 1) Expert

Display EXIF data in the photo details panel. When disabled, EXIF data is not shown anywhere in the UI.

(boolean; default: 0) Expert

Keep the photo details drawer open by default when entering the photo view.

(positive integer; default: 12) Expert

Gap between columns (in pixels) in Square, Masonry, and Grid photo layouts.

(positive integer; default: 250) Expert

Minimum column width (in pixels) in the Grid photo layout.

(positive integer; default: 320) Expert

Row height (in pixels) in the Justified photo layout.

(positive integer; default: 300) Expert

Minimum column width (in pixels) in the Masonry photo layout.

(positive integer; default: 200) Expert

Minimum column width (in pixels) in the Square photo layout.

(enum: title|description; default: title) Expert

Information shown on photo thumbnails. When description is selected, the date is also hidden.

(boolean; default: 0) Expert SE

Show tags on photo thumbnails in the album view. Has no effect when photo_thumb_info is set to description.

(enum: small|large; default: small) Expert

Size of the previous/next navigation buttons in the photo view. These buttons are hidden by default and appear only when the cursor approaches the left or right edge of the screen.

(boolean; default: 1) Expert

Enable the slideshow functionality.

(boolean; default: 0)

Disable the swipe animation in the photo viewer.

(boolean; default: 0) Expert

Make the top action bar fully transparent on desktop (visible only on hover).

(boolean; default: 0) Expert

Make the top action bar fully transparent on mobile (visible only on tap). Note: this affects usability on mobile.

(positive integer; default: 10) Expert

Number of viewport heights from the bottom of the page at which to trigger loading the next page of albums when using infinite scroll.

(positive integer; default: 10) Expert

Number of viewport heights from the bottom of the page at which to trigger loading the next page of photos when using infinite scroll.

(positive integer; default: 10) Expert SE

Shots-per-day threshold considered “low” for punch-card statistics colouring.

(positive integer; default: 50) Expert SE

Shots-per-day threshold considered “medium” for punch-card statistics colouring.

(positive integer; default: 100) Expert SE

Shots-per-day threshold considered “high” for punch-card statistics colouring.

The following settings accept PHP date format strings:

KeyDefaultUsed for
date_format_album_thumbM YDate shown on album thumbnails
date_format_hero_created_atM j, Y, g:i:s A TAlbum creation date in album details
date_format_hero_min_maxF YDate range in the album hero area
date_format_photo_overlayM j, Y, g:i:s A eDate in the photo overlay
date_format_photo_thumbM j, Y, g:i:s A eDate on photo thumbnails
date_format_sidebar_taken_atM j, Y, g:i:s A eCapture date in the photo sidebar
date_format_sidebar_uploadedM j, Y, g:i:s A eUpload date in the photo sidebar

Controls the optional landing/welcome page shown before entering the gallery.

(boolean; default: 0)

Enable the landing page. When enabled, visitors see a full-screen welcome page before entering the gallery.

(string; default: John Smith)

Title displayed on the landing page.

(string; default: Cats, Dogs & Humans Photography)

Subtitle displayed on the landing page.

(string; default: dist/cat.webp)

URL of the background image shown in landscape orientation. Also used as the Open Graph image when sharing the gallery root.

(enum: static|photo_id|random|latest_album_cover|random_from_album; default: static)

How the landscape background is sourced: a static URL, a specific photo ID, a random public photo, the latest album cover, or a random photo from a specific album.

(string; default: dist/cat.webp)

URL of the background image shown in portrait orientation.

(enum: static|photo_id|random|latest_album_cover|random_from_album; default: static)

How the portrait background is sourced (same options as landscape mode).

(boolean; default: 0)

Show a header image on the main gallery view.

(boolean; default: 0)

Show the gallery header image also when a user is logged in.

(string; default: empty)

URL of the header image for the gallery view.

(boolean; default: 1) Expert

Make the gallery header bar transparent so the header image shows through it.

(boolean; default: 1) Expert

Add a gradient behind the header bar text to improve readability.

(string; default: empty)

URL of a logo image for the gallery header bar. When set, replaces the site title text.

(string; default: empty)

URL of a logo image for the landing page intro. When set, replaces the landing title and subtitle text.

(string; default: empty)

URL of a logo image for the top-left corner of the landing page. When set, replaces the landing title and subtitle in that position.


Controls the content of the page footer.

(boolean; default: 1)

Display a copyright message in the footer.

(positive integer; default: 2019)

Starting year of the copyright range.

(positive integer; default: 2019)

Ending year of the copyright range.

(string; default: empty)

Custom copyright text. When set, replaces the default ”© [year range] [owner]” notice.

(string; default: empty) Expert

Additional HTML text appended below the copyright notice. This field is not sanitized — use with care.

(boolean; default: 0)

Show social media icon links in the footer.

KeyDocumentation
sm_facebook_urlFacebook profile URL
sm_flickr_urlFlickr profile URL
sm_instagram_urlInstagram profile URL
sm_twitter_urlX (formerly Twitter) profile URL
sm_youtube_urlYouTube profile URL

Set any URL to an empty string to hide the corresponding icon.


Configure smart albums and featured (pinned) albums.

(boolean; default: 1)

Enable the Unsorted smart album. Disabling this makes photos without an album invisible.

(boolean; default: 1)

Enable the Starred smart album.

(boolean; default: 1)

Enable the Recent uploads smart album.

(boolean; default: 1)

Enable the On This Day smart album.

(boolean; default: 1)

Enable the Untagged smart album (photos with no tags).

(positive integer; default: 1)

Maximum age (in days) of photos shown in the Recent smart album.

(boolean; default: 0)

When enabled, smart albums show only photos owned by the logged-in user.

(boolean; default: 0) Expert

Smart album visibility overrides individual photo visibility, making matching photos publicly accessible regardless of their album settings.

(boolean; default: 0) Expert

Tag album visibility overrides individual photo visibility.

(boolean; default: 0) Expert

Person album visibility overrides individual photo visibility.

(boolean; default: 0) Expert

Use random thumbnails for smart albums instead of starred/sorting order.

(enum: created_at|title|description|max_taken_at|min_taken_at|title_strict|description_strict; default: created_at)

Column used for sorting featured (pinned) albums.

(enum: ASC|DESC; default: DESC)

Sort direction for featured albums.

(boolean; default: 0)

Show featured albums only once on the main gallery page (deduplicated).

(positive integer; default: 500)

Maximum number of photos per page in smart albums.

KeyDefaultDescription
enable_unrated0Smart album for photos with no rating
enable_1_star0Smart album for photos rated 1.0–1.9 stars
enable_2_stars0Smart album for photos rated 2.0–2.9 stars
enable_3_stars0Smart album for photos rated 3.0+ stars
enable_4_stars1Smart album for photos rated 4.0+ stars
enable_5_stars1Smart album for photos with a perfect 5.0 rating

(boolean; default: 1) SE

Enable the Best Pictures smart album (top-rated photos).

(positive integer; default: 100) SE

Number of top-rated photos in the Best Pictures album. Photos tied at the cut-off are all included.

(boolean; default: 1)

Enable the My Rated Pictures smart album (all photos rated by the current user).

(boolean; default: 1) SE

Enable the My Best Pictures smart album (top-rated photos by the current user).

(positive integer; default: 50) SE

Number of top-rated photos in the My Best Pictures album.


Controls how photos are processed during upload or import.

(boolean; default: 1)

Generate HiDPI (2×) square thumbnails.

(integer; default: 360)

Maximum height (px) of small thumbnails used in the album view.

(integer; default: 0)

Maximum width (px) of small thumbnails. 0 means unconstrained (height only).

(boolean; default: 1)

Generate HiDPI (2×) small thumbnails.

(integer; default: 1080)

Maximum height (px) of medium images used in the photo view.

(integer; default: 1920)

Maximum width (px) of medium images.

(boolean; default: 1)

Generate HiDPI (2×) medium images.

(boolean; default: 1)

Generate low-quality image placeholders (LQIP) for progressive loading.

(boolean; default: 1)

Keep the original file unchanged. When auto-rotation is applied, the original is preserved separately.

(boolean; default: 1)

Automatically rotate images based on EXIF orientation data. Note: enabling this overwrites and recompresses original files (unless keep_original_untouched is also enabled).

(positive integer; default: 90)

JPEG compression quality (1–100) used when generating thumbnails and intermediate images.

(boolean; default: 1)

Allow manual rotation of images via the UI editor.

(boolean; default: 0) SE

Extract the 5 most dominant colours from each uploaded image (used for colour-based search).

(enum: league|farzai; default: farzai) Expert SE

Algorithm used for colour extraction. league uses full sampling with CIEDE2000 colour distance (more accurate, slower). farzai uses spot sampling and k-means distance (faster).

(integer; default: 0) Expert

Size of upload chunks in bytes. 0 = auto-detect.

(integer; default: 4) Expert

Maximum number of images processed in parallel during upload.

(boolean; default: 0)

Allow users with download permissions to download the original RAW/HEIC/PSD file preserved during upload.

(boolean; default: 0)

Split large album downloads into multiple smaller ZIP files.

(positive integer; default: 300)

Maximum number of photos per ZIP chunk when chunked downloads are enabled.

(boolean; default: 1) Expert

Drop file extensions from titles inside ZIP archives, preventing double extensions like image.jpg.jpg.

(boolean; default: 0)

Delete original files from the server after Import from Server.

(boolean; default: 0)

Create symbolic links instead of copying files during Import from Server.

(boolean; default: 0)

Skip photos that already exist in the gallery during import (duplicate detection by checksum).

(boolean; default: 1)

Skip duplicates early during sync imports by checking photo titles in the target album (faster than checksum-based detection).

(boolean; default: 0) Expert

Delete photos from Lychee that are no longer present in the synced directory. Only active when sync_dry_run is disabled.

(boolean; default: 0) Expert

Delete albums from Lychee that are no longer present in the synced directory. Only active when sync_dry_run is disabled.

(boolean; default: 1) Expert

Run the destructive parts of the sync command in dry-run mode. Disable with care — this allows the sync command to delete albums and photos from your instance.

(boolean; default: 1) SE

Automatically extract ZIP files on upload and import their contents. The ZIP is deleted after successful extraction.

(boolean; default: 0)

Auto-close the upload panel when all uploads complete without errors. The panel stays open if any upload fails.

(boolean; default: 1)

Enable folder drag-and-drop: dragging a folder onto the Albums page creates an album from the folder and uploads its contents. Sub-folders become sub-albums recursively.

(integer; default: 5) Expert

Maximum sub-folder recursion depth for folder uploads. 0 = unlimited; 1 = top-level folder only.

(string; default: empty) Expert

Path to the exiftool binary. Leave empty to use the system default.

(string; default: /usr/bin/ffmpeg) Expert

Path to the ffmpeg binary.

(string; default: /usr/bin/ffprobe) Expert

Path to the ffprobe binary.

(enum: 0|1|2; default: 1) Expert

Whether exiftool processing is available (0 = no, 1 = yes, 2 = available but disabled).

(enum: 0|1|2; default: 1) Expert

Whether ffmpeg processing is available.

(boolean; default: 1) Expert

Use ImageMagick for image processing when available. Falls back to GD if disabled or unavailable.

(string; default: .avi|.mov)

Pipe-separated list of video formats for which the local file modification time is used as the taken-at timestamp (instead of metadata).

(boolean; default: 0) Expert

Apply additional lossless compression to images after thumbnail generation.

(boolean; default: 0) Expert

Use XMP sidecar files for metadata instead of embedded EXIF when both are present.

(string; default: .tex)

Pipe-separated list of additional file extensions treated as raw/passthrough files (uploaded but not processed).

(boolean; default: 0) Expert

Use the file’s last-modified time as the taken-at date when EXIF data contains no creation date.


Controls public access and download rights.

(boolean; default: 0)

Require users to log in to access any part of the gallery.

(boolean; default: 1)

Require login only at the root gallery page. Users with a direct link to an album can still access it without logging in.

(boolean; default: 0)

Allow downloading by default (applies to cases not covered by per-album settings, such as photos in private albums shared with individual users).

(boolean; default: 1)

Allow access to full-resolution photos by default (applies to the same cases as grants_download).

(boolean; default: 0)

Show a social-sharing button in the gallery header.

(boolean; default: 0) Expert

Allow the album password to be passed as a URL query parameter to auto-unlock password-protected albums.

(boolean; default: 1) Expert

Prevent downloading of square (200×200) thumbnails.

(boolean; default: 1) Expert

Prevent downloading of HiDPI (400×400) square thumbnails.

(boolean; default: 0) Expert SE

Prevent downloading of small thumbnails.

(boolean; default: 0) Expert SE

Prevent downloading of HiDPI small thumbnails.

(boolean; default: 0) Expert SE

Prevent downloading of medium images.

(boolean; default: 0) Expert SE

Prevent downloading of HiDPI medium images.


(boolean; default: 0)

Allow anonymous users to use the search bar.

(positive integer; default: 4)

Minimum number of characters required before a search query is triggered.

(positive integer; default: 300)

Maximum number of results shown per search page.

(enum: square|justified|masonry|grid; default: square)

Photo layout used on the search results page.

(integer; default: 30) Expert

Maximum Manhattan RGB distance for palette colour matching: |R−R₀| + |G−G₀| + |B−B₀| ≤ this value.


Controls the timeline view that shows photos and albums grouped by date.

(boolean; default: 1)

Enable the Timeline page.

(enum: square|justified|masonry|grid; default: square)

Photo layout on the Timeline page.

(enum: taken_at|created_at; default: taken_at)

Whether photos on the Timeline are ordered by capture date or upload date.

(positive integer; default: 200)

Number of photos per page on the Timeline.

(boolean; default: 1) SE

Show the vertical left-border line on timelines.

(boolean; default: 1)

Globally enable album timelines within each album. Can also be toggled per album.

(boolean; default: 0)

Show the album timeline to anonymous users.

(enum: year|month|day; default: year) SE

Grouping granularity for the album timeline.

(boolean; default: 1)

Enable the timeline view for albums at the root level.

(boolean; default: 1)

Globally enable photo timelines within each album. Can also be toggled per album.

(boolean; default: 0)

Allow anonymous users to access the photo timeline.

(enum: year|month|day|hour; default: day) SE

Grouping granularity for the photo timeline.

Accepts PHP date format strings:

KeyDefaultUsed for
timeline_album_date_format_yearYYear-level album grouping header
timeline_album_date_format_monthM YMonth-level album grouping header
timeline_album_date_format_dayj MDay-level album grouping header
timeline_photo_date_format_yearYYear-level photo grouping header
timeline_photo_date_format_monthM YMonth-level photo grouping header
timeline_photo_date_format_dayj M YDay-level photo grouping header
timeline_photo_date_format_hourg:iHour-level photo grouping header
timeline_quick_access_date_format_yearYYear quick-access label on the Timeline page
timeline_quick_access_date_format_monthMMonth quick-access label
timeline_quick_access_date_format_dayj MDay quick-access label
timeline_quick_access_date_format_hourh M, g:iHour quick-access label

Configure the photo-frame / slideshow mode accessible via /frame.

(boolean; default: 1)

Enable the Frame mode. The button is only visible when the access condition is satisfied.

(string; default: highlighted)

Album ID used as the source for the Frame. Leave empty to use all searchable photos.

(integer; default: 30)

Seconds between photo changes in Frame mode.


Controls map and GPS coordinate features.

(boolean; default: 0)

Enable map views when photos have GPS coordinates.

(boolean; default: 0)

Allow anonymous users to access map views.

(boolean; default: 1)

Show the camera direction indicator on the map when GPS direction data is available.

(boolean; default: 0)

Include photos from sub-albums on the map view.

(map_provider; default: OpenStreetMap.org)

Map tile provider. All providers use OpenStreetMap data. Options include Wikimedia, OpenStreetMap.org, OpenStreetMap.de, OpenStreetMap.fr, and RRZE.

(boolean; default: 0)

Decode GPS coordinates into human-readable location names using a reverse-geocoding service.

(integer; default: 30) Expert

Timeout in seconds for reverse-geocoding queries.

(boolean; default: 1)

Show the decoded location name in the photo details sidebar (only affects the decoded location, not raw coordinates).

(boolean; default: 0)

Show decoded location names to anonymous users.

(boolean; default: 1)

Display raw latitude/longitude coordinates in the photo details. Disabling this hides GPS coordinates from all users.

(boolean; default: 0)

Show GPS coordinates to anonymous users.


(boolean; default: 0)

Enable the RSS feed at /rss.

(positive integer; default: 100)

Maximum number of items in the RSS feed.

(positive integer; default: 7)

Include photos uploaded within the last X days in the RSS feed.


Controls how albums marked as sensitive (NSFW) are handled.

(boolean; default: 1)

Show sensitive albums by default (no blurring or hiding).

(boolean; default: 0)

Display a warning the first time a sensitive album is opened.

(boolean; default: 0)

Blur the cover thumbnail of sensitive albums.

(boolean; default: 0)

Use a blurred backdrop for the sensitive-album warning instead of a solid dark-red overlay.

(string; default: empty) Expert

Custom HTML warning text for sensitive albums. This field is not sanitized — use with care.

(boolean; default: 0)

Show the sensitive-album warning to logged-in users as well.

(boolean; default: 1)

Blur sensitive album photos in the Flow view. Users can un-blur by clicking on the album.

The following settings hide sensitive album content from specific features (all default to 1):

KeyDescription
hide_nsfw_in_flowHide sensitive albums from the Flow view
hide_nsfw_in_frameHide sensitive photos from Frame mode
hide_nsfw_in_mapHide sensitive photos from Map views
hide_nsfw_in_person_albumsHide sensitive photos from Person Albums
hide_nsfw_in_rssHide sensitive photos from the RSS feed
hide_nsfw_in_searchHide sensitive photos from Search results
hide_nsfw_in_smart_albumsHide sensitive photos from Smart Albums
hide_nsfw_in_tag_albumsHide sensitive photos from Tag Albums
hide_nsfw_in_tag_listingHide sensitive photos from tag photo listings
hide_nsfw_in_timelineHide sensitive photos from the Timeline

Add a configurable “back” button in the gallery header, useful for embedding Lychee in a larger site.

(boolean; default: 0)

Enable the back/home button in the gallery.

(string; default: Return to Home)

Label text for the back button.

(string; default: /)

URL the back button links to.


Advanced engagement features requiring Lychee SE.

(boolean; default: 0) SE

Allow visitors to mark photos as their favourites. Favourites are stored in the browser’s local storage.

(boolean; default: 0) SE

Enable view/share/download statistics on photos and albums. When enabled, anonymous users are counted.

(boolean; default: 0) SE

Count logged-in users in statistics (admin users are excluded).

(enum: admin|owner|logged-in users|public; default: admin) Expert SE

Who can see album/photo statistics.

(boolean; default: 0) SE

Enable live metrics providing an activity history of your gallery.

(enum: admin|logged-in users; default: admin) SE

Who can view live metrics.

(positive integer; default: 30) SE

Maximum retention period for live metrics data, in days.


Settings to restrict image URL access and protect photo metadata.

(boolean; default: 0)

Serve all images via signed (temporary) URLs to prevent hotlinking and unauthorized direct access.

(boolean; default: 0)

Use temporary image links for logged-in users as well.

(boolean; default: 0)

Use temporary image links for admin users as well.

(positive integer; default: 86400) Expert

Lifetime of temporary image links in seconds (default 24 hours). If you use request caching, set this higher than your cache expiration time.

(boolean; default: 0) Expert SE

Encrypt image links so that the file paths cannot be guessed.

(boolean; default: 0) SE

Disable the details and overlay panels in the front end. Note: this does not remove the data from API responses.

(boolean; default: 0) SE

Hide photo titles from anonymous users. Logged-in users can still see titles.


The Flow module displays albums as a social-media-style feed. Only albums containing photos are shown; albums with only child albums are excluded.

(boolean; default: 1)

Enable the Flow view.

(boolean; default: 0)

Allow anonymous users to access the Flow.

(enum: auto|opt-in; default: auto) SE

How albums are included in the Flow: auto includes all albums; opt-in includes only albums with Flow explicitly enabled.

(string; default: empty) Expert

Album ID used as the root for the Flow. Leave empty to use the gallery root.

(boolean; default: 0) SE

Include all descendants of the base album, not just direct children.

(boolean; default: 0) Expert SE

When an album has no photos but has children, display photos from those children. Not recommended — can cause memory exhaustion and slowdowns.

(positive integer; default: 10) Expert

Number of albums loaded per Flow page. Lower = more requests; higher = more memory usage.

(boolean; default: 0) SE

Navigate to the album when clicking a Flow card (instead of opening the photo viewer directly).

(boolean; default: 0) SE

Show an “Open Album” button on each Flow card.

(boolean; default: 1) SE

Show an image header at the top of each Flow card featuring the album cover.

(enum: cover|fit; default: cover) SE

How the header image fills the card header: cover crops to fill; fit scales to fit.

(positive integer; default: 24) Expert SE

Height of the image header in rem.

(boolean; default: 1) SE

Show a photo carousel below the image header on each Flow card.

(positive integer; default: 6) Expert SE

Height of the photo carousel in rem.

(boolean; default: 1) Expert SE

Use the first photo in the album as the main image instead of the album cover.

(boolean; default: 1) SE

Display the min/max date range of the album’s photos on Flow cards.

(enum: older_younger|younger_older; default: older_younger) Expert

Which date (older or newer) appears first in the Flow min/max date display.

(boolean; default: 1) SE

Show view, share, and download counts on Flow cards.

(boolean; default: 1) SE

Clamp the description to 3 lines and hide extra information (photo count, child count). A “Show more” button expands the card.

Accepts PHP date format strings:

KeyDefaultUsed for
date_format_flow_publishedM j, Y, g:i:s A eAlbum published date shown on Flow cards
date_format_flow_min_maxF YMin/max date range on Flow cards

Automatically apply a watermark image to uploaded photos. Warning: enabling watermarking approximately doubles file-storage usage on your server.

The watermark image is specified by its photo ID (the 24-character identifier visible in the photo’s URL). A PNG with transparent background is recommended.

(boolean; default: 0) SE

Enable watermarking of uploaded photos.

(string; default: empty) SE

Photo ID (24-character sequence) of the image to use as the watermark.

(boolean; default: 1) SE

Show watermarked versions to anonymous users.

(boolean; default: 0) Expert SE

Show watermarked versions to logged-in users.

(boolean; default: 0) Expert SE

Also apply the watermark to the original photo (not just intermediate sizes).

(positive integer; default: 50) SE

Watermark size as a percentage of the image area (1–100%).

(positive integer; default: 75) SE

Watermark opacity (1–100%). Values below 25 are nearly invisible.

(enum: top-left|top|top-right|left|center|right|bottom-left|bottom|bottom-right; default: center) SE

Position of the watermark on the image.

(enum: relative|absolute; default: relative) Expert SE

Whether the position shift is relative to image size or in absolute pixels.

watermark_shift_x / watermark_shift_x_direction

Section titled “watermark_shift_x / watermark_shift_x_direction”

(integer / enum: left|right; defaults: 0 / right) Expert SE

Horizontal offset and direction of the watermark from its anchor position.

watermark_shift_y / watermark_shift_y_direction

Section titled “watermark_shift_y / watermark_shift_y_direction”

(integer / enum: up|down; defaults: 0 / up) Expert SE

Vertical offset and direction of the watermark from its anchor position.

(boolean; default: 1) Expert SE

Store watermarked images at a random path (harder to guess). When disabled, a suffix is appended to the original path.

(boolean; default: 0) SE

Prevent users from opting out of watermarking during upload. All photos will be watermarked according to global settings.


Automatically rename photos and albums on upload or sync import based on configurable rules.

Note: renaming is likely to interfere with fast duplicate detection for items renamed via sync.

(boolean; default: 0) SE

Enable the renamer module.

(boolean; default: 0) SE

Apply the instance-owner’s renaming rules regardless of individual user settings.

(boolean; default: 0) SE

Apply owner rules before user rules.

(boolean; default: 0) SE

Apply owner rules after user rules.

(boolean; default: 1) SE

Apply renamer rules to photo titles on upload/import.

(boolean; default: 1) SE

Apply renamer rules to album titles on creation.


Enable users to rate photos on a 1–5 star scale.

(boolean; default: 1)

Master switch for the photo rating feature.

(boolean; default: 0) SE

Allow all users (including anonymous visitors) to see photo ratings.

(boolean; default: 0) SE

Only display ratings after the current user has submitted their own rating.

(boolean; default: 1)

Show the average rating (and rating count) in the photo details sidebar instead of the user’s personal rating.

(enum: always|hover|never; default: hover) SE

When to show the rating overlay in the full photo view.

(boolean; default: 0) SE

Show the average rating in the full photo view instead of the user’s personal rating.

(enum: always|hover|never; default: hover) SE

When to show the rating on photo thumbnails in the album view.

(boolean; default: 1)

Show the average rating on photo thumbnails instead of the user’s personal rating.


Manage a contact form that visitors can use to send messages.

(boolean; default: 0) SE

Enable the contact form on the website.

(string; default: empty) SE

Optional security question shown on the contact form. Leave empty to skip.

(string; default: empty) SE

Expected answer to the security question (case-insensitive). Ignored when the question is empty.

(boolean; default: 0) SE

Require users to check a consent checkbox before submitting the contact form (e.g. for GDPR compliance).


Integrates with an external AI service for facial recognition, person management, and automatic face scanning.

(boolean; default: 0)

Master switch for the AI Vision subsystem. When disabled, all AI Vision endpoints and UI elements are inactive.

(boolean; default: 0)

Enable facial recognition. Requires ai_vision_enabled = 1. When disabled, face detection endpoints, People pages, and auto-scan on upload are inactive.

(enum: public|private|privacy-preserving|restricted; default: restricted)

Controls who can view person records, face overlays, and manage faces.

(boolean; default: 1)

Show face bounding-box overlays on photos. When disabled, no face overlays are shown anywhere in the UI.

(enum: visible|hidden; default: visible) Expert

Whether face overlays are visible or hidden by default when a photo is opened. Users can toggle with the P key.

(boolean; default: 1)

Display a legal warning about facial recognition on the Face Clusters and Face Maintenance pages.

ai_vision_face_selfie_confidence_threshold

Section titled “ai_vision_face_selfie_confidence_threshold”

(string/float; default: 0.8) Expert

Minimum confidence score (0.0–1.0) required to automatically link a person via selfie upload.

ai_vision_face_person_is_searchable_default

Section titled “ai_vision_face_person_is_searchable_default”

(boolean; default: 1) Expert

Default searchability flag when a new Person record is created.

(boolean; default: 1) Expert

Allow regular users to claim a Person record to link it to their account. Admins can always claim/unclaim.

(boolean; default: 0) SE

Enable automatic NSFW classification of uploaded photos via the external AI service.

(enum: default|strict|moderation|nude_female|permissive|social_media; default: default) SE

Detection preset controlling NSFW classifier sensitivity and which labels trigger each action.

These settings control what happens when a block-level NSFW finding is detected, per user trust level:

KeyOptionsDefaultApplied to
ai_vision_nsfw_check_block_actionblock|moderateblockCheck-level users
ai_vision_nsfw_monitor_block_actionblock|moderatemoderateMonitor-level users
ai_vision_nsfw_trust_but_verify_block_actionblock|moderatemoderateTrust-but-verify users
ai_vision_nsfw_trust_block_actionblock|moderate|approveapproveTrusted users

block permanently deletes the photo; moderate holds it for admin review; approve logs the finding but takes no action.

(enum: mark_album|nothing; default: mark_album) SE

Whether a sensitive-tier NSFW finding causes the photo’s album(s) to be marked as sensitive.

(enum: skip|moderate; default: skip) SE

Fallback when a sensitive finding fires on an unsorted photo with no album. skip logs a warning; moderate holds the photo for review.

(boolean; default: 0) SE

Also scan photos uploaded by Trusted users for NSFW content.

Temporarily hide photos while the NSFW scan is in progress. If the classifier is unavailable, the photo remains hidden until manually approved.

KeyDefaultApplied to
ai_vision_nsfw_monitor_hide_on_scan0Monitor-level user uploads
ai_vision_nsfw_trust_but_verify_hide_on_scan0Trust-but-verify user uploads
ai_vision_nsfw_trust_hide_on_scan0Trusted user uploads

Configure touch and scroll gesture behaviour for photo navigation.

(boolean; default: 1)

Navigate between photos by scrolling with the mouse wheel in the photo view.

(boolean; default: 1)

Swipe vertically on a photo to return to the album view.


(boolean; default: 1)

Allow users to change their own username.

(boolean; default: 0)

Allow new users to self-register. When disabled, only admins can create accounts.

(integer; default: 0) SE

Default storage quota for new users in KB. Set to 0 to disable quota enforcement.

(positive integer; default: 7) Expert

Maximum lifetime of invitation links in days. Note: invitation links cannot be revoked once issued.

(enum: check|monitor|trust_but_verify|trusted; default: trusted)

Default upload trust level assigned to newly created users. check = uploads require admin approval; trusted = uploads are immediately public.

(enum: check|monitor|trust_but_verify|trusted; default: check) SE

Upload trust level for anonymous (guest) uploads.

(boolean; default: 0)

Allow newly created users to edit their own profile.

(boolean; default: 0)

Allow newly created users to upload content.

(boolean; default: 0)

Automatically create a user account on first OAuth login if no matching account exists.


Low-level administrative and maintenance settings.

(integer; default: 070604) Expert

Internal Lychee database schema version. Do not change this.

(string; default: disabled)

Dropbox API key for the Import from Dropbox feature. Set to disabled to mark the feature as unavailable.

(boolean; default: 0)

Periodically check GitHub for new Lychee releases and display a notification when one is available.

(positive integer; default: 3)

How often (in days) to check for updates.

(boolean; default: 1) Expert

Allow updates to be triggered via the web interface using git pull.

(boolean; default: 0) Expert

Run composer update automatically when updating Lychee via the web interface.

(boolean; default: 0) Expert

Hide the Lychee version number in the login dialog and About screen.

(boolean; default: 1)

Show the keyboard shortcut help button in the gallery header.

(boolean; default: 1)

Display the keyboard shortcut help popup automatically on login.

(admin_user; default: 1) Expert

User ID of the installation owner. Changing this allows another admin to take over the server.

(boolean; default: 1) Expert

Use the Zip64 archive format for downloads (supports files >4 GB and >64k entries). Disable only if your users’ unzip tools don’t support Zip64.

(enum: -1|0|1|2|3|4|5|6|7|8|9; default: 6) Expert

ZIP compression level. -1 = no compression (STORE method); 0 = DEFLATE with no compression; 19 = increasing compression (slower but smaller).

These settings guard against Server-Side Request Forgery (SSRF) when using the Import via URL feature. All default to enabled (1) and should only be disabled for specific, trusted environments:

KeyDefaultDescription
import_via_url_forbidden_localhost1Block requests to localhost
import_via_url_forbidden_local_ip1Block requests to private/internal IP ranges
import_via_url_require_https1Require HTTPS for import URLs
import_via_url_forbidden_ports1Restrict to ports 80 and 443 only
import_via_url_block_redirect1Do not follow HTTP redirects

(boolean; default: 0) Expert

When unlocking a password-protected album, also unlock all other albums that share the same password. Note: this can expose content unintentionally if multiple users share a password.

(boolean; default: 0)

Show all settings on a single page by default (instead of grouped sections).

(boolean; default: 0)

Enable expert mode in settings by default.

(boolean; default: 0)

Use the legacy text-input settings view by default.

(boolean; default: 1)

Disable the recursive permission check on the Diagnostics page to avoid slowdowns on large libraries.

(positive integer; default: 1000) Expert

Maximum number of log lines displayed on the Logs page.

(positive integer; default: 5000)

Maximum number of operations processed in a single maintenance run. Lower values reduce the risk of timeouts on large libraries.