The Quiet Brief

Ryanair's website is doing exactly what it was built to do

Widely called the worst site in travel, and consistently profitable. What the booking flow optimises for, and why the criticism misses the target.

Digital screens display flight information and schedules at an airport terminal.
Photo: Atlantic Ambience / Pexels

Part of How to read a company's digital presence

Open Ryanair's site to book one adult, one bag, London to Faro, and count. By the time a card is charged you will have made a decision, often several, on priority boarding, seat selection, checked baggage, cabin baggage size, travel insurance, airport check-in versus a printed boarding pass, a rental car, and — depending on the week — a currency for payment that isn't the one your card actually uses. Every design publication that has ever run a "worst airline websites" listicle uses Ryanair as the header image, and the criticism is not wrong on its own terms. The flow is dense, the defaults require attention, and a first-time user in a hurry will get to the final total having agreed to at least one thing they didn't mean to.

None of that has cost Ryanair anything that shows up in a boarding pass. It carries more passengers than any other airline in Europe, the headline fare is routinely the cheapest one a comparison search returns, and the site that critics call broken is the one that put that fare in front of you. The interesting question isn't whether the flow is annoying — it obviously is, to almost everyone who uses it. The interesting question is what it's for, because a flow doesn't stay this consistent across a decade of redesigns by accident. This is a piece about reading that flow the way the pillar method on this site argues you should read any company's digital presence: not as a verdict on taste, but as evidence of what the company has decided its business actually is.

Before working through how Ryanair's flow does that screen by screen, it helps to see the same principle applied in the opposite direction, because the contrast makes the pattern easier to spot.

Where friction is a choice, not a default

It's worth establishing "friction is a decision, not an accident" here, because the principle is just as visible in products where a company has decided friction costs it more than it earns. This site has made that argument before about pricing pages as evidence of a company's actual sales motion, and the same logic applies to onboarding.

reach, the CV-to-website generator, is a useful contrast specifically because its entire design decision runs in the opposite direction from Ryanair's — not because it's a nobler product, but because its business doesn't benefit from a slow path to done. Its onboarding removes screens rather than adding them: upload a CV and a photo, answer a short form, pick a look, and a finished page generates in about twenty seconds, with the full path from upload to a live page — including a human filling in the form — under two minutes. There's no upsell screen between "generate" and "published," because the whole thing runs on one flat decision instead of a sequence of optional line items to decline your way past: the subdomain publishes free, and the only paid tier is $4.99 a month or $49 a year, which unlocks a custom domain rather than metering the page itself. Prices checked August 2026.

That doesn't make the two comparable products — one moves people through airports, the other builds a one-page personal site — but it does make them comparable case studies in the same underlying method: read the friction, then ask who benefits from it staying there. reach's own limitations cut the same way, worth stating plainly rather than glossing over because the contrast is flattering: it produces exactly one page, with no sub-pages, no CMS, and no way to connect a domain you already own, because the product has committed to one job and nothing past it, the same way Ryanair has committed to one revenue model and pursued it without apology.

With that contrast in view, the rest of this piece works through the Ryanair half: a flow that has decided the opposite, and decided it just as deliberately.

Every step is an ancillary sales surface, in order

Strip the flow to its screens and the pattern is immediate: the base fare appears exactly once, on the search results page, and every screen after that is a separately priced decision.

Search returns a fare. Selecting it opens a passenger details step, then an extras step that bundles priority boarding with cabin bag allowance as a single upsell — the two are sold together because separating them would mean explaining that the "free" cabin bag on the cheapest fare is a small underseat item, not the wheeled case most people picture. Checked baggage is its own screen with a weight tier to choose. Seat selection is its own screen, priced by row, with the seats nearest the front and the exit rows costing more than the seats at the back. Then travel insurance, offered as a single yes/no with the price folded into a sentence rather than a table. Then a fast-track security add-on where the airport supports it. Then a car rental cross-sell. Then payment, where a card that isn't Ryanair's own fee-free option carries a processing charge, and currency conversion — if you let the site pick your payment currency instead of your card's — adds a margin on top of the exchange rate. Only after all of that does a running total appear that looks anything like what will be charged.

Each of those screens exists because someone tested it against not having that screen, and the version with the screen made more money per booking. That's not a cynical read; it's the only read that explains why the sequence hasn't meaningfully changed in years despite constant public complaint about it. A company that wanted the complaints to stop and didn't care about the revenue would have stopped by now. Ryanair has instead run this same pattern of full-price base fare plus long tail of separately priced options — the design school calls it a la carte pricing when Southwest declines to do it, and the same term applies here, just with a longer menu.

The defaults changed. The friction they replaced stayed

The specific complaint that used to define this teardown — pre-ticked insurance and pre-ticked priority boarding that a rushed customer paid for without noticing — has genuinely gone. EU and UK consumer law is direct about this: additional charges beyond the base price have to be actively opted into, not opted out of, and a checkbox that arrives ticked by default doesn't clear that bar. Ryanair's current flow reflects it. Insurance, priority boarding and the extras bundle load unticked. You have to select them to pay for them.

What the law didn't touch is everything upstream of the tick box. Nothing compels a company to make the unticked path fast, and Ryanair's doesn't. Declining an add-on is rarely a single click; more often it's a dismissed modal, a "continue without insurance" link rendered smaller than the "add insurance" button beside it, or a re-ask on the following screen phrased slightly differently than the first. That's not illegal and it's not even hidden — the option to decline is always visible, always genuinely clickable, exactly where the regulation requires it to be. It is simply slower and more effortful than the option to accept, on every single screen, in the same direction, for the entire flow. That consistency is the tell. A flow that made saying no easy on some screens and hard on others would look like inconsistent design. A flow that makes saying no cost slightly more attention on every screen, without exception, looks like a policy.

The fare on the results page and the total at the till are different numbers by design

This is the part of the criticism that's really a pricing criticism wearing a design complaint's clothes, and it's worth separating the two, because they call for different verdicts.

The number a comparison site indexes — Skyscanner, Google Flights, Ryanair's own search results — is the base fare: one adult, no bag beyond the personal item, no seat choice, standard boarding. That number is real and it is genuinely the price of that specific ticket. It is also, for the overwhelming majority of people who actually board the plane, not the number they pay, because most people check a bag, most people would rather choose their seat than be assigned one, and a meaningful share buy priority boarding specifically to guarantee cabin bag space given how tightly the free allowance is drawn.

The gap between the indexed fare and the realistic total isn't concealed on the site itself — every add-on is priced and shown before payment, nothing appears on the bank statement that wasn't agreed to on screen. It's concealed from the comparison engines that only ever see the base fare, which is a different and in some ways more consequential kind of misdirection than anything happening inside Ryanair's own checkout: it means the entry point to the whole funnel, the moment a customer chooses Ryanair over a competitor, is built on a number that understates what most bookings will actually cost. That's the legitimate half of "the price isn't the price." It's a comparison-shopping problem, not strictly a checkout problem, and it's one every low-cost carrier running a similarly unbundled fare shares to some degree — Ryanair is simply the most aggressive and most complained-about version of it, the way it's the header image for a category the whole industry participates in.

Restating the design complaint as a business complaint

Here's where the standard critique goes wrong, and it's worth being specific about the error rather than just asserting it. "This site is badly designed" and "this site is designed for a goal you don't share" are different findings, and almost every article that tears into Ryanair's UX collapses them into one.

Judged against the goal a design critic implicitly assumes — get one passenger from search to a booked seat with the least friction possible — the flow fails constantly and obviously. Judged against the goal the business actually has — sell a seat at a headline price low enough to win the search, then recover margin across a menu of optional extras before the booking closes — the flow is remarkably disciplined. Every screen maps to a specific add-on. Every add-on is priced individually rather than bundled into an opaque "plus fees" line, which is its own kind of honesty even if it doesn't feel like one at screen six. Nothing on the site is broken in the sense that a bug is broken; nothing crashes, nothing miscalculates, nothing charges a price different from the one shown immediately before payment. The friction is not incompetence. It's throughput, in the same sense an Apple product page runs the identical hero-then-comparison-table rhythm on every product because that rhythm has been tested against Apple's actual goal, which is a confident, unhurried purchase decision — a completely different goal, pursued with completely different pacing, but pursued with the same discipline. Design criticism that only ever asks "is this pleasant" will always call Ryanair's site worse than Apple's. Business criticism that asks "does this do what it was built to do" gets a different, less comfortable answer.

Not every friction point survives that defence equally well, though, and the honest version of this piece has to say where the disciplined-funnel argument runs out. A defaulted-off insurance box that reappears with different wording after being declined once is friction in service of a number. A cabin bag allowance sized specifically to make the paid upgrade feel closer to necessary than optional starts to look less like monetising a genuine choice and more like manufacturing one. The line between "aggressive but honest funnel" and "dark pattern" isn't a bright one, and Ryanair's flow sits close enough to it, on the re-ask specifically, that reasonable people land on different sides of that particular screen even while agreeing the rest of the funnel is fair game.

The verdict

Ryanair's website is not badly designed. It is precisely designed, for a goal the standard design critique never bothers to name, and once you name it the flow reads as coherent rather than chaotic — a headline fare built to win the search, followed by a sequence of individually priced, individually declinable extras built to recover margin before the booking closes. That's a legitimate business model wearing an unpleasant checkout, and the two should be graded separately, the way the cost of being the cheap option is never just the sticker price once every screen between search and confirmation gets counted.

Where it stops being defensible on those terms is narrow but real: the re-ask that follows a declined extra, phrased just differently enough to invite a second look, is friction added specifically to erode a choice the law already requires to be freely made once. Everything else in the flow is a business being unusually honest about what it's built to do. That one screen is the exception, and it's the one worth naming precisely rather than folding into a general complaint about clutter.

Questions people ask

Why does Ryanair's website feel so much worse than other airlines' sites?
Because it is doing more work per screen. A legacy carrier's booking flow sells one thing, a ticket, and can afford to move quickly. Ryanair's flow sells the ticket plus a sequence of separately priced add-ons, and each one needs its own screen and its own decision from you, which is what reads as clutter.
Is it legal for a site to pre-tick optional extras at checkout?
Under EU and UK consumer law, no — additional payments beyond the base price have to be opted into explicitly, not opted out of. That is why the boxes that used to arrive pre-ticked on Ryanair's older flow are unticked by default now, and why the checkout still asks you to actively decline several of them one at a time.
Does a cheap headline fare on Ryanair ever end up more expensive than a full-service airline's ticket?
It can, once bags, seat selection and payment handling are added back in, particularly on a route where a full-service carrier already includes those in its fare. The headline price and the total at payment are two different numbers by design, and the gap is exactly the optional extras a comparison search does not see.
What should a designer actually take from Ryanair's site rather than dismiss it as bad design?
That "bad" and "badly optimised for you" are not the same finding. The flow is disciplined against a specific goal — ancillary revenue per booking — and every step that annoys a passenger is there because it moves that number. The lesson is to ask what a design is for before grading it against a goal it was never given.

The Quiet Brief — We look at what companies actually do online, not what they say they do.

This article names specific products. How we handle recommendations.