OBS Guides

Which encoder should OBS use? CPU versus GPU encoding explained

Choose the encoder your hardware can use, give streams and recordings the right rate control, and use the Stats counters to separate encoding pressure from rendering or network trouble.

Unbranded graphics card seated in a dark PC tower with lime tape on its edge

I'd start with the supported hardware encoder on your primary GPU if the computer is also running a game or another demanding app, because it moves compression work off the CPU. Choose a codec your streaming service or editor accepts, then use the service's bitrate requirements for streaming or a quality target for recording. Keep x264 as the alternative when hardware encoding is unavailable or the CPU has room for the work.

The control names below follow the OBS Studio 33 release. Your hardware, driver, operating system and build determine which encoders appear.

Read the encoder name before choosing it

In NVIDIA NVENC H.264, NVENC identifies the hardware encoder and H.264 identifies the video format it produces. The same distinction applies to AMD and QuickSync. x264 is a software encoder for H.264/AVC, so choosing x264 instead of NVENC H.264 changes who performs the compression; both still produce H.264 video.

A hardware encoder uses dedicated encoding hardware. x264 spends CPU resources on that stage. Quality depends on the encoder generation, settings and bitrate: the OBS hardware guide warns that earlier-generation hardware encoders give a lower-quality image than x264 veryfast at the same bitrate. That is a reason to compare the options available on your machine, rather than assume every GPU encoder beats every CPU preset.

There is also a GPU stage before encoding. OBS must composite and render the scene on the GPU, even when x264 handles compression. Switching to x264 doesn't remove that rendering work, and selecting NVENC doesn't give OBS unlimited GPU time.

Two published OBS tests show why CPU headroom matters. In Jan Ozer's 2022 recording comparison, an i7-3770 mini-workstation running Windows 10 Pro recorded about 40% CPU utilization with x264 veryfast, versus just over 10% with QuickSync, during 90-second captures.

In the separate 2020 igor'sLAB gaming test, an i7-5820K at 4.5 GHz and RTX 2080 ran Assassin's Creed Odyssey at 1080p Ultra High. At 60 fps stream output, NVENC and x264 veryfast both recorded 0% skipped frames; changing x264 to faster raised that figure to 45.6%. Each study supplies one comparison for its own workload; CPU utilization and skipped-frame rates are separate results. I'd protect CPU headroom before choosing a slower preset, then check the encoding-lag counter under the planned load.

OBS Studio 33 Settings, Output page in Advanced mode, Streaming tab, Video Encoder list open with NVIDIA NVENC H.264 selected above x264
Pick the encoder by its exact name in this list: the NVIDIA NVENC entries run on the graphics card, while x264 compresses on the CPU.

Match the available encoder to the hardware

In Advanced Output mode, look for the appropriate family below. The entries identify possible choices, not a promise that every device exposes every codec. Start with the H.264 entry when broad compatibility is the priority.

Hardware familyAdvanced Output names
NVIDIANVIDIA NVENC H.264, NVIDIA NVENC HEVC, NVIDIA NVENC AV1
AMDAMD HW H.264 (AVC), AMD HW H.265 (HEVC), AMD HW AV1
Intel graphicsQuickSync H.264, QuickSync HEVC, QuickSync AV1
Apple VideoToolboxApple VT H264 Hardware Encoder, Apple VT HEVC Hardware Encoder

If several hardware families appear, the OBS hardware guide recommends the primary graphics adapter's hardware encoder. For a PC whose main GPU is NVIDIA or AMD, that means starting with NVENC or AMD rather than QuickSync.

Simple mode uses shorter labels such as Hardware (NVENC, H.264), Hardware (AMD, H.264), Hardware (QSV, H.264) and Hardware (Apple, H.264). On a Mac, check for the word Hardware: similarly named Apple VT Software Encoder entries are separate choices. On Linux, the AMD names above don't appear: AMD hardware encoding shows up as FFmpeg VAAPI H.264 (with HEVC and AV1 siblings where the GPU supports them), Intel graphics can offer those VAAPI entries as well as QuickSync, and NVIDIA cards can offer NVENC.

Codec support is a second decision. NVIDIA's generation table lists AV1 encoding on RTX 40 and RTX 50 cards, but not on RTX 20 or RTX 30 cards. Even when the encoder offers AV1 or HEVC, the destination must accept the result. For recordings, NVIDIA recommends H.264 when compatibility matters; confirm an AV1 or HEVC file opens in the editor or player you intend to use before an important capture.

If NVENC is missing or will not start

Check the GPU's support and keep OBS up to date before copying encoder values. Since OBS 32.2, and still in 33.0.1, NVENC needs NVIDIA driver 570 or newer. Separately, OBS 31.0 removed NVENC support for Kepler GPUs, and a newer driver doesn't restore support for that architecture. Identify the exact GPU model; a broad series label isn't enough to determine its architecture.

Change the right output, with a way back

Change encoder settings between sessions: OBS locks these controls while a stream, recording or Replay Buffer is running.

  1. Stop the stream, recording and Replay Buffer when the session is finished. Choose Profile > Duplicate and give the copy a useful name. A profile stores Stream, Video and Output settings, so the original preserves the configuration you are leaving. It doesn't back up your scenes.
  2. Open Settings > Output. If Output Mode or the encoder fields are grayed out, check for an output you left running.
  3. Choose Output Mode: Simple if you want a preset, or Advanced for the individual controls below. In Advanced mode, select the Streaming or Recording tab before changing values. Editing Streaming doesn't configure an independent recording encoder.
  4. For an independent Advanced recording, use Type: Standard and select a real encoder in place of (Use stream encoder). OBS warns that Custom Output (FFmpeg) comes with no safeguards, and its custom fields aren't needed for this choice. Set the rate control below on the same tab, then click OK to save and close Settings.

In Simple mode, I'd start a local recording with High Quality, Medium File Size because it gives you a smaller starting file than Indistinguishable. The Indistinguishable preset raises quality and file size and can put more pressure on weaker hardware. Same as stream uses the streaming encoder settings, so don't choose it when the recording needs its own quality settings. If you stream and record separately with software encoding, OBS warns that the second encode adds CPU usage.

Set rate control for the destination

Streaming: follow the service's bitrate requirements

Use CBR when your service prescribes it. For example, YouTube's RTMP/RTMPS guidance specifies CBR and recommends a two-second keyframe interval. It says the interval shouldn't exceed four seconds. Put seconds in the normal keyframe-interval field; don't substitute an old custom FFmpeg command.

Choose bitrate from the service's limits and the upload connection you can sustain. A recording quality target can't replace that live bitrate budget. For an initial live setup, establish the service connection and sustained upload budget before choosing a final bitrate.

Mac users have a specific fork. In this OBS build, Apple VT hardware CBR requires Apple Silicon and macOS 13 or newer. On an Intel Mac, use x264 for a service that requires CBR, as the OBS hardware guide advises. Intel VideoToolbox can still be a recording option in Advanced mode.

Recording: use a quality target instead of a stream bitrate

A local recording doesn't need to inherit the live stream's bitrate ceiling. For an SDR H.264 recording, the OBS Advanced Recording Settings Guide gives these starting points:

EncoderRate Control and qualityStarting preset
NVENC H.264Constant QP, 16-23P5
AMD H.264CQP, 16-23Quality
QuickSync H.264ICQ, 16-23, if offeredTarget Usage TU4
x264CRF, 16-23veryfast

Within each of those quality scales, a lower value produces higher quality and larger files. The same number doesn't promise the same visual quality across encoders. I'd start toward the higher end of the documented range to contain file size, inspect representative footage, then lower the value if the extra detail is worth the storage. These are H.264 starting points; don't carry the whole recipe into an AV1 or HEVC setup.

For NVENC, the same OBS baseline pairs P5 with High Quality tuning, Two Passes (Quarter Resolution), Look-ahead off, Adaptive Quantization on and B-Frames: 2. Keep that recommendation together as a starting point rather than mixing it with the heaviest options from another guide.

OBS Studio Advanced Output Recording tab with NVIDIA NVENC H.264 as the video encoder, Constant QP rate control and Constant QP set to 23
Give the recording its own NVENC H.264 encoder, switch Rate Control to Constant QP and start at 23, then lower the number only if the extra detail is worth the file size.

Apple VT has a different scale: where its hardware CRF mode is available, the Quality slider runs from 0 to 100. Don't paste the table's 16-23 range into that slider. For recording format, file safety, resolution and frame-rate choices, continue with recording settings in the recording hub.

Raise encoder effort after a stable rehearsal

A preset changes compression effort, not the job's destination. With x264, faster presets trade quality for lower CPU use. Slowing the preset is a poor first move when the CPU already struggles to deliver frames.

NVENC's P1-to-P7 labels run from Fastest to Slowest, with increasing intended quality. They aren't a guarantee that P7 will keep up with your workload. The same control descriptions explain that Look-ahead adds GPU use and latency, while Adaptive Quantization adds GPU use. Older guides may call the latter Psycho-Visual Tuning.

Don't select Ultra High Quality just because its name sounds preferable. The OBS NVENC documentation says it significantly reduces throughput and is "not recommended for gaming content." Establish a stable output first, then change one setting and compare the result under the same kind of activity.

Use Stats to choose the next adjustment

Apply the settings, then open Docks > Stats during a short recording or a destination-supported private test stream. Use the scene and application load you plan to capture. View > Stats opens a separate window if you prefer that to a dock. In OBS, the three frame-loss counters point to different parts of the path:

OBS Stats dock during a local recording: rendering-lag and encoding-lag counters at 0 / 10800, Stream row inactive, Recording row at 22 Mb/s
Watch the two lag counters under your real load: a climbing encoding-lag count calls for less encoder work, a climbing rendering-lag count for a lighter game or scene.
Counter that keeps risingWhat to change first
Skipped frames due to encoding lagReduce encoder work. Back off a demanding preset; if x264 is CPU-limited, try an available hardware encoder. Reduce output resolution or frame rate if necessary.
Frames missed due to rendering lagLeave GPU time for scene rendering. Cap the game's frame rate or lower its graphics settings, and reduce scene complexity.
Dropped Frames (Network)Check the connection, ingest server and sustained bitrate. Changing the x264 CPU preset doesn't repair the network path.

OBS's encoding-performance guidance covers limiting game load and lowering output resolution or frame rate. For that adjustment, use Settings > Video > Output (Scaled) Resolution or the FPS setting; keep the Base (Canvas) Resolution intact unless you also intend to redesign the scene. For the network counter, follow the dropped frames diagnosis: OBS places those losses between the computer and the ingest server.

After each change, repeat the same representative activity and watch whether the relevant counter continues to climb. Then play the saved file in the application that must use it, or inspect the private stream at its destination. Check moving detail as well as a static desktop. Keep the duplicated profile until the selected encoder produces the output you need under that load.