Skip to content
DemoIndustriesBlogToolsComparePricingGet Started Free

Finite Capacity Scheduling: What It Actually Means for a Small Shop

The term nobody tells a shop owner

Most owners run into finite capacity scheduling the hard way, years before they hear the phrase. You promise six jobs for Friday. Friday arrives with four of them done. Nobody was lazy and no machine broke. The week just never had room for six, and nothing in your planning ever said so.

That gap has a name. Understanding it is the difference between a schedule you argue with and a schedule you can run.

What finite capacity scheduling means

Finite capacity scheduling means building a schedule against the capacity you actually have. Every machine runs one job at a time. Every operator is in one place at a time. The schedule can only place work where there is genuinely room for it, so a mill booked from 9 to 2 cannot take another job from 9 to 2, no matter how urgent the second one is.

That is the whole idea. It sounds obvious written down, which is exactly why it catches people out: almost every tool a small shop actually uses breaks the rule.

Finite vs infinite capacity scheduling

Infinite capacity scheduling asks when a job should run. Finite capacity scheduling asks when it can. Infinite is probably what your shop runs on today, whether you chose it or not.

Infinite capacity planning starts at the due date and works backwards. The job takes ten hours, the customer wants it Thursday, so it starts Wednesday afternoon. Nothing in that arithmetic asks whether the machine is free Wednesday afternoon. Do it for forty jobs and you get a plan where every job looks fine on its own line and the shop is booked at 180% on Wednesday.

Finite capacity scheduling places jobs against each other on one timeline. When there is no room, the schedule says so instead of stacking. Same input, two very different outputs.

The same week, planned both ways

One mill. One week, Monday to Friday, 8 hours a day, so 40 hours of machine time available. Five jobs are due.

Job Hours needed Due
A 12 Wednesday
B 10 Wednesday
C 14 Thursday
D 9 Friday
E 8 Friday

That is 53 hours of work in a 40 hour week. The shortage is already there, sitting in the numbers, before anyone schedules anything.

Scheduled at infinite capacity, each job is placed backwards from its own due date:

Job Starts Finishes Status in the plan
A Tue midday Wed end of day On time
B Tue afternoon Wed end of day On time
C Wed morning Thu end of day On time
D Thu afternoon Fri end of day On time
E Fri morning Fri end of day On time

Five out of five on time. Every line is individually correct: each job really does take that long and really would finish by its due date if it had the machine. Look at Wednesday, though, and jobs A, B, and C are all running on the same mill at once. The plan has quietly invented a second and third machine.

Scheduled at finite capacity, jobs go on one at a time, in due date order, and each one starts when the mill is actually free:

Job Starts Finishes Due Status
A Mon 8am Tue midday Wed On time
B Tue midday Wed 2pm Wed Tight, on time
C Wed 2pm Fri midday Thu Late by 4 hours
D Fri midday Mon 1pm Fri Late by 5 hours
E Mon 1pm Tue 1pm Fri Late by 13 hours

Two make it. Three do not.

Nothing changed between the two schedules. Both weeks contain 53 hours of work and 40 hours of machine time. Both weeks end with three jobs late. The infinite capacity plan did not cause the shortage and the finite capacity plan did not fix it. All that changed is when you found out, and therefore what you could do about it.

On Monday morning, 13 hours short is a set of decisions: run Saturday, move one date with a customer who will probably say yes, subcontract job E, or call the customer on job C now while there is still goodwill in it. On Thursday afternoon, the same 13 hours is a fire, three apologies, and a weekend nobody planned.

How to tell which one you are running

What you use Which it does Why
Spreadsheet Infinite A cell holds anything you type. Two jobs on one machine on one day is not an error, it is just text.
Google Calendar Infinite It will stack four events at 10am without comment.
Whiteboard Roughly finite A row runs out of physical space, which is a crude capacity limit. It will not tell you what the squeeze pushed late.
MRP or standard ERP Infinite Built to answer what to buy and when to release, not how to sequence Tuesday.
ERP with an APS module Finite Usually a paid add-on that needs shift calendars and setup matrices kept accurate.
A board that blocks double-booking Finite Capacity is enforced by refusal rather than optimized by a solver.

The quick test: try to book two jobs on the same machine at the same time. If the tool lets you and says nothing, it is scheduling at infinite capacity.

The infinite tools were never built to check capacity. MRP, for instance, explodes the bill of materials, subtracts the lead time, and hands over a start date. Capacity checking is either absent or sold separately as a finite scheduling module, which is one of the reasons full ERP is a poor fit for a small shop.

Finite is not the same thing as forward

These two pairs get used interchangeably, but they are different axes. Finite versus infinite is about whether the plan respects the capacity that exists. Forward versus backward is about which end of the calendar you start from: forward scheduling starts from now and works out the earliest a job can finish; backward scheduling starts from the due date and works out the latest it can safely start.

In practice, infinite systems tend to be backward and finite systems tend to be forward, which is why the terms get welded together. But you can schedule backwards and still respect capacity, and plenty of finite systems do exactly that in order to avoid starting everything as early as possible. If someone tells you their system does forward scheduling, that has not answered the capacity question.

When infinite capacity is genuinely fine

Infinite capacity planning is not simply wrong. It is the correct tool for the job it was built for.

Long-range material planning. When you are working out what steel to order eight weeks out, you do not care which machine runs on which Tuesday, and pretending to know would make the answer worse rather than better. This is what MRP does well and why it exists.

A shop with real slack. If your machines are at 45% utilization, the machine is usually free, and the assumption infinite scheduling makes is usually true. The cost of being wrong is low. Fix the utilization problem first, because a machine at 45% has a scheduling problem, not a capacity problem.

Rough feasibility on a quote. A quick backward pass tells you whether a date is even in the right ballpark before you spend time on a real schedule.

Infinite capacity becomes a problem in one specific situation: using it to plan a floor that is close to full. Which is most job shops, most weeks.

Why high-mix shops feel it worst

If you run high-mix, low-volume work, infinite capacity planning hurts more than it does anywhere else, for two reasons.

Setup is a large share of every job. In a long production run, changeover time disappears against the cutting hours. In a job shop, setup is often the main event, and infinite capacity planning tends to ignore it entirely or apply one flat number to every changeover. The capacity you thought you were scheduling was never there.

The mix moves under you. A rush order lands, an inspection kicks a job back, a customer pulls a date in. Each one re-sequences the floor. A backwards-scheduled plan cannot absorb that, because it was built on an assumption about a week that no longer exists by Tuesday.

Add both together and the plan promises capacity the shop does not own, then loses track of what it did own. That is the Wednesday scramble, and it is structural rather than personal.

What you get when capacity is finite

Three things change.

You find out early. The five-job week above is the whole argument: the shortage never changes, only how much room you have to respond to it. That room is worth more than any feature on a comparison table.

Your lead times get honest. When the schedule refuses to book a machine that is already busy, the date it gives you is a date the shop can actually hit. That is what lets you quote lead times you can defend instead of padding everything by two weeks and losing the order to a shop that quoted straight.

Double-booking stops being possible. Not less likely, not caught at standup. Not possible. That single constraint removes an entire category of lost hours, which is why it is the highest-value thing most shops fix first. The habits that get you there are further down this page.

Working out what your capacity actually is

Scheduling against a finite number means knowing the number. Most shops have never worked it out, and the ones that have usually reached for the theoretical figure, which is the one that flatters the schedule and then leaves you short every Thursday.

Start with the basics. No spreadsheet required for this first pass.

Step 1: Count your available machine-hours

For each machine, multiply:

  • Hours per shift × shifts per day × days per week

Example: You run one 8-hour shift, 5 days a week, and you have 6 machines.

6 machines × 8 hours × 5 days = 240 machine-hours per week

That is your theoretical maximum. The actual number is lower.

Step 2: Subtract non-production time

Not every hour is production time. You need to subtract:

  • Setup/changeover time. Most shops lose 15-25% of available time to setups. If your setups average 20% of machine time, subtract 48 hours from the 240.
  • Planned maintenance. If each machine gets 1 hour of maintenance per week, subtract 6 hours.
  • Breaks and shift transitions. Maybe 30 minutes per machine per day for operator breaks and shift handoffs. That is 15 hours per week.

240 - 48 (setups) - 6 (maintenance) - 15 (breaks) = 171 practical machine-hours per week

That is your real capacity. About 71% of the theoretical max. This is normal for a well-run small shop.

Step 3: Know your bottleneck

Not all machines are equal. Your capacity is really determined by your most constrained machine.

If your VMC runs at 90% utilization but your lathe runs at 40%, your VMC is the bottleneck. Adding more lathe time doesn’t help. Every new job that needs the VMC competes with everything already on it.

Identify your bottleneck. That machine’s capacity is your shop’s true capacity for any job that needs it.

When to say no

Saying no to work is hard. Every job is revenue. But taking on a job you can’t deliver on time is worse than declining it.

Here are clear signals to say no (or push the deadline):

  • Your bottleneck machine is already at 80%+ utilization for the period the job needs it
  • The job requires a setup that would bump an existing job with a tighter deadline
  • You would need overtime to fit it in, and the margin doesn’t justify the overtime cost
  • You don’t have the material in stock and lead time puts the job at risk

Saying no today, with a clear explanation, keeps the relationship intact. Missing the deadline later does not.

Knowing the number is one half. Making the schedule respect it is the other, and there are two ways to buy that.

Two ways to do it, and the price gap between them

Finite capacity scheduling is a principle, not a product. There are two ways to put it into practice, and the industry tends to talk about only the expensive one.

The solver. Advanced Planning and Scheduling software models your capacity in detail (shift calendars, setup matrices, operator skills, tooling), then sequences the work for you and re-sequences when something changes. In a large plant with stable routings, that is genuinely powerful and earns its cost. In a shop with 3 to 30 machines, the license is the small part of the bill. The real cost is the modeling: an APS is only as good as the data you feed it, and keeping setup matrices accurate for a shop that runs forty different parts a week is a job nobody in a 12-person shop has time to do.

The board. Every machine and every job on one shared schedule, laid out against real time, where the system will not let two jobs occupy the same machine or the same person at once. No solver decides the sequence. You do, which in a small shop you were going to do anyway, because you know which customer waits and which one does not. The capacity is still finite. It is enforced by the tool instead of optimized by it.

This is the option most small shops are never shown, because it does not have a sales team. It is what a scheduling board is for, and for a small or mid-size shop it captures most of the benefit at a fraction of the cost and effort. Machestra is one of these: assign an operation to a machine or a person who is already busy and it refuses the booking and tells you which job is in the way.

Keeping two jobs off the same machine

Finite capacity is the principle. A double-booking is what its absence looks like on a Tuesday morning, with two operators and one machine. Five habits close the gap, and only one of them is software.

Keep one schedule

Not a whiteboard and a spreadsheet. Not a spreadsheet and your head. One system that everyone looks at and everyone updates.

Per-job paperwork is not a second schedule, so it does not count against this. A job traveler traveling with the parts tells one operator what to do with the job in their hands. It has no idea what the other twelve jobs are doing, which is exactly why it cannot catch a double-booking and the schedule has to live somewhere else.

When there’s one place to check, people check it. When there are three places, people check none of them.

Add conflict detection

This is the fix. When you assign a job to a machine, the system should check whether that machine is already booked at that time. If it is, the system should warn you before you save.

Spreadsheets can’t do this reliably. Whiteboards can’t do this at all. This is where scheduling software earns its cost. A $19/mo* tool pays for itself the first time it catches a double-booking.

Conflict detection doesn’t just prevent mistakes. It changes how you schedule. Instead of guessing whether a machine is free and hoping you’re right, you know. You schedule with confidence because the system checks for you.

Make the schedule visible to everyone

Your operators shouldn’t have to walk to the office to see the schedule. The schedule should be available on a phone, a tablet, or any browser. When the operator can check the schedule from the machine, they catch conflicts too.

More eyes on the schedule means more chances to catch a problem before it reaches the floor. If Operator A sees that Operator B is scheduled on the same machine at the same time, they’ll say something. But only if they can see it.

Handle rush jobs through the system

This is the hardest habit to build. When a rush job comes in, the instinct is to just commit and figure it out later. Force yourself to check the schedule first.

Open the schedule. Look at the machine. Is it free at the time you need? If yes, assign the job. If no, see what’s on it and decide whether to bump or reschedule.

This takes 30 seconds. It prevents an hour-long mess on the floor. The math works out.

Limit who can schedule

Not everyone needs to assign jobs to machines. The more people who can change the schedule, the more chances for conflicts. Pick one or two people to manage the schedule. Everyone else views it.

This doesn’t mean your team can’t give input. They can flag problems, suggest changes, and update job statuses. But the act of assigning a job to a machine at a specific time should go through a small number of people who coordinate with each other.

The part software cannot do for you

Finite capacity scheduling only works if the capacity numbers are true, and this is where most implementations quietly fail.

If you schedule from cycle time, the cutting number, you are still doing infinite capacity planning with extra steps. The load, the deburr, the walk to the tool crib, the inspection queue, and the setup are all real hours that a cycle time does not contain. Schedule from that number and your finite schedule confidently books capacity that does not exist, which is why jobs run late even when the machines are fine.

Time a few of your common part families door to door. You do not need a time and motion study, you need honest numbers on the ten jobs you run most. That is also the input the capacity arithmetic above depends on, so the work pays for itself twice.

When you actually need an APS

To be fair to the category, there is a point where a solver is the right answer. Look at buying one when you are running hundreds of jobs at once across dozens of work centers, when your routings are stable enough that a setup matrix stays accurate for more than a month, when sequencing decisions are too complex for a person to hold in their head, and when you have someone whose job includes maintaining the model.

If you are a 9-machine shop running aerospace and medical parts in small batches, you are almost certainly not there. What you need is one schedule that tells the truth about time and refuses to book a machine twice. The same question comes up now with the AI label on it, and the answer sorts out the same way: does a small shop actually need AI scheduling software.

Where to start

You can start on Monday without buying anything. Get honest process times for your ten most common jobs. Put every machine and every open job in one place. Then let nothing be booked twice, whether that rule is enforced by software or by one person owning the board.

If you want to see what the software version looks like, our guide to machine scheduling software for small shops walks through what to look for and what to skip, and the complete guide to job shop scheduling covers the mechanics underneath all of it.

Machestra is built on the board approach: your machines and your people on one board, real blocks of time, a hard stop when a job would put a machine in two places at once, and a flag on both jobs when an operator is booked twice. Finite capacity, without the APS price tag.

*All Machestra prices shown in USD. Actual price may vary based on your location.

Frequently asked questions

What is finite capacity scheduling?

Finite capacity scheduling means building a schedule against the capacity you actually have. Every machine runs one job at a time and every operator is in one place at a time, so the schedule can only place work where there is real room for it. If a mill is booked from 9 to 2, nothing else can be scheduled on that mill from 9 to 2. The plan you end up with is one the shop can physically run.

Is finite capacity scheduling the same as capacity planning?

No, they work at different distances. Capacity planning asks whether the shop as a whole can absorb the work coming at it over the next weeks or months, and the answer changes what you hire, buy, or turn down. Finite capacity scheduling asks where a specific job goes on a specific machine on a specific day. Planning tells you the week holds 40 hours and you have sold 53. Scheduling tells you which three jobs are the ones that will not fit.

Does MRP or ERP do finite capacity scheduling?

Most MRP systems schedule at infinite capacity by default. MRP was built to work out what to buy and when to start, not to sequence 12 machines on a Tuesday, so it explodes the bill of materials, backs off the lead time, and hands you a start date without checking whether the machine is free. Some ERPs sell a finite scheduling or APS module on top, usually as a paid add-on that needs shift calendars, setup matrices, and a consultant to configure.

What is infinite capacity scheduling?

Infinite capacity scheduling places every job where its due date says it should go, without checking whether the machine is free at that moment. It takes the due date, subtracts the job's hours and any lead time offset, and returns a start date. Because it never asks what else is already booked, it will happily place three jobs on one machine at the same time and report that all three are on schedule.

What is the difference between finite and infinite capacity scheduling?

The difference is whether the plan is allowed to exceed the capacity that exists. Infinite capacity scheduling schedules each job independently against its due date and assumes the machine will be free, so overloads are invisible until the floor hits them. Finite capacity scheduling schedules jobs against each other on a shared timeline and refuses to place work where there is no room, so the overload appears while you are still planning. The shortage is identical either way. The difference is whether you find out on Monday or on Thursday.

Is finite capacity scheduling the same as forward scheduling?

No, and the two get mixed up constantly. Finite versus infinite is about whether the plan respects real capacity. Forward versus backward is about which end of the calendar you start from. Forward scheduling starts from today and works out the earliest finish; backward scheduling starts from the due date and works out the latest safe start. In practice, infinite systems are usually backward and finite systems are usually forward, which is why people treat the pairs as the same thing, but you can schedule backwards while still respecting capacity.

Is infinite capacity scheduling ever the right choice?

Yes, for the job it was built for. Infinite capacity logic is the correct tool for long-range material and purchasing decisions, because when you are deciding what steel to order eight weeks out you genuinely do not care which mill runs on which Tuesday. It is also harmless in a shop running well below capacity, where the machine is usually free. It becomes a problem specifically when it is used to plan a floor that is close to full.

Do I need APS software for finite capacity scheduling?

No. Advanced Planning and Scheduling software is one way to do finite capacity scheduling, not the definition of it. APS runs a solver that sequences the work for you, which earns its cost in a large plant with stable routings. A shop with 3 to 30 machines gets most of the benefit from a shared scheduling board that shows real machine time and blocks a double-booking when you try to make one. The scheduling is finite either way. The difference is whether a solver sequences it or you do.

How do I start finite capacity scheduling in a small shop?

Start with three things. Write down honest process times, door to door, including setup, inspection, and moves, not just the cutting number. Put every machine and every open job on one shared schedule so you can see what is genuinely free. Then stop letting anything be booked twice, whether that is enforced by software or by one person owning the board. Most of the gain comes from the first and third steps, and neither one requires buying anything.

Why do machines get double-booked?

The most common cause is using a system that doesn't check for conflicts: spreadsheets, whiteboards, or memory. Two people schedule different jobs on the same machine without knowing about each other's plans. No conflict detection means no warning until it's too late.

How do I prevent double-booking machines?

Use a scheduling system with conflict detection. When you assign a job to a machine, the system should check whether that machine is already booked at that time and warn you before you save. Software is the most reliable version of this; one person owning a single shared board is the version that costs nothing.

Can spreadsheets detect scheduling conflicts?

Not on their own. You can build conditional formatting rules, but they're fragile, hard to maintain, and only catch conflicts you've anticipated. Purpose-built scheduling software handles this automatically.

How do I calculate my shop's capacity?

Start with available machine hours. Multiply the number of machines by the hours per shift, the shifts per day, and the days per week. Subtract the time lost to setups, planned maintenance, and breaks. The result is your practical capacity in machine-hours per week.

When should a small shop say no to new work?

When taking the job would push your schedule past the point where you can reliably meet deadlines on existing work. If you are already running above 80% utilization on your bottleneck machine, adding more work will cause delays across the board.

Start scheduling in under 10 minutes

3 machines. No per-user fees. No credit card. No time limit.

Get Started Free

Not ready? Grab the free job traveler template instead.