Skip to main content
Ahosting Logo
  • Hosting
    • WordPress Hosting
      Fast, secure hosting for WordPress sites
    • Web Hosting
      Reliable, affordable hosting for sites
    • FFMpeg Hosting
      Fast hosting for FFmpeg projects
    • Reseller Hosting
      Start hosting biz with white-label plans
    • VPS Hosting
      Scalable VPS with full control & power
    • Dedicated Server
      High-power servers for max security
    • WooCommerce Hosting
      Fast hosting for WooCommerce shops
  • Domain
    • Register a Domain
      Secure your domain name in minutes
    • Domain Transfer
      Move domains to Ahosting with ease
    • Premium SSL Certificate
      Enterprise SSL to build customer trust
  • Support
    • Submit A Ticket
      Expert 24/7 help from our support team
    • Abuse Report
      Report abuse to keep network safe
    • Knowledge Base
      Quick answers via step-by-step guides
  • Company
    • Blog
      Expert articles to power your online growth
    • Compare Hosts
      Side-by-side comparison
    • Datacenter
      Secure, high tech datacenter for hosting
    • About Us
      Learn about our mission, values & team
    • Contact Us
      Contact sales for plans, pricing & advice
    • Sitemap
      Find info fast with our clear site map
My Account
Ahosting Logo
  • Hosting
    • Web Hosting
    • WordPress Hosting
    • FFMpeg Hosting
    • Reseller Hosting
    • VPS Hosting
    • Dedicated Server
    • WooCommerce Hosting
  • Domain
    • Register a Domain
    • Domain Transfer
    • Premium SSL Certificate
  • Support
    • Knowledge Base
    • Abuse Report
    • Submit A Ticket
  • Company
    • About Us
    • Contact Us
    • Blog
    • Sitemap
    • Datacenter
  • Legal
    • Privacy Policy
    • Terms of Service
    • Acceptable Use Policy
    • Service Level Agreement
    • Resource Abuse Policy
My Account

Blog Home

FFmpeg Threads and CPU Allocation: How Many Threads Actually Help

FFmpeg threads and CPU allocation explained: why the useful thread ceiling comes from the video resolution, not the core count — AHosting FFmpeg hosting

Matt Chrust

Director of Business Development, AHosting Matt has led business development at AHosting since the company’s founding in 2002. He writes about WordPress hosting infrastructure, server performance, and the evolving requirements of WordPress sites at scale.

Last Updated

September 3, 2026
Home » FFmpeg / Video Hosting » FFmpeg Threads and CPU Allocation: How Many Threads Actually Help
  • Why More FFmpeg Threads Stop Making Encodes Faster
    • The Two Ceilings, and Only One of Them Is Your CPU
  • What Actually Sets Your Useful FFmpeg Thread Count
    • Frame Geometry Caps Useful FFmpeg Threads, Not Your Core Count
    • x265 Picks Its Own Frame Threads and Warns You Off More
    • Why the Scheduler Makes Extra FFmpeg Threads Cost You
  • The AHosting FFmpeg Thread Budget
    • Two Assumptions Behind the FFmpeg Threads Column
  • Jobs, Not Threads: The Split That Uses the Box You Paid For
    • Why One Job at Eight FFmpeg Threads Leaves an 8 vCPU Box Idle
    • Running the Split with xargs
    • Adaptive Bitrate Ladders Are the Clearest Case
  • When FFmpeg Threads Are Not Your Problem At All
  • What Guaranteed vCPU Changes
  • A Practical Checklist: Setting FFmpeg Threads on Your Plan
  • Frequently Asked Questions About FFmpeg Threads
    • Does setting FFmpeg threads to 16 speed up a 1080p x264 encode on 8 vCPU?
    • How many threads should I use for FFmpeg encoding in 2026?
    • How many FFmpeg threads can an AHosting FFStart plan actually use in 2026?
    • FFmpeg threads vs parallel jobs: which finishes a batch of encodes faster?
    • AHosting FFStart vs FFPower: how many parallel jobs and FFmpeg threads each in 2026?
    • Why does raising the x265 frame thread count sometimes reduce performance?
    • What is the FFmpeg thread budget, and how do I calculate mine?
    • What does the FFmpeg threads option actually control during encoding?
    • How should I set FFmpeg threads for a five-rung HLS ladder on 4 vCPU?
    • Does AHosting FFmpeg hosting throttle vCPU during long encodes in 2026?
TL;DR

Useful FFmpeg threads are capped by the video, not by your core count. At 1080p that cap is about four, so spare vCPU buys a second job rather than a bigger thread number.

You moved the work onto a server with eight dedicated cores, set FFmpeg threads to eight to match, and the encode finished barely faster than it did on four. Nothing is throttling you, the machine is genuinely yours, and half of it looks busy doing very little. That is not a misconfiguration, and it is not a bad plan. It is the point at which the number of cores stops being the number that matters.

Listen: why matching thread count to core count stops working, and what to run instead. By Matt Chrust, Director of Business Development, AHosting.

Specifically, the thing that decides how many workers an encoder can keep busy is the video, not the processor. A codec parallelises by splitting the picture into pieces that can be worked on independently, and there are only so many pieces in a frame. Once you have a worker for each one, another worker has nothing to pick up. The codec projects publish this openly, in numbers, and almost nobody writing about encoding performance quotes them.

Therefore this article does two things. It gives you the ceiling for your output resolution and the arithmetic that turns it into a per-job thread count, and it shows what to do with the cores that ceiling leaves over. If your encode is slow on a shared plan rather than a server of your own, start with the three-number diagnostic for slow FFmpeg encoding instead, because a capped container changes the answer completely. For the buying side of the question, our guide to FFmpeg hosting for video creators covers what to look for before you have a server at all.

Why More FFmpeg Threads Stop Making Encodes Faster

In practice, extra threads stop helping at the point where the encoder runs out of independent work to hand them. That point arrives well before most people expect, and it has nothing to do with how much CPU you bought. An encoder cannot invent parallelism that is not in the source.

Notably, the default hides this. Left alone, FFmpeg picks a thread count from the machine, so on an eight-core server you get eight workers whether or not there is eight workers’ worth of work. The command looks correct, the process starts, every core shows activity in a monitor, and the result is a modest gain over half as many FFmpeg threads. Nothing reports the waste, because from the operating system’s point of view nothing is wrong.

The Two Ceilings, and Only One of Them Is Your CPU

Fortunately, the situation resolves into two numbers. One is familiar: the cores your plan allocates, a hard limit on how much CPU time you can spend per second. The second is the one that gets missed: the number of threads the codec can actually put to work on a frame of a given size. Your per-job thread count is the lower of the two, and which one is lower changes the advice completely, because setting FFmpeg threads to your core count is only correct when the cores are the smaller number.

By contrast, most tuning guidance addresses only the first. Our own knowledge base article on FFmpeg presets, CRF and command-level tuning is the right reference once you know which ceiling binds you, and it covers the levers that genuinely reduce the CPU cost of an encode. This article is upstream of it: before choosing a preset, work out whether the machine or the material is the constraint, because that decides whether you are looking for a faster command or a different way to run it.

What Actually Sets Your Useful FFmpeg Thread Count

Frame Geometry Caps Useful FFmpeg Threads, Not Your Core Count

Ultimately, the cap comes from how the codec divides a picture. Google publishes recommended settings for VP9 video on demand, and the table is a resolution ladder rather than a hardware one: 640×360 and 640×480 get two threads, 1280×720 and 1920×1080 get four, and 2560×1440 and 3840×2160 get eight. The figure moves with frame size, and it stops moving well below the core count of an ordinary server. The same page notes that “there is limited value to multiple threads when the output frame size is very small.”

Similarly, the WebM project states the general recommendation as the number of real cores minus one, and explains the mechanism plainly: rows of macro-blocks are encoded simultaneously on different threads. Rows are the unit of parallelism, so a frame with few rows has few pieces to hand out. That is why a 4K encode can keep eight threads busy while a 480p encode of the same length cannot keep three busy, on identical hardware, with an identical command.

x265 Picks Its Own Frame Threads and Warns You Off More

Interestingly, the clearest statement of the problem comes from an encoder that already solves it for you. The x265 project allocates one thread per CPU core by default and auto-detects a frame-thread count from the core count — two frame threads at four cores, three at eight, five at sixteen. It then warns against overriding that upward, because frame threads “each allocate a large amount of memory” and the reference lag between frames limits how much of the work is genuinely independent.

Above all, note how the project phrases the consequence: beyond the auto-detected count you get limited benefit, and “often the extra frame encoders reduce performance.” Not the same speed for more memory, but slower. An encoder shipping a conservative default and a written warning against raising it is a strong signal that the received wisdom about matching threads to cores is wrong.

Why the Scheduler Makes Extra FFmpeg Threads Cost You

Consequently, threads you cannot feed are not free. The Linux scheduler documentation describes its model as an ideal CPU running every task in parallel at 1/nr_running speed — as the number of runnable tasks rises, each one’s share falls proportionally. Sixteen threads on eight cores do not get sixteen cores’ worth of time. They get eight cores’ worth, cut into sixteen thinner slices, with the switching between them charged to you.

For example, the same counting error shows up elsewhere on a server. Our post on how many concurrent users WordPress shared hosting can handle works through the identical mistake in PHP workers: raising the worker count past what the CPU can serve does not raise throughput, it just spreads the same capacity thinner and adds contention. Encoders are the same arithmetic with a different unit of work.

The AHosting FFmpeg Thread Budget

Accordingly, the two ceilings combine into one table. The AHosting FFmpeg Thread Budget below sets each plan’s effective cores against the useful thread ceiling for 1080p output, and reads off the per-job thread count and the split that follows from it. Shared tiers take their core figure from the CloudLinux CPU speed allocation, where 100 percent is one core; the FFmpeg plans take theirs from the vCPU on the plan page.

AHosting tierEffective coresUseful threads per 1080p jobThe split that follows
Bronze shared111 job at 1 thread
Silver shared221 job at 2 threads
WooStart shared331 job at 3 threads
Gold shared441 job at 4 threads
FFStart4 vCPU, guaranteed41 job at 4 threads
FFPower8 vCPU, guaranteed4 (capped by the codec)2 jobs at 4 threads
The AHosting FFmpeg Thread Budget. Effective cores are published allocations; the 1080p ceiling is the VP9 VOD recommendation for that frame size. Arithmetic over published figures, not benchmark data.

Read the last row first, because it is where the argument lands. FFPower is the only tier whose core count exceeds the codec ceiling, which means it is the only tier where adding threads to a single job cannot spend what you are paying for. Everywhere above it, one job at the full thread count already uses the plan. The shared rows come from the shared plan allocations, and they carry a caveat the FFmpeg rows do not: a container reaches its cap only while its neighbors leave it free.

Two Assumptions Behind the FFmpeg Threads Column

Two assumptions are printed rather than buried. The ceiling column is for 1920×1080; at 1440p and above it rises to eight and the FFPower row becomes one job at eight threads. And every figure here is arithmetic over published numbers, not a measurement — we have benchmarked no encodes and are not implying otherwise.

Jobs, Not Threads: The Split That Uses the Box You Paid For

That said, a ceiling is only useful if it tells you what to do with the headroom. The answer is that spare cores go to another job, because a second file arrives with a full set of frames of its own and none of the dependencies that limit the first.

One job at eight FFmpeg threads against two jobs at four, on the same 8 vCPU server Two panels showing the same eight vCPU server. On the left a single encode started with eight threads keeps four vCPU busy and leaves four idle, because the useful thread ceiling at 1080p is four. On the right two concurrent encodes at four threads each keep all eight vCPU busy, because the second file brings frames of its own. The same 8 vCPU box, split two ways At 1080p the codec has useful work for about four threads. What you do with the other four vCPU is the whole decision. One job, -threads 8 encoding encoding encoding encoding idle idle idle idle Four vCPU do the work. Four have nothing to encode. Two jobs, -threads 4 each file A file A file A file A file B file B file B file B Eight vCPU busy. The second file supplies the missing work. threads per job = the lower of your cores and the codec ceiling for your resolution Concurrent jobs then fill whatever cores are left, because a second file has frames of its own to divide. Ceiling shown is the published VP9 recommendation at 1920×1080. It rises to eight at 1440p and above. AHosting, 2026.

Why One Job at Eight FFmpeg Threads Leaves an 8 vCPU Box Idle

Indeed, the diagram is the whole finding. On eight vCPU encoding 1080p, a single job with eight threads has genuine work for about four of them; the rest wait on frame dependencies and get scheduled anyway. Two concurrent jobs at four threads each have eight threads’ worth of real work, because file B’s frames do not have to wait for file A’s.

In fact, this is why throughput and latency pull in opposite directions here. One file that has to be finished as fast as possible should take every thread the codec can use and no more. A queue of twenty files should be run as several concurrent jobs, because total elapsed time for the queue is what you are minimising, and that is a throughput problem rather than a latency one.

Running the Split with xargs

Typically, you do not need a job runner to do this. The xargs -P option runs up to that many processes at a time, and it is present on every Linux server you are likely to meet. Piping a file list into it with -P set to your job count and -threads set to your per-job figure is the entire implementation.

However, the detail of doing that safely — output naming, failure handling, keeping a long queue from swamping the box — is its own subject, and our knowledge base covers it in how to run FFmpeg jobs in parallel without overloading. What this article contributes is the number to put after -P, which that article reasonably leaves to you. The planner further down produces both figures and the command line that carries them.

Adaptive Bitrate Ladders Are the Clearest Case

For example, a five-rung ladder encodes one source at five bitrates, and the rungs do not depend on each other at all. Research on multi-representation encoding treats this as the standard approach: with multi-core CPUs, multiple representations of the same content can be encoded in parallel. Five concurrent single-threaded encodes on four cores will finish a ladder sooner than five four-threaded encodes run one after another.

Shape of the workWhat you are minimisingThe splitWhy
One file against a deadlineElapsed time for that fileAll useful threads on one jobLatency. Spare cores have no second source of work.
A batch or queue of filesElapsed time for the whole queueCores divided by the ceilingThroughput. Each file brings its own frames.
An adaptive bitrate ladderElapsed time for the full ladderOne job per renditionThe renditions are independent encodes of one source.
A heavy filter graphElapsed time for that fileFewer jobs, more threadsFiltering is a separate stage with its own threading.
The Jobs-vs-Threads Decision Table. Match the split to what you are minimising, not to the core count.

Above all, batch work is where the difference compounds rather than appearing once. A ladder or a nightly queue runs the same arithmetic every night, and the gap between a saturated box and a half-used one is the whole reason sustained encoding workloads justify their own hardware rather than sharing capacity with anything else.

When FFmpeg Threads Are Not Your Problem At All

Honestly, none of this applies if something else is capping you first, and the failure looks identical from the outside. An encode that is slow because a container limits CPU speed does not get faster from a better thread split, because the constraint is the total CPU time you are permitted rather than how you divide it.

Therefore check that before you act on anything above. The three-number diagnostic in the previous post in this series separates a throttled container from a disk bottleneck from a genuinely single-threaded encode, and it costs one timed run. If it tells you that you are throttled, the split in this article is the right plan for after you move, not a fix for where you are.

Similarly, storage can be the real limit. A job reading and writing over a network mount will show idle cores no matter how the threads are arranged, and adding concurrent jobs makes it worse rather than better by putting more pressure on the same device. Where the diagnosis points at the plan rather than the command, no arrangement of FFmpeg threads recovers it, and the shared hosting versus VPS comparison and the VPS plan range set out what changes and what does not.

What Guaranteed vCPU Changes

In particular, a thread plan is only worth making if the cores it assumes are actually yours for the duration. On a shared container the allocation is a share of a core that you reach when the neighbors are quiet, so a split calculated against four effective cores can find two on a busy evening. The plan is not wrong; the input moved.

Specifically, that is what the FFmpeg plans allocate. FFStart ships four vCPU and FFPower eight, both described on the plan page as guaranteed and unthrottled, with no cron time limits — so a six-hour batch is not slowed as an allowance runs down or cut off when a wall-clock limit arrives. Encoding the way this article describes needs CPU that stays where you put it, and that is the difference the plans are actually selling.

Furthermore, both plans ship FFmpeg and FFprobe pre-built with full root and SSH access, on Ubuntu 24.04.3 LTS with CloudPanel by default, and cover H.264, H.265, VP9 and AV1 with HLS and DASH output. Work out your own split first with the planner below, then check it against what each tier can hold, since the plan decides the cores and the cores cap the FFmpeg threads.

FFmpeg Job and Thread Planner

Give it the cores you have, the resolution you are writing out, and the shape of the work. It returns the per-job thread count, how many jobs to run at once, and the command that runs them.

Arithmetic over published figures: the ceiling is the VP9 VOD recommendation for that frame size, and the core count is yours. It is a starting point to measure from, not a prediction of encode time.

See the FFmpeg hosting plans

A Practical Checklist: Setting FFmpeg Threads on Your Plan

Finally, work through this in order. Each item is answerable from the numbers this article has produced, and the sequence matters — a split calculated before the ceiling is known is a guess with arithmetic attached to it.

  • Throttling ruled out first, with a timed run, before any thread number is chosen.
  • Output resolution written down, since that is what sets the ceiling.
  • Codec ceiling read off for that resolution: two below 720p, four at 720p and 1080p, eight above.
  • Effective cores known from the plan allocation rather than from the processor count reported by the machine.
  • Per-job thread count set to the lower of those two figures, never to the higher.
  • Work classified as one deadline file, a queue, or a ladder, because each takes a different split.
  • Leftover cores assigned to concurrent jobs rather than to a larger thread number.
  • Source and destination confirmed to sit on local storage before concurrency is raised.
  • The chosen split timed once against the previous arrangement, so the change is measured rather than assumed.

Overall, the discipline this article asks for is small: read one published ceiling, compare it against one allocation, and spend the difference on jobs instead of on FFmpeg threads. That is a few minutes of arithmetic, and on an eight-core box running routine 1080p work it is the difference between using half the machine and using all of it.

Frequently Asked Questions About FFmpeg Threads

Does setting FFmpeg threads to 16 speed up a 1080p x264 encode on 8 vCPU?

Typically, no, and it can cost you a little. The useful thread count at 1080p is set by how the codec divides the frame, not by how many cores you own, and Google publishes four threads as the recommended figure at that resolution. Threads beyond the point the encoder can use still get scheduled, which spends CPU on switching between them rather than on encoding. The budget table below gives the ceiling for each AHosting tier.

How many threads should I use for FFmpeg encoding in 2026?

Specifically, start at the lower of two numbers: your available cores, and the useful ceiling for your output resolution. At 720p and 1080p that ceiling is four; at 1440p and above it rises to eight. The WebM project puts the general recommendation at the number of real cores minus one. Anything above the lower of those two figures buys scheduling overhead rather than speed.

How many FFmpeg threads can an AHosting FFStart plan actually use in 2026?

Notably, FFStart ships four vCPU, described on the plan page as guaranteed and unthrottled, so four is both the core count and the practical ceiling for a single 1080p job. One encode at four threads therefore uses the whole plan. Above 1080p the codec can use more threads than the plan has cores, which makes four the binding limit rather than the codec.

FFmpeg threads vs parallel jobs: which finishes a batch of encodes faster?

In practice, parallel jobs win once your core count exceeds the codec’s useful thread ceiling. A single job cannot spend cores the encoder has no work for, whereas a second independent job has its own frames to divide and starts using them immediately. Below the ceiling the two are equivalent, which is why the crossover lands at eight cores for ordinary 1080p work.

AHosting FFStart vs FFPower: how many parallel jobs and FFmpeg threads each in 2026?

Ultimately, FFStart’s four vCPU suit one 1080p job at four threads, while FFPower’s eight vCPU suit two concurrent jobs at four threads each. That difference is the whole argument for the larger plan on batch work: the second job is what converts the extra four vCPU into finished files. Both plans advertise guaranteed, unthrottled vCPU and no cron time limits.

Why does raising the x265 frame thread count sometimes reduce performance?

Fortunately, the x265 project states this outright rather than leaving it to be discovered. Frame threads each allocate a large amount of memory, and the reference lag between frames limits how much genuine parallelism is available, so beyond the auto-detected count the extra frame encoders often reduce performance. The encoder already reads your core count and picks a figure from it.

What is the FFmpeg thread budget, and how do I calculate mine?

Accordingly, the thread budget is two numbers compared: the cores your plan allocates, and the useful thread ceiling for your output resolution. The lower one is your per-job thread count, and the cores left over are what you fill with a second job rather than with more threads. The named table below works this through for all six AHosting tiers.

What does the FFmpeg threads option actually control during encoding?

Indeed, it controls how many workers the encoder is permitted to start, not how much parallel work exists for them to do. The available work comes from the video itself, through the rows, tiles and frames the codec can process independently. Where the option is left at its default it resolves to the machine’s processor count, which is why it so often exceeds what the content can use.

How should I set FFmpeg threads for a five-rung HLS ladder on 4 vCPU?

For example, run the five renditions as five concurrent jobs at one thread each rather than five jobs in sequence at four threads. Each rendition is an independent encode of the same source, so the renditions supply the parallelism the frames cannot. Research on multi-representation encoding treats parallel renditions on multi-core CPUs as the standard approach for exactly this reason.

Does AHosting FFmpeg hosting throttle vCPU during long encodes in 2026?

Additionally, no: the FFStart and FFPower plan pages state guaranteed, unthrottled vCPU and no cron time limits, so a long encode is not slowed or cut short by an allowance running out. That is the difference from a shared container, where CPU speed is capped as a share of a core. Which situation you are in decides whether this article or the diagnostic in the previous post applies.

Related posts:

Slow FFmpeg encoding diagnostic showing CPU speed limits by hosting plan and the wall-clock floor each one sets — AHosting.Slow FFmpeg Encoding on Shared Hosting: Find Your CPU Cap Default ThumbnailChoosing Reliable FFmpeg Hosting ffmpeg hosting 2026 workflow diagram — AHostingFFmpeg Hosting for Video Creators: The Complete 2026 Guide Cutting Down Video SizeFive Tips For Cutting Down Video Size Without Killing Quality
«OV SSL vs DV: What the Extra Money Actually Buys
AI Crawler Traffic Is Now a Hosting Cost: 65,044 Fetches, Measured»

Categories

  • CMS
  • Concrete5
  • Drupal
  • FFmpeg / Video Hosting
  • Hosting Guides
  • How To
  • Joomla
  • Security
  • SEO
  • Uncategorized
  • Video Content
  • Web Hosting News
  • WooCommerce
  • WordPress

Lets Connect!

  • X
  • Facebook
  • LinkedIn
  • Instagram
  • YouTube
  • Pinterest
Ahosting Logo

Hosting

  • WordPress Hosting
  • Web Hosting
  • FFmpeg Hosting
  • WooCommerce Hosting
  • Reseller Hosting
  • VPS Hosting
  • Dedicated Server

Domain

  • Register a Domain
  • Domain Transfer
  • Premium SSL Certificate

Support

  • Knowledge Base
  • Abuse Report
  • Submit A Ticket

Company

  • Compare Hosts
  • About Us
  • Datacenter
  • Contact Us
  • Blog
  • Sitemap

Legal

  • Privacy Policy
  • Terms of Service
  • Acceptable Use Policy
  • Service Level Agreement
  • Resource Abuse Policy
  • Hosting
    • WordPress Hosting
    • Web Hosting
    • FFMpeg Hosting
    • WooCommerce Hosting
    • Reseller Hosting
    • VPS Hosting
    • Dedicated Server
  • Domain
    • Register a Domain
    • Domain Transfer
    • Premium SSL Certificate
  • Support
    • Knowledge Base
    • Abuse Report
    • Submit A Ticket
  • Company
    • About Us
    • Datacenter
    • Contact Us
    • Blog
    • Sitemap
  • Legal
    • Privacy Policy
    • Terms of Service
    • Acceptable Use Policy
    • Service Level Agreement
    • Resource Abuse Policy

Copyright © 2026 All Rights Reserved

Ahosting, Inc. BBB Accredited Business, A+ rating
Facebook X/Twitter Instagram LinkedIn YouTube
FFmpeg hosting FFStart 4 vCPU · 8 GB $16.79/mo 24-month term · $402.96 today 24-mo · $402.96 · renews same Order now →

WordPress

WP Bronze $2.79/mo WP Silver $3.79/mo WP Gold $4.79/mo Compare WordPress

WooCommerce

WooStart $3.79/mo WooPower $16.79/mo Compare WooCommerce

FFmpeg

FFStart $16.79/mo FFPower $28.79/mo Compare FFmpeg

Web hosting

Bronze $2.79/mo Silver $3.79/mo Gold $4.79/mo Compare Web hosting
Order FFStart · $16.79/mo 24-mo