Rohith Varma

IndiGo evaluation

Usability and accessibility evaluation of an airline booking site


2025 · 11 weeks · 5 phases

My role
Heuristic evaluation, cognitive walkthrough, test plan and task scenarios, moderation and observation of remote sessions, synthesis, keystroke-level model, and the WCAG 2.1 audit.
Team
Lead researcher, with two researchers supporting the moderated sessions. Four of the six methods were run solo. DePaul University.
Full work
Read the usability report (opens in a new tab) Read the accessibility report (opens in a new tab)

Four of five could not find what an extra bag costs. Most still rated the site easy to use.

01 Context

One site, three tasks, and a reason to distrust the first impression

IndiGo is India’s largest low-cost carrier, and the only one flying both domestic and international routes at that scale. The website carries the whole service counter: booking, seat selection, meals, baggage, check-in, boarding passes, refunds. For most of it there is no phone line a traveller would rather call.

I picked this site because I failed on it myself. I was flying back to the United States and needed a domestic connection, and I wanted to add a bag to that leg. The site looked clean and modern and I still could not do it. The labels did not say what they meant, and the flow broke halfway through.

That gave me something worth testing properly. This interface is good at looking usable, which is a different thing from being usable. I built three tasks to press on that, all from one traveller scenario: a student flying Mumbai to Chicago for the first time, comfortable booking domestic flights, new to long-haul.

Find the cheapest flight. Download a boarding pass for a booking that already exists. Work out what 15 kg of excess baggage costs on an international connection. The first task is the one the site is built to sell. The other two happen after the sale, where nothing about the design is earning money any more.

02 Method

Six methods, because no single one of them would have caught this

I ran the predictive methods first to work out where to look, then watched people, then measured the one flow that had seemed fine.

PhaseMethodn
01 Heuristic evaluation against Nielsen’s ten heuristics
02 Cognitive walkthrough, three task flows, four questions per step
03 Moderated remote usability sessions, 20 to 30 min 5
04 Post-task and post-test questionnaires 5
05 Keystroke-level model, boarding pass retrieval 5
06 WCAG 2.1 audit across two pages

The heuristic evaluation logged 73 issues across the home page, flight search, and booking. They were not spread evenly. Visibility of system status took 18 of them and consistency and standards took 12. Read together, those two counts say something fairly specific: the site rarely tells you what it is doing, and rarely calls the same thing by the same name twice.

The cognitive walkthrough broke the three flows into steps and asked the four standard questions at each one. Severity came out very different by task. Minor problems for flight search, major ones for the boarding pass, and a critical failure for excess baggage pricing. That spread is what made the usability test worth running. A method that predicts everything is equally mediocre cannot tell you where to spend five participants.

Five participants, aged 18 to 30, all of whom had booked a flight online in the past year and most of whom had flown internationally once or not at all. Sessions ran over Zoom with one moderator reading prompts and one observer logging actions, hesitations, and non-verbal cues on a structured sheet. I wrote the prompts so they never named a feature, which meant participants had to find their own way.

I saved the keystroke-level model for the task that had gone best. Three of five people had retrieved a boarding pass without much trouble, so that flow looked healthy. Modelling it was a way of asking whether it was genuinely efficient or only survivable.

The accessibility audit ran separately, months later, against the live site: W3C Easy Checks, an ARIA and semantic markup review in DevTools, WAVE and IBM Equal Access, a readability test, a mobile emulation pass, and a VoiceOver walkthrough on macOS. I did the second page with Screen Curtain on, so the screen was actually off.

03 Evidence

What the three tasks actually looked like

Table 1. Aggregated results across five participants. Difficulty was self-rated after each task, 1 = very hard, 5 = very easy.
Task Completed Avg. time Rated
Find the cheapest flight 2 / 5 3m 08s 1.6 / 5
Download a boarding pass 3 / 5 1m 42s 2.2 / 5
Check 15 kg baggage cost 1 / 5 4m 12s 0.4 / 5

On Task 1, most people never saw the “Low Fare” filter that would have answered the question outright, and sorted by hand instead. P3 toggled between dates and missed cheaper options. P2 had the results on screen and still could not tell which one the task was asking about.

I see multiple results, but I don’t know which one is the lowest.

P2, on the flight results page
IndiGo flight results for Delhi to Chicago on 24 April, showing a date strip of fares, filter pills reading Non-stop, Low cost first, and Day departures, and one expanded result at 59,054 rupees with fare type, baggage, and change or cancellation details. An annotation with a red arrow points at a small underlined Click here link at the bottom of the card, reading: isn't highlighted enough for people to click and view more about the flight.
Fig. 1. The flight results page. The fare, the baggage allowance, and the change fees are all here. The layover duration, the connecting airport, and whether luggage has to be rechecked are not. The only way to them is the Click here link at the bottom left.

Task 3 is where it fell apart. Four of five people either gave up or landed somewhere that could not answer the question: the FAQ, the generic baggage policy in the footer, a domestic pricing table. Nobody found a way to filter by route.

IndiGo's excess baggage page showing an International Connecting Flights section: a table of prepaid prices for 8 kg, 15 kg, and 30 kg listed down twenty rows of currency codes from INR to CNY, followed by terms and conditions, a blue note block of five separate please-note paragraphs, and then a flight booking widget.
Fig. 2. The international connecting flights table, which is the correct answer to Task 3. Prices are indexed by currency code rather than by route, there is no search or filter, and the section sits among several near-identical tables on one page.

Is there any search bar to find this?

P4, mid-task, having scrolled the baggage page twice

The accessibility audit turned up the same information problems, and worse, because a screen reader takes away the option of skimming past them. On the home page the heading order runs H1, H3, H3, H2, H6, H6. The rotor’s headings menu exists so a screen reader user can move through page structure, and here it hands back an outline the page does not actually have.

The IndiGo home page with VoiceOver's headings menu open over it. The menu lists six headings with their levels: 1, then 3, then 3, then 2, then 6, then 6. The order skips and reverses rather than nesting.
Fig. 3. VoiceOver's headings menu on the home page. The levels run 1, 3, 3, 2, 6, 6. Moving by heading is the standard way to read a page without sight, and here it returns an outline that does not describe the page.
A WAVE accessibility scan of the IndiGo home page. The sidebar reports 36 errors, 6 contrast errors, 90 alerts, 32 features, 44 structural elements, and 835 ARIA attributes, with an AIM score of 4.7 out of 10. The error breakdown lists 7 missing alternative text, 7 linked images missing alternative text, 5 missing form labels, 3 empty buttons, and 13 empty links. The page behind is covered in green and purple ARIA badges.
Fig. 4. WAVE on the home page: 835 ARIA attributes against 36 errors and 13 empty links. The amount of markup is not the problem. It is what tells you the problem was never a lack of effort.

04 Synthesis

Four patterns that only appear when the methods are read against each other

What people said did not match what they did. Post-test ratings came back broadly positive. Participants called the site trustworthy and said they would use it again, including two I had just watched give up on a task. The same session produced a warm rating and a failure.

Rated usable → 1 of 5 completed

Excess baggage pricing: post-test sentiment against observed task success

That is not people being wrong about their own experience. Participants are polite, they remember the end of a session better than the middle, and someone who cannot find a price will usually assume they did not look hard enough. A survey on its own would have reported a usable product here. Watching is what separated the two.

The words broke people’s expectations. “Itinerary”, “Manage”, and “Find & View Booking” all failed to say what sat behind them. Two of five people trying to download a boarding pass were already on the right page and did not know it, because nothing on it used the words they had in their head. The vocabulary is consistent with itself. It belongs to the airline, not the traveller.

Density stops being an inconvenience and becomes a wall. The excess baggage page holds every price the airline charges, for every weight, in every currency, for domestic and international and connecting routes, on one scroll, with no filter and nothing to anchor to. Every fact a traveller needs is on that page. The cognitive walkthrough called it a critical failure before anyone tested it, and then four of five people failed it.

Missing feedback is what turned confusion into giving up. People asked out loud whether things had worked. “Am I done?” “Should I download this?” They asked after finishing steps that produced no confirmation of any kind. Not knowing whether a step worked is what sent people back to redo it, and redoing steps is where most of the time in Table 1 went.

Set against all that, the keystroke-level model of boarding pass retrieval is a useful corrective. Modelled cold, the happy path costs 26.1 seconds, and more than ten of those are the system thinking, across three page loads. After five practice runs I averaged 23.3 seconds.

26.1s modelled → 23.3s practised

Boarding pass retrieval, KLM prediction against five timed trials

So the flow is efficient once you know it. I read that as the problem rather than the defence. The task that looked healthiest in testing is healthy for someone who has already done it, and three page loads of dead time cost you nothing if you know a boarding pass is waiting at the end of them. Two of five first-timers never got there. Efficiency measured on a practised user says very little about a new one, and this is the clearest place in the study where two methods disagreed and both were right.

The accessibility failures were the same failures with the escape routes removed. Keyboard focus got stuck in video playback controls and took a lot of keystrokes to get out of. The airport dropdowns are built from div elements instead of form inputs, so VoiceOver read them aloud but selecting from them was unreliable. Table headers were announced twice and then not at all, so cells arrived as “cell 2 of 20” with no row to attach them to, on a page that is almost entirely tables. Carousels announced themselves as “Offer Slide”. The login button was labelled “Tariff Sheet Login”, which is a control the page does not have.

That same page carries 835 ARIA attributes. WAVE and IBM Equal Access flagged more than 50 of them as redundant or invalid: aria-label="Image Aria Label", roles stacked onto elements that already had semantics, aria-hidden="true" on desktop elements that turn visible and audible on mobile. Somebody spent real time on this and almost none of it reached the user. ARIA was standing in for semantic structure, and for opening a screen reader and listening to the result.

05 Recommendation

What follows for anyone shipping a self-service travel flow

These are not cosmetic problems, and they share a shape. The interface is built around the transaction that brings in money, and everything after that transaction gets whatever structure was left over.

PrincipleRule
Name tasks, not systems "Download boarding pass" rather than "Itinerary" or "Manage". A label earns its place by matching what the person came to do, not by naming the object behind it.
Confirm every completed action Loading states during searches, and a plain success message after a retrieval. When nothing comes back, people read it as failure and pay for it by doing the step again.
Index reference data by the question asked Baggage pricing gets looked up by route and weight, so let it be filtered by route and weight. Scoped headers, collapsible sections, and a search field, instead of one page holding every price.
Structure before ARIA A correct heading order and real form controls carry more than 835 attributes. Add ARIA to fill a gap you have actually found, then check it with a screen reader rather than a checker.
Keep focus visible and escapable Predictable tab order, a focus indicator you can see, no traps inside embedded media, and a pause control on anything that moves by itself.

Four limits are worth saying plainly. Five participants is the right number for finding problems and the wrong number for counting how often they happen, so Table 1 shows that these tasks fail, not how often they fail. None of the five used assistive technology: the accessibility findings come from my own audit and my own VoiceOver walkthrough, which can find violations but cannot tell me what they cost somebody who depends on that software every day. The audit covered two pages rather than the booking, payment, and check-in flows. And the project diagnoses without validating a fix.

The next step is the one I cannot skip. Recruit screen reader and keyboard-only users as participants rather than as a standard to measure against, redesign the baggage and boarding-pass flows against the guidelines above, and test whether any of it moves completion. Particularly on the task where four of five people currently give up.

The work produced a usability evaluation report (opens in a new tab) covering the test plan, protocol, raw participant data, and annotated screenshots, and a separate web accessibility report (opens in a new tab) organised under the POUR principles.