You type 250 into the scratchpad, line select it next to a waypoint on the LEGS page, and the 737 puts FL250 there. Not 250 knots. A flight level, five miles up, at a waypoint you wanted crossed at 250 knots.
Or you type 250/, line select, and get INVALID ENTRY for your trouble.
This is the single most common CDU frustration on the 737, and it is not a bug in your add-on. The LEGS page speed/altitude field follows a small set of formatting rules that are entirely consistent once you know them — and completely opaque until you do. This guide is the reference: every format that works, every format that does not, why the FMC rejects what it rejects, and what actually happens when you delete something.
If you have not programmed a 737 FMC before, start with the PMDG 737 FMC tutorial or the page-by-page CDU explainer and come back. This guide assumes you can already get a route and a STAR into the box.
Where constraints live, and how to read them
Waypoint crossing restrictions live in the right-hand column of the RTE LEGS page, one per waypoint line, and you enter them by pushing the right-side line select key next to the waypoint.
The most important thing on that page is not the numbers — it is the font size.
- Large font = a restriction. Either it came from a coded procedure (a SID, STAR or approach out of the navigation database) or you typed it in. VNAV is obliged to honour it.
- Small font = an FMC prediction. It is what the FMC currently expects to cross that waypoint at, given everything else in the profile. It is not a restriction and it constrains nothing.
That distinction explains a lot of confused forum posts. A waypoint showing 250/8000 in small font is not going to hold you to 8,000 feet. It is the FMC telling you what it thinks will happen. Only large font commits.
On newer FMC software you get two more visual cues: an active restriction is displayed in magenta (and it does not have to be on line 1 to be the active one), and a restriction you have modified but not yet executed is shaded white until you press EXEC.
And as with everything on a Boeing CDU, nothing you type is real until EXEC. The page title flips to MOD RTE LEGS the moment you make a change, an ERASE prompt appears at 6L, and it stays that way until you either execute or erase. If EXEC and the staged-modification idea are new to you, the FMC programming guide covers the workflow end to end.
The one rule that explains most rejections
Boeing calls it the Data Pairs rule, and it is buried in the data entry section of the FCOM rather than anywhere near the LEGS page. It governs every CDU field that shows two values separated by a slash — wind direction/speed, and, crucially, waypoint speed/altitude.
The rule: when you enter only one value of a pair, whether you need the slash depends on which value it is.
- The outboard value — the one further from the centre of the display — does not need a slash.
- The inboard value — the one nearer the centre — must carry the slash.
Omit a required slash and you get INVALID ENTRY.
On the right-hand LEGS column the field reads 250/8000A. The altitude is on the right, furthest out: altitude is outboard. The speed sits inboard.
So:
- Altitude alone needs no slash.
10000Ais a complete, valid entry. - Speed alone needs a trailing slash.
250/— the slash tells the FMC that the number is the inboard half of the pair.
And now the 250 mystery solves itself. Type a bare 250 with no slash and the FMC reads it as the outboard value — an altitude. Three digits means hundreds of feet, so 250 is FL250. The FMC did exactly what you asked. You asked wrong.
Altitude entry: three, four, five digits, or FL
Altitudes go into the 737 FMC in four forms, and the FMC decides for itself how to display what you typed based on the transition altitude.
| Form | Meaning | Examples |
|---|---|---|
Three digits (xxx) | Hundreds of feet. Leading zeros required. | 008 = 800 ft, 115 = 11,500 ft, 250 = FL250 |
FLxxx | Same as three digits, explicitly | FL008, FL115, FL250 |
Four digits (xxxx) | Feet, to the nearest ten. Leading zeros required. Only valid up to 9,994 ft. | 0050 = 50 ft, 8500 = 8,500 ft |
Five digits (xxxxx) | Feet, to the nearest ten. Used above 9,994 ft. | 08500, 11500, 25000 |
Two things trip people up here.
Leading zeros are not optional. 800 feet is 008, not 8. 1,500 feet is 015 or 1500, never 150 (that is 15,000 feet).
What you type is not what you see. The FMC re-formats your entry according to the transition altitude. With a transition altitude of 4,000 feet, typing 08500 displays as FL085; with a transition altitude of 18,000 feet, 8500 stays 8500. Same aeroplane, same altitude, different display. Do not chase it — it is not an error.
So 10000A is a five-digit entry meaning at or above 10,000 feet, and depending on the transition altitude it comes back at you as 10000 or FL100.
The A and B suffixes
This is the core of it, and it is one sentence in the FCOM: an altitude followed by A or B signifies a requirement to be "at or above" or "at or below" that altitude at the waypoint.
| You want | You type | Example |
|---|---|---|
| At this altitude, exactly | The altitude, no suffix | FL240, 8000, 270 |
| At or above | Altitude + A | 220A, 10000A, FL180A |
| At or below | Altitude + B | 240B, 8000B, FL180B |
A for Above, B for Below. It is the one piece of CDU syntax that is genuinely mnemonic.
The suffix goes on the end of the altitude, after the digits, and it works with any of the four altitude forms — 18000A and FL180A are the same entry.
The plate notation maps straight across: a line under the altitude is at-or-above (A), a line over it is at-or-below (B), lines above and below is a hard "at". Our SIDs and STARs guide covers the chart side if that symbology is the unfamiliar half.
The suffix on the page: FL240A applied at a waypoint on the LEGS page — an at-or-above crossing restriction, rendered by our own 737 CDU trainer.
Speed entry, and the honest caveat
Airspeeds are three digits, in knots. 250, not 25 and not 0250.
The FCOM documents three speed forms, all carrying the trailing slash because speed is the inboard value:
| You want | You type |
|---|---|
| At this speed | 220/ |
| At or above | 250A/ |
| At or below | 250B/ |
Note where the suffix sits: between the digits and the slash. 250B/, not 250/B and not B250/.
Here is the caveat, and it matters more in the sim than in the real aeroplane. Speed suffixes are FMC-software-dependent. The current FCOM documents 250A/ and 200B/ plainly. PMDG's own 737NG FMC manual, written against an older FMC standard, states flatly that above-and-below modifiers are not possible for airspeed constraints. Both are accurate about the box they describe. Which behaviour you get depends on which FMC update your add-on models — so if 250B/ bounces, try the plain 250/ form rather than assuming you mistyped.
There is a second, more widely reported wrinkle. The FCOM procedure explicitly permits an entry of speed only, followed by a slash — but a great many pilots and simmers report a bare 250/ being rejected at a waypoint that has no altitude restriction. PMDG's manual puts the rule the strict way: speed constraints must always be entered in association with an altitude constraint. Its own worked examples, though, list 310/ as a valid way to update the speed of a constraint that already exists.
That reconciles cleanly, and it is the practical rule worth memorising:
A speed-only entry reliably updates an existing constraint. It does not reliably create one from nothing.
If you want a speed at a waypoint that currently shows only a small-font prediction, pair it with an altitude. If ATC gave you a speed and no altitude, the common technique is to pair it with a deliberately toothless at-or-above altitude — 250/1000A — which satisfies the format without meaningfully constraining the vertical profile. It is a workaround, not a Boeing procedure, but it is what the box will accept.
Type it, do not just read it. The formats in this guide take about ten minutes to make permanent if you actually key them. The LEGS Constraints: Crossing Restrictions scenario in our browser 737 CDU trainer walks you through hanging real crossing restrictions on real waypoints, with instant feedback when the format is wrong. No sim, no add-on, no install.
Get flight sim tips in your inbox
New guides, checklists, and tips — no spam. Unsubscribe any time.
Combined speed and altitude
The full form is what you will use most on an arrival: speed, slash, altitude, optional suffix.
250/10000A 250 kt or more, at or above 10,000 ft
280/FL240 280 kt, at FL240
210/8000B 210 kt, at or below 8,000 ft
250/8000A the FCOM's own LEGS page example
Both halves present, one slash, suffix on the altitude. This form always works, on any FMC standard, which is a large part of why the "pair it with an altitude" workaround above is such a reliable habit.
The full Data Pair on the page: 240/10000B — 240 knots, at or below 10,000 feet — entered as one LEGS-page entry.
The PMDG manual lists the leading-slash forms too — /FL180 and /18000 update the altitude only. These are equivalent to typing the altitude bare; the leading slash is permitted but never required for the outboard value.
Window constraints: 220A240B, and why you cannot type it
Sometimes a procedure requires you to cross a fix between two altitudes. On the LEGS page this shows as a window, and the ordering is fixed: lower limit first, upper limit second.
The FCOM's display example is 14000 FL240 — at or above 14,000, at or below FL240. Written with suffixes, that same window is 220A240B: the lower limit carrying A, the upper carrying B.
Get the ordering backwards and you have written something impossible. 240A220B reads as at or above FL240 and at or below FL220 — a window with the floor above the ceiling. No aeroplane satisfies it and no FMC will build a path through it. If you find yourself typing an A value higher than the B value, you have the two the wrong way round.
The practical point, though, is this: on the 737 you cannot key a window in as a single entry. Windows arrive pre-coded from the navigation database as part of a published procedure. Manually, you get to enter one altitude constraint per waypoint — an A, a B, or a hard altitude — and that is the whole toolkit. The FCOM's own entry procedure bears this out: it lists speed-and-altitude, speed-only and altitude-only, and says nothing about entering two altitudes.
If ATC hands you a window verbally, pick the limit that is actually going to bite. Usually that is the at-or-below on a descent — the ceiling you have to get under — and you fly the floor by watching the altitude.
What a new entry does to the old one
The FCOM is unambiguous, and this is the note people miss:
This changes any prior speed and altitude restriction at this waypoint.
A new entry replaces the whole pair. Not merges — replaces. If a STAR coded 250/12000A at a fix and you enter FL200, you have not added an altitude alongside the existing speed. You have replaced both halves, and the 250-knot restriction is gone.
This is the mechanism behind the classic "why did my aeroplane speed up on the arrival?" question. Someone re-entered an altitude to comply with a new clearance and quietly binned the speed restriction that came with it. If you want to change one half and keep the other, enter both halves. Type 250/FL200, not FL200.
It also means a manual entry cleanly overrides a database window. Type a single 240B at a waypoint coded 220A240B and the window becomes a plain at-or-below. Sometimes that is exactly what you want; make sure it is deliberate.
Deleting a constraint, and what comes back
The procedure is three steps and one key:
- Press DEL. The word
DELETEappears in the scratchpad. - Line select to the right-hand LSK of the waypoint.
- Press EXEC.
The title goes MOD, then back to ACT, and the restriction is gone.
What replaces it is the interesting part. The FCOM: the restriction is deleted and replaced with an FMC predicted value (small size characters). The number does not vanish — it turns into a small-font prediction of what the FMC now expects to cross at, with the restriction removed from the calculation.
That behaviour gives you a genuinely useful trick, and it is a favourite on the PMDG forums. Delete a constraint without executing, read the small-font number the FMC puts in its place, then press ERASE. You have just asked the FMC "what would you do if this restriction weren't here?" and got a straight answer, with nothing committed. It is the fastest way to find out whether a crossing restriction is the thing wrecking your descent profile.
Two things that catch people:
- Deleting a procedure constraint deletes it. DEL does not "restore the database value" — the database value is what you are deleting. To get it back, re-select the procedure on the DEP/ARR page, or type the constraint in by hand.
INVALID DELETEmeans you pressed DEL and then line selected a field the delete function does not apply to. Clear it and select the right line. It is a different failure fromINVALID ENTRY, which is about format.
Constraints can also be deleted from the CLB or DES page, on the AT XXXXX line that shows the current VNAV altitude target. Same effect, different door.
Why the FMC rejected your entry
INVALID ENTRY means, in Boeing's words, attempted data entry has incorrect format, range, etc. for the selected data line. Here is the checklist, roughly in order of how often each one is the culprit:
You omitted the trailing slash on a speed. The commonest of all. 250 is an altitude. 250/ is a speed.
The waypoint is not on a climb or descent leg. The FCOM procedure is titled Entering Waypoint Speed and Altitude Restriction (On Climb or Descent Legs Only). Cruise legs do not take waypoint restrictions. If you want a crossing restriction at a fix the FMC currently considers level cruise, you generally need to change the vertical picture first — lower CRZ ALT, or put the constraint at a fix that is genuinely in the descent.
The altitude is at or above cruise altitude. Barometric altitude restrictions must be below the cruise altitude to be valid. Trying to hang FL350 on a waypoint while CRZ ALT is FL350 will not work. Lower CRZ ALT first.
Wrong digit count, or missing leading zeros. 8 is not 800 feet. 150 is not 1,500 feet. Three digits are hundreds; four and five are feet.
Suffix in the wrong place. 250B/, not 250/B. 10000A, not A10000.
You tried to enter a window in one go. Covered above — one altitude constraint per waypoint, manually.
Speed-only at a waypoint with no existing constraint. Pair it with an altitude.
The messages that are not rejections
Some scratchpad messages mean your entry was accepted and the aeroplane is the problem. Do not retype the constraint when you see these.
UNABLE NEXT ALTITUDE— VNAV cannot meet the next flight plan altitude constraint. On a climb, consider MAX RATE or MAX ANGLE CLB, or a different N1 limit. It only appears with VNAV engaged.UNABLE YYY KTS AT XXXXX— the next waypoint speed restriction cannot be met. Modify the plan or accept it.DRAG REQUIRED AFTER XXXXX— a waypoint speed constraint sits more than 10 knots below the predicted speed there. Speedbrake, or plan to be slower earlier.
All three are telling you the profile is not flyable as programmed, which is a different conversation from a syntax error. The VNAV descent guide covers what to do about an unflyable descent profile in detail.
The 250/10000 trap: LEGS versus CLB and DES
The string 250/10000 appears on the 737 CDU in two places and means two completely different things. This confuses people constantly.
On a LEGS waypoint line, 250/10000 is a crossing restriction: cross this waypoint at 250 knots and 10,000 feet.
On the CLB or DES page SPD REST line, 250/10000 is a speed-below-an-altitude rule: fly no faster than 250 knots until passing 10,000 feet. It is not attached to any waypoint. 250/10000 is the FMC's own default for airports with no coded speed restriction in the database.
One more thing worth knowing about the SPD REST line: overwrite the default and it does not come back. The FCOM's example is exact — overwrite 250/10000 with 230/3000 and once you pass 3,000 feet there is no speed restriction at all, and VNAV accelerates to the unrestricted climb speed. It does not revert to 250 below 10,000. If you are going to touch that line, know that you have replaced the low-altitude speed limit rather than added to it.
Changing constraints in flight without the CDU
Once airborne you often do not want to be typing at all, and two glareshield switches do constraint work directly.
ALT INTV deletes FMC altitude constraints one at a time. Set the MCP altitude first — higher than the constraints in a climb, lower in a descent — then each push deletes one constraint. In a descent, once all the FMC altitude constraints are gone, VNAV reverts from a path descent to a VNAV speed descent, which is a large change in how the aeroplane behaves.
SPD INTV hands the speed target to the MCP without touching the box. Push it, dial what you want, VNAV stays engaged; push it again and the FMC's own speed comes back.
These are the right tools for a tactical ATC instruction. The CDU is the right tool when the plan has changed.
Practise the formats until they are automatic
Constraint syntax is muscle memory. Reading it once is not enough — the time to discover that you type 250/ and not 250 is not while you are being vectored.
Our browser-based 737 CDU trainer runs the real page flow with step-by-step scenarios and instant feedback. For this material specifically:
- LEGS Constraints: Crossing Restrictions — the direct companion to this guide. Hang crossing restrictions on real waypoints and get told immediately when the format is wrong.
- Descent Setup (DES + FORECAST) — where constraints meet the descent path, including the SPD REST line and its
240/10000-style pairs. - The EXEC Light — Boeing's Commit Step — free. If MOD and EXEC still feel vague, do this one first; every constraint entry in this guide depends on it.
- SID and STAR: KPHX to KLAS — free. Get a real arrival and its coded constraints into the box, which is the raw material everything above operates on.
Related guides
- The Boeing 737 CDU / FMC Explained: Every Page — the page-by-page tour, if you want the wider map.
- PMDG 737 FMC Tutorial — full preflight programming, start to finish.
- FMC Programming Guide — the generic airliner FMC workflow and the EXEC discipline.
- VNAV Descent Guide — what the FMC does with these constraints once you are descending through them.
- SIDs and STARs Explained — the chart side, and where the coded constraints come from.
Get the syntax right and the 737's vertical navigation stops feeling arbitrary. Most of what looks like VNAV misbehaving is VNAV honouring exactly what is in the box — which is why knowing precisely what you put there is the whole game.




