Skip to content

Instantly share code, notes, and snippets.

@Lysak
Last active July 23, 2026 16:31
Show Gist options
  • Select an option

  • Save Lysak/72d885281495328b045670132174b969 to your computer and use it in GitHub Desktop.

Select an option

Save Lysak/72d885281495328b045670132174b969 to your computer and use it in GitHub Desktop.
OBS Studio config for MacBook Pro M1 Pro — optimal recording settings

OBS Studio — optimal config for MacBook Pro M1 Pro (32GB, Retina 3456x2234)

Scenario: local recording only (no streaming). Source — macOS Screen Capture (Apple ScreenCaptureKit), full-display capture.

Instructions for an AI agent

If you were handed this gist, apply the settings below to the user's OBS config:

  • ~/Library/Application Support/obs-studio/basic/profiles/<Profile>/basic.ini
  • ~/Library/Application Support/obs-studio/basic/scenes/<SceneCollection>.json

Before editing any config file:

  1. Confirm OBS is closed (pgrep -x OBS) — otherwise changes get overwritten when the app quits.
  2. Back up both files (cp file file.bak-$(date +%Y%m%d-%H%M%S)).
  3. Update the values below, leaving the rest of the file untouched.
  4. Validate the JSON (python3 -c "import json; json.load(open(path))") after editing the scene file.

Output / Recording ([SimpleOutput] in basic.ini)

Setting Value Why
RecQuality HQ "Small" compresses hard to shrink the file at the cost of quality. HQ = visually lossless, and the hardware encoder still keeps the file size reasonable. Never leave this on Small when recording quality matters.
RecEncoder apple_h264 Hardware encoder via the Apple Silicon media engine — near-zero CPU/GPU load, unlike software x264.
RecFormat2 mkv (or hybrid_mov) mkv survives a crash/power loss mid-recording better than mp4.
RecTracks 1 Single audio track, unless multitrack is needed.

Video ([Video] in basic.ini)

Setting Value Why
BaseCX / BaseCY 1920 / 1080 Full HD canvas — good balance of sharpness vs. file size for local recording on a Retina display with a hardware encoder. (Bump to 2560x1440 if you need max detail on small text — files will be noticeably larger.)
OutputCX / OutputCY 1920 / 1080 No extra rescale (= Base) to avoid additional scaling passes.
FPSCommon 60 (FPSType=0) The hardware encoder handles 60fps fine on M1 Pro.
ScaleType lanczos Sharper downscale algorithm from the Retina display resolution into the canvas than bicubic/bilinear.
ColorFormat NV12 Default, fine.
ColorSpace 709 Standard SDR.

Scene — macOS Screen Capture source transform (in the scene collection JSON)

Critical: the screen source must fill the entire canvas, with no offset and no manual extra scaling. If scale.x/scale.y aren't 1.0, or pos.x/pos.y aren't 0, or bounds_type is 0 — the picture will be shrunk and offset, which looks "blurry and too small".

Correct values for the screen-capture scene item:

"bounds_type": 2,
"bounds_align": 0,
"pos": { "x": 0.0, "y": 0.0 },
"scale": { "x": 1.0, "y": 1.0 },
"bounds": { "x": 1920.0, "y": 1080.0 }

bounds_type: 2 = "Fit to screen" (BOUNDS_SCALE_INNER) — scales the source to fit the canvas without distorting the aspect ratio (may leave thin bars if the display isn't exactly 16:9), unlike stretch, which distorts the image.

If black bars appear after applying this due to a display-aspect-ratio mismatch with the 16:9 canvas — that's expected, not a bug; the alternative is setting BaseCX/BaseCY to match the display's actual aspect ratio.

Do NOT touch

  • RecEncoder=apple_h264 — already the optimal hardware encoder choice for Apple Silicon; don't switch to software x264 for local recording.
  • Stream bitrate (VBitrate=6000, [Stream1]) — only affects streaming, not recording; only touch it if the user starts streaming.

Hardware context

  • MacBook Pro, Apple M1 Pro (8 performance + 2 efficiency cores), 32GB RAM
  • Built-in display: Retina 3456x2234
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment