The flight attendant works their way down the aisle with the meal trolley. You asked for a gluten-free option when you booked, six weeks ago, confirmed it again when you checked in online. The attendant pauses at your row, checks a printout, and delivers the news: there's no special meal recorded for your seat. There are two standard options left — a chicken pasta and a beef lasagne. Both contain gluten. You are eleven hours into a thirteen-hour flight.
This happens more often than airlines like to admit. Special-meal failures are consistently the most common in-flight service complaint, and they almost always trace back to the same root causes: a request made through the wrong channel, a codeshare arrangement that didn't transfer the preference, or a request placed inside the window the caterer needs to fulfil it. Understanding how the system works — and where it routinely breaks — is the difference between a meal you can eat and a long hungry stretch over the Atlantic.
The meal code system
Airlines don't order meals by description. They use a standardised set of four-letter codes maintained by the International Air Transport Association (IATA), which tell the caterer exactly what to prepare for a given passenger. Knowing the code for your requirement is useful because it's the term you'll see in booking systems and the term staff use when they're checking the manifest.
The codes most passengers encounter:
- VGML — vegan (no animal products of any kind).
- VLML — vegetarian lacto-ovo (eggs and dairy permitted).
- GFML — gluten-free.
- KSML — kosher (prepared under rabbinical supervision, sealed on board).
- MOML — Muslim/halal.
- HNML — Hindu (no beef, sometimes no meat at all depending on carrier).
- DBML — diabetic (low sugar, controlled carbohydrates).
- NLML — low sodium/salt.
- LPML — low protein.
- CHML — child meal (typically age two to twelve).
- FPML — fruit plate.
- SFML — seafood.
- BLML — bland (low spice, easy to digest — useful after surgery or during illness).
- SPML — special meal (catch-all for requirements that don't fit a standard code; requires a free-text note and is the most error-prone option).
Not every airline supports every code. Budget short-haul carriers that operate a buy-on-board model don't offer special meals at all — the options are what's in the trolley, no exceptions. Full-service carriers on medium and long-haul routes generally support the full IATA list, but the quality and range of what arrives under each code varies considerably by airline and route.
When and how to request
The standard window is 24 to 48 hours before departure for most codes on most carriers. Some meal types require more notice: kosher meals (KSML) typically need 72 hours because they're sealed and certified, and some airlines ask for up to 96 hours on transpacific routes where catering logistics are more complex. Requesting at the time of booking is always the safest approach — it gives the caterer the most lead time and avoids the risk of forgetting when the flight is months away.
The request channel matters. Requests made through the airline's own website or app, via the “manage my booking” function, are the most reliable — they go directly into the Passenger Name Record (PNR) and are transmitted to the caterer automatically. Requests made through a third-party booking site (an OTA, a travel agent, a metasearch engine's checkout) depend on the OTA passing the preference through to the airline's reservation system, which doesn't always happen correctly. If you booked via a third party, log into the airline's own website after booking and confirm the special-meal preference directly in the manage-booking flow.
Some airlines also allow special-meal requests at check-in, either online or at the desk, if you're within 24 hours of departure. This is a last resort — the caterer may not have time to fulfil it — but it's worth attempting if you're approaching the flight without a confirmed meal preference. Call the airline if online check-in doesn't show a special-meal option.
Key tip
After requesting, screenshot or save the confirmation. When you check in online, look for the meal code in your booking details. If it doesn't appear, call the airline before you reach the airport — not at the gate, where it's too late.
Allergies are a different conversation
There is an important distinction between a dietary preference (vegan, vegetarian, religious) and a life-threatening food allergy. Airlines treat these very differently, and conflating them creates dangerous expectations.
Most airlines will not guarantee an allergen-free environment on board. A carrier can provide a peanut-free meal under a VGML or GFML code, but cannot control what other passengers bring on, what has been in the galley, or trace contamination in catering facilities. UK and EU regulations require airlines to provide allergen information for the foods they serve, but they stop short of mandating allergen-free cabins.
If you have a severe allergy to nuts, shellfish, sesame or any other airborne allergen, the safest approach is a combination of actions: request a relevant special meal so your food is as safe as possible, carry two sets of epinephrine auto-injectors in your hand luggage (not the hold), inform the crew during boarding so they are aware, and consider whether to request that the surrounding rows avoid the allergen — some airlines will issue a cabin announcement on request, though they cannot enforce compliance.
Some passengers with severe nut allergies book through airline allergy desks — a specialist contact route available at British Airways, Emirates, Singapore Airlines and a handful of others — rather than through standard online booking. These calls are logged differently and can trigger additional precautions. It is not a guarantee, but it is a more documented escalation path than a standard special-meal request.
Codeshares and interline tickets
Codeshare arrangements are one of the most common sources of special-meal failures. If you booked with airline A on a route that is physically operated by airline B, the meal is prepared by airline B's caterer — but the request has to travel from A's reservation system to B's. Data handoffs between reservation systems are imperfect.
The practical rule: after booking any codeshare or interline journey, check which airline actually operates each leg (it's usually listed next to the flight number as “operated by”), then log into that airline's own website and confirm your meal preference against your booking reference directly. Many operating carriers will accept a PNR from the marketing carrier and allow you to add meal preferences directly. If they won't, call them.
For multi-stop itineraries, repeat this for every leg with catering. Short hops under two hours often have no hot meal service at all — this is worth checking with the flight details toolor the airline's route information page.
What to do when your meal isn't there
Despite a confirmed request, the meal doesn't always make it onto the aircraft. Catering is loaded by ground crews against a manifest, and errors happen. When you reach your seat, you can ask a flight attendant to check the catering list before service begins — they have a printed or tablet-based record of all special meals on board. If your meal is on the list but hasn't been loaded, the crew may be able to find it elsewhere in the galley.
If the meal genuinely wasn't loaded, your options on board are limited. The crew will work through the standard options to find the closest match they can. They cannot create a meal that wasn't catered. For medically significant dietary needs, ask the crew if any allergen information is available for the standard options — they should have a document listing ingredients or at least the main allergens.
After the flight, contact the airline's customer relations team. A failed confirmed special-meal request is a genuine service failure — airlines will typically offer a travel credit, miles or a partial refund of any meal cost if the failure was on their side. Keep your booking confirmation showing the meal request as evidence.
Bringing your own food
For passengers who can't rely on airline catering — severe allergies, very specific religious requirements, or simply a long flight on a carrier with limited meal options — bringing food from home or from the terminal is a reliable backup strategy.
The security rules are the same as for any liquid or food item. Liquids over 100ml are not permitted through UK and EU airport security in hand luggage (soups, sauces, yoghurt, hummus all count as liquids). Solid foods — sandwiches, dry snacks, fruit, wrapped meals — are generally fine through the scanner. Anything purchased airside after the security checkpoint can be brought on in any quantity.
The trickier consideration is customs on arrival. Most countries restrict the import of animal products — meat, dairy, honey — and some restrict fresh fruit and vegetables. Bringing a chicken sandwich to eat on the plane is fine; landing with leftover chicken in your bag in Australia or New Zealand is not. Eat what you bring or bin it before landing. Our packing checklist includes a customs reminder for common restricted items worth checking before you travel.
Quick reference: request timelines by meal type
- Standard dietary codes (VGML, VLML, GFML, DBML, NLML, etc.): 24–48 hours before departure. Request at booking; confirm at online check-in.
- Religious meals (KSML, MOML, HNML): 48–72 hours minimum; some routes require 96 hours. Book well in advance.
- SPML (custom/catch-all): As early as possible; call the airline rather than entering free text online, as these are the most error-prone.
- Severe allergy: Request via the airline's allergy or special assistance desk at booking; carry your own medication regardless.
The system isn't perfect, but it works reliably when used correctly. The combination of booking early, confirming the code in your PNR, and verifying directly with the operating carrier on codeshare legs eliminates the vast majority of in-flight meal failures. The failures that remain — genuine loading errors — are the airline's problem to fix after the fact, and they usually will.
