Documentation

Configuration

Environment variables, credential encryption, persistent data, and reverse proxy notes.

Cliparr only needs a few settings in production: a stable APP_KEY and a persistent data directory.

Variable Description Default
APP_KEY Required secret for credential encryption. Must be at least 32 characters long. Required -
PORT Internal port for the Express server. 3000
CLIPARR_DATA_DIR Directory for SQLite storage. /data
CLIPARR_ALLOW_LOOPBACK_JELLYFIN_URLS Allow Jellyfin URLs that resolve to localhost or loopback. Use only for trusted self-hosted setups. false

Reverse proxies

When running behind Caddy, Nginx, Traefik, or another reverse proxy, preserve the Host header and pass X-Forwarded-Proto. Cliparr trusts loopback, link-local, and private-LAN proxy ranges directly in the app, so typical same-network proxy setups do not need extra app configuration.

HTTPS and browser APIs

The editor uses browser WebCodecs. Supporting browsers require a secure context, which means HTTPS in production. Local development on localhost and 127.0.0.1 also counts as secure for this browser requirement.

Data directory

The default container data directory is /data. In production, mount that path to a volume so SQLite state and encrypted provider credentials survive updates.

Clip metadata

Cliparr passes metadata to Mediabunny during export when the selected source includes exportMetadata. Local files and direct URLs may not have source metadata, so these fields are best-effort.

Standard export tags

These tags are sent for every export format when the source field is available.

TagSourceValue written
titletitle, then sourceTitleFirst non-empty value.
descriptiondescription, then taglineFirst non-empty value.
genregenresGenres joined with , .
datedate, then yearParsed date. If only year exists, Cliparr writes YYYY-01-01. Invalid dates are skipped.
commentsourceTitle, title, showTitle, contentRating, clip rangeClip from {source}, {start} to {end}. Adds Content rating: {rating}. when available.
imagesimageUrlCover art as coverFront when the image fetch succeeds. MIME type comes from the response, URL extension, or falls back to JPEG.

MP4 and MOV tags

MP4 and MOV exports also receive the current raw container keys below. Cliparr patches integer MP4 boxes so hdvd, stik, tves, and tvsn are stored as numeric metadata.

Raw tagApplies toSourceValue written
ldesMP4, MOVdescription, then taglineLong description.
©dirMP4, MOVdirectorsDirectors joined with , .
hdvdMP4, MOVOutput height1 when output height is at least 720p, otherwise 0. Skipped when output height is unknown.
©TIMMP4, MOVClip start timeCliparr timing key containing the source start time as HH:MM:SS.mmm.
cstaMP4, MOVClip start timeSource start seconds with three decimals.
cendMP4, MOVClip end timeSource end seconds with three decimals.
cdurMP4, MOVClip durationClip duration seconds with three decimals.
clprMP4, MOVClip start, end, durationJSON with sourceStartSeconds, sourceEndSeconds, and sourceDurationSeconds.
stikMP4, MOV episodesitemType10 for episodes.
tvshMP4, MOV episodesshowTitleShow title.
tvsnMP4, MOV episodesseasonNumberNon-negative integer season number.
tvesMP4, MOV episodesepisodeNumberNon-negative integer episode number.
tvenMP4, MOV episodesseasonNumber, episodeNumberEpisode code as S##E## when both numbers exist.
tvnnMP4, MOV episodesnetwork, then studioNetwork name, falling back to studio.
stikMP4, MOV moviesitemType9 for movies.

Source metadata can include additional fields that are not embedded in exported media today, including providerId, seasonTitle, writers, actors, guids, and ratingKey. itemType only affects the MP4/MOV stik value, and studio is only embedded as the fallback for tvnn.

The timing keys ©TIM, csta, cend, cdur, and clpr should be treated as Cliparr-specific metadata. They are useful for preserving clip provenance, but may not be displayed by general media library tools.