Skip to main content

Tips & Best Practices

Things that save time and produce better results.

Run Analysis First

Analysis is the slow part on a cold library. analyze does it on its own, without rendering anything:

immich-memories analyze --year 2024

Subsequent generate runs read from that cache instead of re-analysing, which is what makes iterating on clip selection quick. On a NAS this is the thing to run overnight. See Discovery & utility commands.

Use Hardware Acceleration

If you have a GPU, use it. The tool auto-detects NVIDIA (NVENC), Apple (VideoToolbox), Intel (QSV), and AMD (VAAPI). Check what's available:

immich-memories hardware

Encoding 1080p runs at about 2 minutes per 5 minutes of output on Apple Silicon or a GPU; a 30-clip video takes around 15 minutes on a 4-core NAS CPU. See the resource table.

Adjust Scene Detection Threshold

The default threshold (27.0) works for most content, but you might need to tune it:

  • Lower threshold (e.g., 20.0) = more scene cuts detected. Good for fast-paced content with lots of action.
  • Higher threshold (e.g., 35.0) = fewer cuts. Better for slow, steady footage like landscapes.
analysis:
scene_threshold: 27.0

Start with Shorter Durations

Your first video should be 3-5 minutes, not 30. Shorter durations mean:

  • Faster generation
  • Easier to review
  • Less wasted time if your settings are off

Once you're happy with the results, scale up.

Review Clips Before Generating

Step 2 exists for a reason. Spend 2 minutes deselecting clips that don't belong: that shaky hallway video, the accidental recording of your pocket, the 45-second clip of a wall. The tool's scoring is good but not perfect.

Enable LLM Analysis for Large Libraries

For libraries with hundreds of videos, LLM content analysis makes a real difference in clip selection. It adds a few seconds per video to analysis time but catches things that motion/face detection misses: a quiet but meaningful conversation, a funny reaction shot, etc.

content_analysis:
enabled: true
weight: 0.35

Downscaling for Analysis

Already on. enable_downscaling defaults to true and analysis_resolution to 480, so every run already scores clips off a 480p proxy rather than the 4K source — the tool does not need full-resolution frames to detect scenes or rank clips.

analysis:
enable_downscaling: true # default
analysis_resolution: 480 # default

The only reason to touch these is to go the other way: raise analysis_resolution if you think scoring is missing small faces in wide shots, and accept the slower analysis.