Migrate from 2.x - 3.x
You will need to delete your existing database. The app will warn you. If you are using a Docker volume, destroy the volume and create a new empty volume to attach.
Highlights
- Export audio-only clips as MP3, M4A/AAC, Ogg/Opus, FLAC, or WAV. Your chosen video and audio formats are remembered, and exports support cancellation and retry. Processing stays in your browser.
- Use Cliparr Convert’s audio templates to convert audio files or extract a video’s soundtrack with one click to select the output format.
- Read clearer export summaries with labeled audio properties, easier-to-scan subtitle details, and shorter connection and export messages.
- Create, edit, and delete your own subtitles on local videos or provider media, even without a source subtitle track. Start blank or import dialogue, preview text as you type, and undo or redo subtitle changes. Authored text appears in previews, frame grabs, and video exports.
- See Plex and Jellyfin playback sessions update automatically when playback starts, pauses, or stops. Disconnected servers keep their last known sessions visible with a connection status, reconnect automatically, and offer Retry connection.
- Preserve source details, artwork, credits, and millisecond clip timing across supported video and audio containers. Exports also include validated IMDb, TMDB, and TVDB IDs and critic/audience ratings when the provider supplies them. Local-file exports receive clip timing even without provider metadata.
- Embed dialogue from imported subtitles and custom captions as transcript metadata in video and audio exports, even with subtitle burn-in disabled. Transcripts use captions overlapping the selected clip range; long transcripts are truncated. GIF exports do not include this metadata. See Export metadata for details.
- Add provider IDs to movie filenames with the optional
{provider_ids}template token, using Plex or Jellyfin naming conventions. - Smaller editor downloads and lower server overhead during streaming playback and live dashboard updates.
- Plex playback, audio-track selection, and subtitle imports are more reliable. Server connections have stronger address validation, media sources are limited to the signed-in provider account, and dependencies are updated to address known security advisories.
Breaking changes and upgrade notes
Export existing drafts before upgrading. Saved clip ranges and subtitle edits from earlier versions cannot be restored after upgrading. When you reopen provider media, Cliparr may import the preferred supported subtitle track again; local videos start without subtitles. Your original media, downloaded clips, and subtitle style preferences are preserved.
Remembered logins now last 30 days instead of a year. Newly saved logins and automatically renewed logins use the shorter lifetime. If your remembered login expires, reconnect the provider. Existing saved logins keep their original expiry until renewed.
Regular Jellyfin accounts require Jellyfin 10.11 or newer for live session updates. Upgrade an older Jellyfin server or connect an administrator account. Plex session discovery still requires a server administrator account.
Localhost media-server connections need explicit opt-in. For Plex, set CLIPARR_ALLOW_LOOPBACK_PLEX_URLS=true; for Jellyfin, set CLIPARR_ALLOW_LOOPBACK_JELLYFIN_URLS=true. Enable these only if every signed-in user is trusted. Private LAN servers continue to work without these flags. See Configuration.
Jellyfin development URLs are no longer automatically rewritten. Configure an address reachable from the Cliparr server. Docker development setups can use http://jellyfin:8096 directly; localhost connections require the explicit opt-in above. See the source upgrade notes below if you used the removed development override.
Jellyfin redirects to a different localhost address or port are now rejected. Set the Jellyfin server URL to its final address directly, even when loopback access is enabled.
Media sources are tied to the signed-in Plex or Jellyfin account. If a previously visible server is missing, sign in with the account that added it.
Reverse proxies must support persistent notification connections. Allow WebSockets between Cliparr and Jellyfin, and unbuffered server-sent events between Plex and Cliparr and between Cliparr and the browser. Review reverse-proxy configuration if updates are delayed or connections repeatedly drop.
Some Plex subtitle tracks may no longer be available for import. Use SRT/SubRip or WebVTT when available. Other text formats require Plex to convert them for Cliparr. Some embedded text tracks become available after you select them during playback in Plex. See Subtitle burn-in.
Tools that read embedded Cliparr metadata may need an update. The metadata format has changed in 3.0. See Export metadata for the fields included in your clips and the source upgrade notes below for integration changes.
Mix down to stereo is enabled by default for video and audio exports. Surround audio is converted to stereo; mono stays mono. The result can sound quieter than exports from earlier versions. Disable Mix down to stereo to keep supported surround channels with AAC or FLAC. MP3, WAV, and Opus exports currently require mono or stereo.
Building from source requires Node.js 24.16+ and the pnpm version pinned in the root packageManager field. Install pnpm through npm using the development setup instructions. Corepack cannot launch pnpm 12. Docker users receive the required runtime in the image.
If you build Cliparr from source or maintain an integration, review the 3.0 source upgrade notes.
Audio export limitations
If a FLAC export fails because of the selected clip boundaries, choose WAV or adjust the start or end time. If a standalone FLAC file has an ending Cliparr cannot read, shorten the selection to end before that point; changing the output format will not recover the missing audio.
Exports remain in browser memory. Large audio exports show memory guidance, and WAV has a 4 GiB file-size limit. See export settings for browser codec, channel, and bit-depth support.
What’s Changed
- feat(www): add Markdown negotiation and LLM discovery (#200)
- fix(www): suppress viewport transition aborts (#201)
- chore(dev): fall back to a Blender mirror for the Sintel seed (#202)
- feat(frontend): add subtitle authoring without source tracks (#203)
- docs(cliparr): replace stale release planning guidance (#205)
- security(cliparr): patch vulnerable dependencies (#206)
- refactor(cliparr)!: enforce generated Plex contracts (#207)
- feat(cliparr)!: update playback sessions automatically (#204)
- feat(frontend)!: add audio-only export with shared export controls (#209)
- fix(frontend): simplify media details and UI notes (#210)
- feat(www): add audio conversion presets (#212)
- fix(www): prevent converter hydration failures in development (#213)
- perf(frontend): defer optional media codec loading (#214)
- perf(server): reuse pinned DNS agents (#215)
- perf(server): reduce media proxy request work (#216)
- security(server): close authenticated SSRF and authorization gaps (#217)
- security(server)!: align Jellyfin loopback and DNS validation (#218)
- test(server): standardize provider fixtures (#220)
- perf(server): batch live metadata and share cached DNS (#219)
- security(server)!: harden session and token lifecycle (#221)
- security(server)!: remove CLIPARR_DEV_JELLYFIN_URL dev bypass (#222)
- fix(www): restore approved hero assets (#223)
- ci(cliparr): skip unneeded Docker builds and cache writes (#224)
- chore(cliparr)!: update dependencies and Docker tooling (#225)
- chore(cliparr): prepare 3.0 release (#211)
- chore(cliparr): disable dependency dashboard (#229)
- refactor(frontend): unify shared UI primitives and styles (#230)
- fix(cliparr): update npm dependencies (#227)
- feat(cliparr): enrich exports with external IDs, ratings, and transcripts (#231)
- chore(frontend): update canvas-timeline to 0.5.0 (#232)
- chore(cliparr): prepare v3 release (#233)
- feat(www): add reusable audio player with synced transcripts (#235)
- fix(www): restore Twilight Zone mobile preview (#236)
- fix(frontend): clarify subtitle panel (#238)
New Contributors
- @weckere made their first contribution in https://github.com/TechSquidTV/Cliparr/pull/202
- @renovate[bot] made their first contribution in https://github.com/TechSquidTV/Cliparr/pull/227
Docker image
Published to ghcr.io/techsquidtv/cliparr.
docker pull ghcr.io/techsquidtv/cliparr:3.0.0
Tags:
ghcr.io/techsquidtv/cliparr:3.0.0ghcr.io/techsquidtv/cliparr:3.0ghcr.io/techsquidtv/cliparr:latestghcr.io/techsquidtv/cliparr:sha-92dd5c7
Digest: sha256:f9ca175137ccc46dd6425893bffc3db339231f2507a06161a40ad01eb65cec69