Scan at scale
Analyze large folders with configurable workers, scheduled scans, and clear readiness states.
Media library intelligence
Understand your movie, series, and music libraries with fast scans, duplicate insight, quality metrics, and practical dashboards built for large local collections.
What it does
Analyze large folders with configurable workers, scheduled scans, and clear readiness states.
Keep file paths, media names, and scan diagnostics on your own machine while still getting practical insights.
Handle video and audio libraries with context-aware tables, filters, metrics, and metadata views.
Classify shows, seasons, episodes, and bonus content with configurable folder and pattern rules.
Find duplicate candidates, review groups, and keep intentional duplicates out of the normal workflow.
Track library changes over time and run manual, daily, interval-based, or watch-style scans.
Arrange statistic panels, compare metrics, and keep the views that matter most for each library.
Spot weak encodes, bitrate outliers, spatial audio, HDR formats, and codec mixes before cleanup work piles up.
Run MediaLyze on a server, NAS, or desktop with packaging designed for everyday local media workflows.
MediaLyze in use
A quick look at the growing installation base and the scale of libraries being analyzed.
View public statsPlanned in the open
Latest updates
ROADMAP.mdMEDIALYZE_TELEMETRY_DISABLEDminimal and enabled modesscripts/dev-local.ps1 helper that mirrors the existing local realtime development startup flow by booting the reloading backend, waiting for /api/health, and then launching the frontend dev serverelectron-builder NSIS resource downloads fail transiently with HTTP 502 responsesffprobe bundle with a pinned static ffprobe build so media scans no longer depend on host or bundled FFmpeg shared-library resolution; FFPROBE_PATH remains available for explicit system ffprobe overrides (#127)ffprobe launcher that sets its own library path before executing ffprobe, preventing AppImage scans from falling back to incompatible host FFmpeg libraries; FFPROBE_PATH still supports explicit system ffprobe overrides (#127)MediaLyze.AppImage --version print the packaged desktop app version so users can verify the exact AppImage build they are running (#127)ffprobe shared-library dependencies into AppImage builds and load them at runtime so scans no longer fail when the host distribution has incompatible FFmpeg library versions (#127).mp3, .flac, .m4a, .aac, .opus, .wav, and .wma files (#76)NormalizedAudioStream dataclass field ordering triggered TypeError: non-default argument 'language' follows default argument, which could prevent Docker containers from startingreleases/latest/download/... and always fetch the newest published desktop buildTZ environment variable should be set correctly (#124)Folder depth show/season recognition mode with configurable series and season depths, make it the default, and only show regex inputs when the regex mode is selectedCHANGELOG.md in a collapsed release-history accordionfile_history, library_history, and scan_history, including persisted per-file snapshot history, daily library snapshots, oldest-first cleanup, and a new GET /api/history-storage forecast endpointHistoric data dashboard layout panelstream.profile are recognized during analysis; existing libraries may need a full rescan to refresh previously analyzed files (#107)size versus duration (#102)Resolution - MP axis option, show the active renderer icon directly in the toolbar button, and add an App Settings control for the scatter-plot sample limit (#102)Dashboard page title, animated edit controls, add-panel menus, drag-and-drop reordering, per-panel resize controls, and browser-persisted layouts for each page contextHistory restore-default action to the inline layout toolbarunlimited panel size feature flag that removes the current 4-row height cap for dashboard and library statistic panels while still keeping panel width constrained by the underlying 4-column gridLibrary statistics settings block into a Table View section that now only manages analyzed-files table columns and tooltips, while Bitrate and Audio bitrate can also be enabled as table columns1x2ffprobe dependencies into the packaged app and rewrite non-system dylib loader paths so scans no longer fail on machines without the original Homebrew cellar layoutQuality score, Runtime, File size, Bitrate, and Audio bitrate in both the dashboard and library statistics, with local count/percent toggles and clickable library bins that apply matching analyzed-files range filtersAND ranges such as >=4GB,<8GB, including the new bitrate-based search fields used by the histogram panelsdesktop/ffprobe-paths.cjs in packaged Electron app builds and add desktop packaging regression tests so macOS startup no longer fails with Cannot find module './ffprobe-paths.cjs' (#99)Dolby Atmos and DTS:X, including ffprobe profile detection, analyzed-files filtering and sorting, library statistics, CSV export, and audio tooltip/detail rendering (#94)Format panel renders structured metadata rows instead of raw format JSON, and make all detail panels globally collapsible and reorderable with browser-persisted stateContainer, Spatial audio, Subtitle codecs, and Subtitle sources to be enabled as optional dashboard statistic panels through the existing statistics settingsv0.4.1 by completing strict frontend test app-settings mocks for the new feature flags and replacing the Windows ffprobe bundle step's brittle Chocolatey install with a direct archive download plus retries! negation and comma-separated AND terms in analyzed-files metadata search filters (#85).media-app-shell layout and hiding the analyzed-files quality score meter (#91)First "rough" implementation for detecting duplicate files. May break desktop install use v0.3.0 if it's not working properly.
off (default), filename, filehash, both modes (#16)App settings with separate controls for per-scan analysis workers and parallel library scansdev desktop artifact build manual-onlymain release publishing to real version bumps so unchanged-version commits no longer try to recreate existing tags and releasesminimum / ideal values are changed (#72) - by @eivarinffprobe so desktop scans analyze files on network shares instead of only listing thembackend/ffprobe structure, auto-detect ffprobe on the build machine, and use more robust packaged-path fallbacks at runtime before failing (#80)MEDIA_ROOT as invalid paths so browse and library setup return 400 or skip the entry instead of crashing with a 500 (#81)linux/amd64 & linux/arm64 - by @patrickjmcd*/.deletedByTMM/* default ignore pattern for Tiny Media Manager users@patrickjmcd in #57
ffprobe metadata variants are recognized during analysiscdrom, floppy, and usb in the path browser while keeping explicit mounted media paths visibleAGENTS.md to document the actual current dev branch behavior, release chronology, runtime architecture, and repository layoutMEDIA_ROOT in the path browser so multi-directory Docker setups no longer expose invalid library targets, and . decimals, support an explicit maximum threshold, and use actual file size to penalize bloated media even when bitrate metadata is misleadingSystem, Light, and Dark modes, including persistent browser-side preference storage and automatic OS theme following in System mode.@MSCodeDev in #40
Feature flags section under App settings.Show Dolby Vision Profiles feature flag so Dolby Vision profile variants can be shown separately in Dynamic Range statistics and metadata views when explicitly enabledffprobe parsing for new scans, storing values like Dolby Vision Profile 5/7/8 instead of only the generic Dolby Vision labelv0.1.1 may need a fresh scanmain from branch-triggered builds to SemVer tag releases0.1.1 ahead of the first official public releasetake a look
