PageSourceSearch

https://cardcompass.app/airline-search-programs

html cardcompass.app collected 2026-09-24 14:30:30 UTC 39,825 bytes, 540 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4  <!-- Google tag (gtag.js) -->
vendor: 66 bytes, lines 4-5
4
5  <script async src="https://www.googletagmanager.com/gtag/js?id=
5G-CYNSKD3EBQ
vendor: 14 bytes, lines 5-6
5"></script>
6  
6<script>
7    window.dataLayer = window.dataLayer || [];
8    function gtag(){dataLayer.push(arguments);}
9    gtag('js', new Date());
10
11    gtag('consent', 'default', { analytics_storage: (function () { try { var s = localStorage.getItem('cc_consent'); if (s) return s; return /^Europe\//.test(Intl.DateTimeFormat().resolvedOptions().timeZone) ? 'denied' : 'granted'; } catch (e) { return 'denied'; } })() });
12    gtag('config', 'G-CYNSKD3EBQ');
13  </script>
13
14  <meta charset="UTF-8">
15  <meta name="viewport" content="width=device-width, initial-scale=1.0">
16  <title>Search Top 20 Airline Loyalty Programs 2026 — CardCompass</title>
17  <meta name="description" content="Search and filter every major airline loyalty program by alliance — United, Delta, American, Emirates, Singapore, and more. See which credit cards transfer to each and find sweet spots.">
18  <link rel="canonical" href="https://cardcompass.app/airline-search-programs">
19  <meta property="og:type" content="website">
20  <meta property="og:url" content="https://cardcompass.app/airline-search-programs">
21  <meta property="og:title" content="Search Top 20 Airline Loyalty Programs — CardCompass">
22  <meta property="og:description" content="Find any airline loyalty program and instantly see which credit cards transfer points — and at what ratio.">
23  <meta property="og:image" content="https://cardcompass.app/og-image.png">
24  <meta property="og:site_name" content="CardCompass">
25  <meta name="twitter:card" content="summary_large_image">
26  <meta name="twitter:title" content="Search Top 20 Airline Loyalty Programs — CardCompass">
27  <meta name="twitter:description" content="Find any airline loyalty program and instantly see which credit cards transfer points — and at what ratio.">
28  <meta name="twitter:image" content="https://cardcompass.app/og-image.png">
29  
29<script type="application/ld+json">
30  {
31    "@context": "https://schema.org",
32    "@type": "WebPage",
33    "name": "Search Top 20 Airline Loyalty Programs",
34    "description": "Find any airline loyalty program and instantly see which credit cards transfer points — and at what ratio.",
35    "url": "https://cardcompass.app/airline-search-programs",
36    "breadcrumb": {
37      "@type": "BreadcrumbList",
38      "itemListElement": [
39        {"@type":"ListItem","position":1,"name":"Home","item":"https://cardcompass.app"},
40        {"@type":"ListItem","position":2,"name":"Airlines","item":"https://cardcompass.app/airlines"},
41        {"@type":"ListItem","position":3,"name":"Search All Programs","item":"https://cardcompass.app/airline-search-programs"}
42      ]
43    }
44  }
45  </script>
45
46  <link rel="icon" href="images/logo-icon.svg" type="image/png">
47  <link rel="icon" href="favicon.svg" type="image/svg+xml">
48  <link rel="manifest" href="site.webmanifest">
49  <meta name="theme-color" content="#071E4A">
50  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
51  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer">
52  <link rel="stylesheet" href="/styles.css?v=2">
53  
53<script src="nav-search.js?v=2"></script>
53
54  <style>
55/* HERO */
56    .page-hero { background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary) 60%, var(--primary-light) 100%); padding: 56px 24px 64px; position: relative; overflow: hidden; }
57    .page-hero::before { content: ''; position: absolute; top: -80px; right: -80px; width: 400px; height: 400px; background: radial-gradient(circle, rgba(74,163,240,.15) 0%, transparent 70%); border-radius: 50%; }
58    .page-hero-inner { max-width: 1280px; margin: 0 auto; position: relative; z-index: 1; }
59    .breadcrumb { display: flex; align-items: center; gap: 8px; font-size: 13px; color: rgba(255,255,255,.5); margin-bottom: 20px; flex-wrap: wrap; }
60    .breadcrumb a { color: rgba(255,255,255,.5); text-decoration: none; }
61    .breadcrumb a:hover { color: #fff; }
62    .breadcrumb i { font-size: 10px; }
63    .page-hero h1 { font-size: 40px; font-weight: 800; color: #fff; letter-spacing: -1px; line-height: 1.15; margin-bottom: 14px; }
64    .page-hero h1 span { color: var(--accent-gold); }
65    .page-hero p { font-size: 18px; color: rgba(255,255,255,.7); line-height: 1.7; max-width: 680px; }
66    @media (max-width: 640px) { .page-hero h1 { font-size: 30px; } .page-hero { padding: 40px 20px 48px; } }
67
68    /* MAIN */
69    .page-main { max-width: 1280px; margin: 0 auto; padding: 56px 24px 80px; }
70    .tool-sect-head { text-align: center; margin-bottom: 40px; }
71    .tool-sect-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.5px; color: var(--accent); margin-bottom: 8px; }
72    .tool-sect-title { font-size: 36px; font-weight: 800; letter-spacing: -.5px; margin-bottom: 12px; }
73    .tool-sect-desc { font-size: 16px; color: var(--text-gray); line-height: 1.7; max-width: 700px; margin: 0 auto; }
74
75    .sfbar { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin-bottom: 30px; background: var(--bg-light); border: 1px solid var(--border); border-radius: var(--r-md); padding: 14px 18px; }
76    .sfbar-search { position: relative; flex: 1; min-width: 220px; }
77    .sfbar-search i { position: absolute; left: 13px; top: 50%; transform: translateY(-50%); color: var(--text-light); font-size: 14px; pointer-events: none; }
78    .sfbar-input { width: 100%; padding: 10px 14px 10px 38px; border: 1.5px solid var(--border); border-radius: var(--r-sm); font-size: 15px; font-family: inherit; color: var(--text-dark); background: #fff; transition: border-color .2s; }
79    .sfbar-input:focus { outline: none; border-color: var(--accent); }
80    .alliance-btns { display: flex; gap: 6px; flex-wrap: wrap; }
81    .abtn { padding: 7px 13px; border-radius: 100px; font-size: 13px; font-weight: 600; border: 1.5px solid var(--border); background: #fff; color: var(--text-gray); cursor: pointer; transition: all .18s; white-space: nowrap; font-family: inherit; }
82    .abtn:hover { border-color: var(--accent); color: var(--accent); }
83    .abtn.active { color: #fff; border-color: transparent; }
84    .abtn[data-al="all"].active     { background: var(--primary); }
85    .abtn[data-al="star"].active    { background: #00395D; }
86    .abtn[data-al="skyteam"].active { background: #004B96; }
87    .abtn[data-al="oneworld"].active{ background: #C41230; }
88    .abtn[data-al="independent"].active { background: #4A5568; }
89    .ag-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 18px; margin-bottom: 20px; }
90    @media (max-width:1100px){ .ag-grid { grid-template-columns: repeat(3,1fr); } }
91    @media (max-width:760px) { .ag-grid { grid-template-columns: repeat(2,1fr); } }
92    @media (max-width:500px) { .ag-grid { grid-template-columns: 1fr; } }
93    .agcard { background: #fff; border: 1.5px solid var(--border); border-radius: var(--r-lg); padding: 20px; cursor: pointer; transition: all .2s; }
94    .agcard:hover { border-color: var(--accent); box-shadow: var(--shadow-md); transform: translateY(-2px); }
95    .agcard.open { border-color: var(--accent); box-shadow: var(--shadow-md); }
96    .agcard-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 10px; }
97    .agcard-badge { padding: 3px 8px; border-radius: 100px; font-size: 11px; font-weight: 700; letter-spacing: .3px; white-space: nowrap; }
98    .ab-star        { background: #E6EFF8; color: #00395D; }
99    .ab-skyteam     { background: #E6EEFB; color: #004B96; }
100    .ab-oneworld    { background: #FAE8EB; color: #C41230; }
101    .ab-independent { background: #EEEFF2; color: #4A5568; }
102    .agcard-name    { font-size: 15px; font-weight: 800; color: var(--text-dark); margin-bottom: 2px; line-height: 1.3; }
103    .agcard-program { font-size: 12px; color: var(--text-light); font-weight: 500; margin-bottom: 10px; }
104    .agcard-sep     { height: 1px; background: var(--border); margin: 10px 0; }
105    .agcard-mini    { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; }
106    .agstat-label   { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .7px; color: var(--text-light); margin-bottom: 2px; }
107    .agstat-val     { font-size: 12px; font-weight: 600; color: var(--text-dark); line-height: 1.3; }
108    .agxfer-head    { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .7px; color: var(--text-light); margin-bottom: 7px; }
109    .agxfer-pills   { display: flex; flex-wrap: wrap; gap: 5px; min-height: 24px; }
110    .xpill          { padding: 3px 8px; border-radius: 4px; font-size: 11px; font-weight: 700; }
111    .xp-chase { background: #E8F0FB; color: #0A2342; }
112    .xp-amex  { background: #FBF3E8; color: #9A6B0C; }
113    .xp-cap   { background: #EBE8FB; color: #1A1A3E; }
114    .xp-citi  { background: #E8F0FB; color: #003B70; }
115    .xp-bilt  { background: #E8F9EF; color: #0B5C2A; }
116    .xp-none  { color: var(--text-light); font-size: 12px; font-style: italic; }
117    .agcard-expand    { display: none; margin-top: 12px; }
118    .agcard.open .agcard-expand { display: block; }
119    .agcard-sweet     { background: #EBF4FF; border-radius: var(--r-sm); padding: 12px 14px; margin-top: 10px; }
120    .agcard-sweet-lbl { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .7px; color: var(--accent); margin-bottom: 5px; }
121    .agcard-sweet p   { font-size: 12px; color: var(--text-gray); line-height: 1.55; }
122    .agcard-tip       { background: var(--bg-light); border-radius: var(--r-sm); padding: 10px 12px; margin-top: 8px; font-size: 12px; color: var(--text-gray); line-height: 1.55; }
123    .agcard-hint      { text-align: center; margin-top: 10px; font-size: 11px; color: var(--accent); font-weight: 600; }
124    .no-ag-results    { text-align: center; padding: 60px 24px; display: none; }
125    .no-ag-results i  { font-size: 40px; color: var(--border); display: block; margin-bottom: 16px; }
126    .no-ag-results p  { font-size: 16px; color: var(--text-gray); }
127
128  </style>
129</head>
130<body>
131
132<nav class="navbar">
133  <div class="nav-inner">
134    <a href="/" class="logo">
135      <div class="logo-icon"><img src="images/logo-icon.svg" alt="CardCompass compass logo" width="40" height="40"></div>
136      <span class="logo-text">Card<span>Compass</span></span>
137    </a>
138    <div class="nav-links" id="nav-links">
139      <div class="nav-item">
140        <button class="nav-link" aria-expanded="false" aria-haspopup="true">Credit Cards <i class="fas fa-chevron-down"></i></button>
141        <div class="dropdown">
142          <a href="/all-cards" style="font-weight:700"><i class="fas fa-th-list"></i> All Credit Cards</a>
143          <div style="height:1px;background:#E2E8F0;margin:6px 0;"></div>
144          <a href="/bonus-offers"><i class="fas fa-gift"></i> Current Bonus Offers</a>
145          <a href="/cards?cat=cashback"><i class="fas fa-star"></i> Best Cash Back Cards</a>
146          <a href="/cards?cat=travel"><i class="fas fa-plane"></i> Best Travel Cards</a>
147          <a href="/cards?cat=hotel"><i class="fas fa-hotel"></i> Best Hotel Cards</a>
148          <a href="/cards?cat=airline"><i class="fas fa-plane-departure"></i> Best Airline Cards</a>
149          <a href="/cards?cat=gas"><i class="fas fa-gas-pump"></i> Best Gas Cards</a>
150          <a href="/cards?cat=dining"><i class="fas fa-utensils"></i> Best Dining Cards</a>
151          <a href="/cards?cat=nofee"><i class="fas fa-shield-alt"></i> No Annual Fee Cards</a>
152          <a href="/cards?cat=balancetransfer"><i class="fas fa-sync-alt"></i> Balance Transfer Cards</a>
153          <a href="/cards?cat=business"><i class="fas fa-briefcase"></i> Best Business Cards</a>
154          <a href="/cards?cat=student"><i class="fas fa-graduation-cap"></i> Student Cards</a>
155          <a href="/cards?cat=secured"><i class="fas fa-lock"></i> Build Credit / Secured</a>
156        </div>
157      </div>
158      <div class="nav-item">
159        <button class="nav-link" aria-expanded="false" aria-haspopup="true">Rewards <i class="fas fa-chevron-down"></i></button>
160        <div class="dropdown">
161          <a href="/rewards-calculator"><i class="fas fa-calculator"></i> Points Calculator</a>
162          <a href="/rewards-partners"><i class="fas fa-exchange-alt"></i> Transfer Partners</a>
163          <a href="/rewards-maximize"><i class="fas fa-chart-line"></i> Maximize Your Points</a>
164          <a href="/rewards-award-travel"><i class="fas fa-suitcase"></i> Award Travel Guide</a>
165          <a href="/rewards-optimizer"><i class="fas fa-dollar-sign"></i> Cash Back Optimizer</a>
166          <a href="/balance-transfer-calculator"><i class="fas fa-sync-alt"></i> Balance Transfer Calc</a>
167        </div>
168      </div>
169      <div class="nav-item">
170        <button class="nav-link active" aria-expanded="false" aria-haspopup="true">Airlines <i class="fas fa-chevron-down"></i></button>
171        <div class="dropdown">
172          <a href="/airlines" style="font-weight:700"><i class="fas fa-plane"></i> All Airlines</a>
173          <div style="height:1px;background:#E2E8F0;margin:6px 0;"></div>
174          <a href="/airline-transfer-matrix"><i class="fas fa-table"></i> Transfer Partner Matrix</a>
175          <a href="/airline-search-programs"><i class="fas fa-search"></i> Search All 23 Programs</a>
176          <div style="height:1px;background:#E2E8F0;margin:6px 0;"></div>
177          <a href="/airlines/united"><i class="fas fa-plane-departure"></i> United MileagePlus</a>
178          <a href="/airlines/delta"><i class="fas fa-plane-departure"></i> Delta SkyMiles</a>
179          <a href="/airlines/american"><i class="fas fa-plane-departure"></i> American AAdvantage</a>
180          <a href="/airlines/southwest"><i class="fas fa-plane-departure"></i> Southwest Rapid Rewards</a>
181          <a href="/airlines/alaska"><i class="fas fa-plane-departure"></i> Alaska Mileage Plan</a>
182          <a href="/airlines/jetblue"><i class="fas fa-plane-departure"></i> JetBlue TrueBlue</a>
183          <a href="/airlines/hawaiian"><i class="fas fa-plane-departure"></i> Hawaiian Miles</a>
184        </div>
185      </div>
186      <a href="/quiz" class="nav-link">Card Quiz</a>
187      <a href="/compare" class="nav-link">Compare Cards</a>
188      <a href="/my-current-wallet" class="nav-link">My Current Wallet</a>
189      <a href="/guides" class="nav-link">Guides</a>
190    </div>
191    <div class="nav-actions">
192      <a href="/login" class="btn-outline">Log In</a>
193      <a href="/get-started" class="btn-primary">Get Started Free</a>
194    </div>
195    <button class="hamburger" id="hamburger" aria-label="Toggle menu">
196      <span></span><span></span><span></span>
197    </button>
198  </div>
199</nav>
200
201<section class="page-hero">
202  <div class="page-hero-inner">
203    <div class="breadcrumb">
204      <a href="/">Home</a>
205      <i class="fas fa-chevron-right"></i>
206      <a href="/airlines">Airlines</a>
207      <i class="fas fa-chevron-right"></i>
208      <span>Search All Programs</span>
209    </div>
210    <h1>Search World's Top <span>20</span> Airline Programs</h1>
211    <p>Find any airline loyalty program and instantly see which credit cards transfer points — and at what ratio. Filter by alliance or search by name. Click any card for sweet spots and strategy tips.</p>
212  </div>
213</section>
214
215<div class="page-main">
216<div class="tool-wrap">
217  <div class="tool-sect-head">
218    <div class="tool-sect-label">GLOBAL AIRLINE COMPARISON</div>
219    <h2 class="tool-sect-title">Search World's Top 20 Airline Programs</h2>
220    <p class="tool-sect-desc">Find any airline loyalty program and instantly see which credit cards transfer points — and at what ratio. Filter by alliance or search by name. Click any card for sweet spots and strategy tips.</p>
221  </div>
222
223  <div class="sfbar">
224    <div class="sfbar-search">
225      <i class="fas fa-search"></i>
226      <input type="text" id="airline-search-input" class="sfbar-input" placeholder="Search airline name, program, or IATA code…">
227    </div>
228    <div class="alliance-btns">
229      <button class="abtn active" data-al="all">All Airlines</button>
230      <button class="abtn" data-al="star">Star Alliance</button>
231      <button class="abtn" data-al="skyteam">SkyTeam</button>
232      <button class="abtn" data-al="oneworld">Oneworld</button>
233      <button class="abtn" data-al="independent">Independent</button>
234    </div>
235  </div>
236
237  <div class="ag-grid" id="ag-grid"></div>
238  <div class="no-ag-results" id="no-ag-results">
239    <i class="fas fa-search"></i>
240    <p>No airlines match your search. Try a different term or reset the alliance filter.</p>
241  </div>
242</div>
243
244</div>
245
246<footer>
247  <div class="footer-inner">
248    <div class="footer-top">
249      <div class="footer-brand">
250        <a href="/" class="logo" style="text-decoration:none;display:inline-flex;align-items:center;gap:10px;">
251          <div class="logo-icon"><img src="images/logo-icon.svg" alt="CardCompass compass logo" width="40" height="40"></div>
252          <span class="logo-text">Card<span>Compass</span></span>
253        </a>
254        <p>CardCompass helps you navigate the crowded world of credit cards with honest, data-driven recommendations.</p>
255      </div>
256      <div class="footer-col">
257        <h4>Airline Programs</h4>
258        <a href="/airline-search-programs">Search All 23 Programs</a>
259        <a href="/airline-transfer-matrix">Transfer Partner Matrix</a>
260        <a href="/airlines/united">United MileagePlus</a>
261        <a href="/airlines/delta">Delta SkyMiles</a>
262        <a href="/airlines/american">American AAdvantage</a>
263        <a href="/airlines/southwest">Southwest Rapid Rewards</a>
264        <a href="/airlines/alaska">Alaska Mileage Plan</a>
265        <a href="/airlines/british-airways">British Airways Avios</a>
266        <a href="/airlines/emirates">Emirates Skywards</a>
267        <a href="/airlines/singapore">Singapore KrisFlyer</a>
268        <a href="/airlines/turkish">Turkish Miles&amp;Smiles</a>
269        <a href="/airlines/air-canada">Air Canada Aeroplan</a>
270      </div>
271      <div class="footer-col">
272        <h4>Credit Cards</h4>
273        <a href="/cards?cat=travel">Best Travel Cards</a>
274        <a href="/cards?cat=cashback">Best Cash Back</a>
275        <a href="/rewards-partners">Transfer Partners</a>
276        <a href="/compare">Compare Cards</a>
277        <a href="/my-current-wallet">My Current Wallet</a>
278      </div>
279      <div class="footer-col">
280        <h4>Company</h4>
281        <a href="/guides">Guides</a>
282        <a href="/about">About Us</a>
283        <a href="/about#methodology">How We Rate Cards</a>
284        <a href="/contact">Contact Us</a>
285        <a href="/advertiser-disclosure">Advertiser Disclosure</a>
286        <a href="/editorial-policy">Editorial Policy</a>
287        <a href="/privacy-policy">Privacy Policy</a>
288        <a href="/terms">Terms of Service</a>
289      </div>
290    </div>
291    <div class="footer-bottom">
292      <span>© 2026 CardCompass, Inc. Compensation from issuers does not influence our rankings. <span class="footer-social" style="display:inline-flex;align-items:center;gap:14px;vertical-align:middle;margin-left:10px;"><a href="https://www.instagram.com/cardcompassapp/" target="_blank" rel="noopener" aria-label="CardCompass on Instagram" style="display:inline-flex;margin:0;"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"/></svg></a><a href="https://www.facebook.com/cardcompassapp" target="_blank" rel="noopener" aria-label="CardCompass on Facebook" style="display:inline-flex;margin:0;"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"/></svg></a></span></span>
293      <div class="foot-links"><a href="/privacy-policy">Privacy</a><a href="/terms">Terms</a><a href="/advertiser-disclosure">Disclosure</a></div>
294    </div>
295  </div>
296</footer>
297
298<script>
299// ══════════════════════════════════════════════════
300// TOP 20 AIRLINE DATA
301// ══════════════════════════════════════════════════
302const AIRLINES_20 = [
303  { id:'aa', name:'American Airlines', program:'AAdvantage', iata:'AA', flag:'🇺🇸',
304    alliance:'oneworld', milesExpiry:'18 mo. inactivity', awardPricing:'Dynamic',
305    keyPartners:'British Airways, Cathay Pacific, Japan Airlines, Iberia',
306    transfers:{ 'Bilt':'1:1' },
307    sweetSpot:'Book short U.S. domestic AA flights via British Airways Avios (Chase/Citi → BA → book AA) for just 7,500 Avios one-way under 1,150 miles.',
308    tip:'Bilt is the only major flexible currency with direct AAdvantage transfers. Chase and Citi reach AA via British Airways Avios partner bookings.' },
309
310  { id:'dl', name:'Delta Air Lines', program:'SkyMiles', iata:'DL', flag:'🇺🇸',
311    alliance:'skyteam', milesExpiry:'Never expire', awardPricing:'Fully Dynamic',
312    keyPartners:'Air France, KLM, Korean Air, Virgin Atlantic',
313    transfers:{ 'Amex MR':'1:1' },
314    sweetSpot:'Transfer Amex MR → Air France Flying Blue instead of Delta directly — Flying Blue\'s monthly Promo Awards often show Delta flights 30–40% cheaper.',
315    tip:'Amex Membership Rewards is the only major flexible currency with a direct Delta SkyMiles transfer. Dynamic pricing means fewer sweet spots.' },
316
317  { id:'ua', name:'United Airlines', program:'MileagePlus', iata:'UA', flag:'🇺🇸',
318    alliance:'star', milesExpiry:'No expiry (with activity)', awardPricing:'Dynamic (partner flat)',
319    keyPartners:'Lufthansa, ANA, Singapore Airlines, Air Canada',
320    transfers:{ 'Chase UR':'1:1', 'Bilt':'1:1' },
321    sweetSpot:'Book ANA or Lufthansa First/Business Class for 88K–120K United miles one-way — partner pricing still uses chart rates, delivering far more value.',
322    tip:'Chase Ultimate Rewards and Bilt both transfer 1:1 to United. Best used for Star Alliance partner redemptions, not United-operated flights.' },
323
324  { id:'wn', name:'Southwest Airlines', program:'Rapid Rewards', iata:'WN', flag:'🇺🇸',
325    alliance:'independent', milesExpiry:'24 mo. inactivity', awardPricing:'Revenue-based (~1.5¢/pt)',
326    keyPartners:'None — U.S., Caribbean & Mexico only',
327    transfers:{ 'Chase UR':'1:1' },
328    sweetSpot:'Earn 135,000 Rapid Rewards points in a calendar year to unlock the Companion Pass — your chosen companion flies free for the rest of that year and all of next.',
329    tip:'Only Chase Ultimate Rewards transfers to Southwest. Revenue-based pricing means no complex award chart — any seat available for cash is bookable with points.' },
330
331  { id:'ek', name:'Emirates', program:'Emirates Skywards', iata:'EK', flag:'🇦🇪',
332    alliance:'independent', milesExpiry:'36 mo. inactivity', awardPricing:'Chart-based (zone)',
333    keyPartners:'Qantas, Flydubai, Alaska Airlines',
334    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'1:1', 'Bilt':'1:1' },
335    sweetSpot:'Emirates First Class NYC→Dubai for ~85,000 Skywards miles one-way. The A380 Private Suite with shower is one of the most iconic first-class products.',
336    tip:'All 5 major flexible currencies transfer 1:1 to Skywards, making it one of the most accessible premium cabin redemptions available.' },
337
338  { id:'ba', name:'British Airways', program:'Executive Club (Avios)', iata:'BA', flag:'🇬🇧',
339    alliance:'oneworld', milesExpiry:'36 mo. (any activity resets)', awardPricing:'Distance-based (Avios)',
340    keyPartners:'American Airlines, Iberia, Qatar Airways, Japan Airlines, Aer Lingus',
341    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'1:1', 'Bilt':'1:1' },
342    sweetSpot:'Book U.S. domestic American Airlines segments under 1,150 miles for just 7,500 Avios one-way — the best domestic award value available from any flexible currency.',
343    tip:'Avios is the most broadly accepted flexible currency: accepted from all 5 major U.S. programs. BA Avios can also be used on Qatar, Iberia, Aer Lingus, and more.' },
344
345  { id:'af', name:'Air France / KLM', program:'Flying Blue', iata:'AF/KL', flag:'🇫🇷',
346    alliance:'skyteam', milesExpiry:'24 mo. inactivity', awardPricing:'Dynamic + Promo Awards',
347    keyPartners:'Delta, Korean Air, Kenya Airways, Air Europa',
348    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'
3481:1', 'Bilt':'1:1' },
349    sweetSpot:'Flying Blue\'s monthly Promo Awards drop 30–50% off select routes — including Delta flights. Check the first week of each month for flash deals to Europe and beyond.',
350    tip:'Transfers from all 5 major currencies. Booking Delta flights via Flying Blue during Promo Award periods routinely beats SkyMiles prices by 40%+.' },
351
352  { id:'lh', name:'Lufthansa', program:'Miles & More', iata:'LH', flag:'🇩🇪',
353    alliance:'star', milesExpiry:'36 months from earned', awardPricing:'Chart-based (distance zones)',
354    keyPartners:'United, Swiss, Austrian, Brussels Airlines, Singapore Airlines',
355    transfers:{},
356    sweetSpot:'Lufthansa First Class to Frankfurt can be booked using United MileagePlus (via Chase UR → United) for ~100K miles. Miles & More itself has no major U.S. flexible currency transfers.',
357    tip:'No direct transfer from any major U.S. flexible currency program. To fly Lufthansa on miles, transfer Chase UR → United and book Lufthansa as a Star Alliance partner.' },
358
359  { id:'qr', name:'Qatar Airways', program:'Privilege Club (Avios)', iata:'QR', flag:'🇶🇦',
360    alliance:'oneworld', milesExpiry:'36 mo. inactivity', awardPricing:'Distance-based (Avios)',
361    keyPartners:'American Airlines, British Airways, Iberia, Cathay Pacific, Japan Airlines',
362    transfers:{ 'Amex MR':'1:1', 'Citi TY':'1:1' },
363    sweetSpot:'Qatar Qsuites business class — widely rated the world\'s best — from ~70,000 Avios one-way U.S. to Doha. Award availability is notably better than most premium programs.',
364    tip:'Qatar now uses Avios currency (same as BA/Iberia). Amex MR and Citi TY transfer directly. Chase UR users can transfer to BA Avios and then book Qatar flights.' },
365
366  { id:'sq', name:'Singapore Airlines', program:'KrisFlyer', iata:'SQ', flag:'🇸🇬',
367    alliance:'star', milesExpiry:'36 mo. from date earned', awardPricing:'Chart-based (distance)',
368    keyPartners:'United, Air Canada, ANA, Lufthansa, Turkish Airlines',
369    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'1:1', 'Bilt':'1:1' },
370    sweetSpot:'Singapore Suites (First Class) NYC→Singapore for ~215,000 KrisFlyer miles round-trip. The A380 Suites with private cabins are considered a bucket-list redemption.',
371    tip:'All 5 major flexible currencies transfer to KrisFlyer. Star Alliance partner awards (ANA, Lufthansa, Air Canada) often deliver excellent value at chart-based rates.' },
372
373  { id:'cx', name:'Cathay Pacific', program:'Asia Miles', iata:'CX', flag:'🇭🇰',
374    alliance:'oneworld', milesExpiry:'18 mo. from last earn/redeem', awardPricing:'Chart-based (regions)',
375    keyPartners:'American Airlines, British Airways, Qatar Airways, Japan Airlines',
376    transfers:{ 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'1:1', 'Bilt':'1:1' },
377    sweetSpot:'Cathay Pacific Business Class from U.S. West Coast to Hong Kong from ~67,500 Asia Miles one-way. Strong value for Oneworld partner bookings to Asia.',
378    tip:'Amex, Cap One, Citi, and Bilt all transfer to Asia Miles. Chase UR doesn\'t directly — but Chase → United MileagePlus can book Cathay Pacific as a Star Alliance partner.' },
379
380  { id:'jl', name:'Japan Airlines', program:'JAL Mileage Bank', iata:'JL', flag:'🇯🇵',
381    alliance:'oneworld', milesExpiry:'36 mo. (calendar year cycle)', awardPricing:'Distance-based table',
382    keyPartners:'American Airlines, British Airways, Qantas, Finnair',
383    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Bilt':'1:1' },
384    sweetSpot:'Round-trip to Tokyo in JAL Business Class Sky Suite from ~80,000 miles off-peak. JAL\'s herringbone flat beds are among the most comfortable in the industry.',
385    tip:'Chase UR, Amex MR, and Bilt transfer 1:1 to JAL Mileage Bank. Excellent for Oneworld partner bookings — book American, BA, or Qantas flights too.' },
386
387  { id:'nh', name:'ANA (All Nippon Airways)', program:'ANA Mileage Club', iata:'NH', flag:'🇯🇵',
388    alliance:'star', milesExpiry:'36 mo. from earned', awardPricing:'Chart-based (exceptional rates)',
389    keyPartners:'United, Lufthansa, Singapore Airlines, Air Canada',
390    transfers:{ 'Amex MR':'1:1' },
391    sweetSpot:'ANA Round-the-World First Class for ~150K miles. Domestic redemptions start at just 5,000 miles. Transatlantic business class from ~88K miles one-way.',
392    tip:'Only Amex Membership Rewards transfers directly to ANA Mileage Club from major U.S. programs. Chase UR users can book ANA via United MileagePlus Star Alliance partner awards.' },
393
394  { id:'ac', name:'Air Canada', program:'Aeroplan', iata:'AC', flag:'🇨🇦',
395    alliance:'star', milesExpiry:'No expiry (any activity)', awardPricing:'Distance-based + stopovers',
396    keyPartners:'United, Lufthansa, Singapore Airlines, Turkish Airlines, ANA',
397    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'
3971:1', 'Bilt':'1:1' },
398    sweetSpot:'Aeroplan\'s free stopover rule on one-way awards lets you visit two cities for the price of one. Book Copenhagen stopover en route to Tokyo without paying extra miles.',
399    tip:'All 5 major flexible currencies transfer to Aeroplan. Free stopovers + Star Alliance\'s 26-airline network make this one of the most strategically versatile programs.' },
400
401  { id:'tk', name:'Turkish Airlines', program:'Miles&Smiles', iata:'TK', flag:'🇹🇷',
402    alliance:'star', milesExpiry:'36 mo. from last earn', awardPricing:'Chart-based (low rates)',
403    keyPartners:'United, Lufthansa, Singapore Airlines, ANA, Air Canada',
404    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'1:1', 'Bilt':'1:1' },
405    sweetSpot:'Chicago → Tokyo in United Polaris Business Class for just ~45,000 Miles&Smiles — roughly half what United charges for the same seat. One of the biggest gaps in the industry.',
406    tip:'One of the best-kept secrets in travel hacking. All 5 currencies transfer 1:1 and the award chart has some of the lowest Star Alliance partner rates anywhere.' },
407
408  { id:'vs', name:'Virgin Atlantic', program:'Flying Club', iata:'VS', flag:'🇬🇧',
409    alliance:'independent', milesExpiry:'36 mo. inactivity', awardPricing:'Chart-based (distance)',
410    keyPartners:'Delta, Air France, KLM, ANA, Singapore Airlines',
411    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'1:1', 'Bilt':'1:1' },
412    sweetSpot:'ANA First Class to Japan from the U.S. via Flying Club for ~60K miles one-way — roughly 40% less than booking directly through ANA\'s own program.',
413    tip:'Hugely underrated program. Can book ANA, Delta, and Air France at very competitive rates. All 5 flexible currencies transfer 1:1 to Flying Club.' },
414
415  { id:'qf', name:'Qantas', program:'Qantas Frequent Flyer', iata:'QF', flag:'🇦🇺',
416    alliance:'oneworld', milesExpiry:'18 mo. inactivity', awardPricing:'Chart-based (regions)',
417    keyPartners:'American Airlines, British Airways, Emirates, Cathay Pacific, Japan Airlines',
418    transfers:{ 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'1:1' },
419    sweetSpot:'Qantas First Class LAX→Sydney from ~80,000 miles one-way. The Qantas First Lounge in Sydney is among the finest airport experiences in the world.',
420    tip:'Amex MR, Capital One, and Citi TY all transfer to Qantas. Chase UR does not. Also strong for Oneworld partner redemptions across Asia-Pacific.' },
421
422  { id:'ke', name:'Korean Air', program:'SKYPASS', iata:'KE', flag:'🇰🇷',
423    alliance:'skyteam', milesExpiry:'10 years from earned', awardPricing:'Chart-based',
424    keyPartners:'Delta, Air France, KLM, China Airlines',
425    transfers:{ 'Citi TY':'1:1' },
426    sweetSpot:'Korean Air First Class to Seoul from the U.S. for ~80,000 SKYPASS miles round-trip — generous chart rates and a genuinely premium cabin product.',
427    tip:'Only Citi ThankYou Points transfer directly to Korean Air SKYPASS among major U.S. flexible currencies. Notable for its 10-year mile expiry — unusually generous.' },
428
429  { id:'ey', name:'Etihad Airways', program:'Etihad Guest', iata:'EY', flag:'🇦🇪',
430    alliance:'independent', milesExpiry:'24 mo. inactivity', awardPricing:'Chart-based',
431    keyPartners:'American Airlines, Royal Air Maroc, Air Serbia',
432    transfers:{ 'Amex MR':'1:1', 'Cap One':'1:1', 'Citi TY':'1:1', 'Bilt':'1:1' },
433    sweetSpot:'Etihad The Residence (3-room A380 suite) to Abu Dhabi from ~615,000 miles. Business class starts from ~55K miles — a more realistic aspirational goal.',
434    tip:'Amex MR, Capital One, Citi TY, and Bilt all transfer 1:1 to Etihad Guest. Limited partner network but exceptional in-flight product — especially for Middle East routes.' },
435
436  { id:'ib', name:'Iberia', program:'Iberia Plus (Avios)', iata:'IB', flag:'🇪🇸',
437    alliance:'oneworld', milesExpiry:'36 mo. inactivity', awardPricing:'Distance-based (Avios)',
438    keyPartners:'British Airways, American Airlines, Qatar Airways, Japan Airlines',
439    transfers:{ 'Chase UR':'1:1', 'Amex MR':'1:1', 'Bilt':'1:1' },
440    sweetSpot:'NYC→Madrid in Iberia Business Class (Oneworld Business) for ~34,000 Avios one-way off-peak — widely considered the single best transatlantic business class value in points.',
441    tip:'Iberia Avios is the same currency as BA Avios — pools across both programs. Chase UR, Amex MR, and Bilt all transfer 1:1. The Madrid sweet spot is a genuine travel-hacking classic.' }
442];
443const PILL_CLASS = { 'Chase UR':'xp-chase', 'Amex MR':'xp-amex', 'Cap One':'xp-cap', 'Citi TY':'xp-citi', 'Bilt':'xp-bilt' };
444const BADGE_CLASS = { star:'ab-star', skyteam:'ab-skyteam', oneworld:'ab-oneworld', independent:'ab-independent' };
445const BADGE_LABEL = { star:'Star Alliance', skyteam:'SkyTeam', oneworld:'Oneworld', independent:'Independent' };
446// ── RENDER AIRLINE GRID ──
447function renderAirlineGrid(alliance, query) {
448  const grid = document.getElementById('ag-grid');
449  const none = document.getElementById('no-ag-results');
450  const q = (query || '').toLowerCase().trim();
451  const filtered = AIRLINES_20.filter(a => {
452    const matchAl = alliance === 'all' || a.alliance === alliance;
453    const matchQ  = !q || a.name.toLowerCase().includes(q) || a.program.toLowerCase().includes(q) || a.iata.toLowerCase().includes(q);
454    return matchAl && matchQ;
455  });
456  if (!filtered.length) { grid.innerHTML = ''; none.style.display = 'block'; return; }
457  none.style.display = 'none';
458
459  grid.innerHTML = filtered.map(a => {
460    const xferKeys = Object.keys(a.transfers);
461    const pills = xferKeys.length
462      ? xferKeys.map(k => `<span class="xpill ${PILL_CLASS[k]}">${k} <strong>${a.transfers[k]}</strong></span>`).join('')
463      : '<span class="xp-none">No direct U.S. card transfers</span>';
464    return `
465<div class="agcard" onclick="toggleAirlineCard(this)" data-id="${a.id}">
466  <div class="agcard-top">
467    <span class="agcard-badge ${BADGE_CLASS[a.alliance]}">${BADGE_LABEL[a.alliance]}</span>
468  </div>
469  <div class="agcard-name">${a.name}</div>
470  <div class="agcard-program">${a.program} · ${a.iata}</div>
471  <div class="agcard-sep"></div>
472  <div class="agcard-mini">
473    <div><div class="agstat-label">Miles Expiry</div><div class="agstat-val">${a.milesExpiry}</div></div>
474    <div><div class="agstat-label">
474Award Pricing</div><div class="agstat-val">${a.awardPricing}</div></div>
475  </div>
476  <div class="agxfer-head">Credit Card Transfer Partners</div>
477  <div class="agxfer-pills">${pills}</div>
478  <div class="agcard-expand">
479    <div class="agcard-sep"></div>
480    <div style="font-size:12px;color:var(--text-gray);line-height:1.6;margin-bottom:10px;"><strong style="color:var(--text-dark)">Key Partners:</strong> ${a.keyPartners}</div>
481    <div class="agcard-sweet">
482      <div class="agcard-sweet-lbl">Sweet Spot</div>
483      <p>${a.sweetSpot}</p>
484    </div>
485    <div class="agcard-tip">${a.tip}</div>
486  </div>
487  <div class="agcard-hint">Click for details ▾</div>
488</div>`;
489  }).join('');
490}
491
492function toggleAirlineCard(el) {
493  const wasOpen = el.classList.contains('open');
494  document.querySelectorAll('.agcard.open').forEach(c => {
495    c.classList.remove('open');
496    const h = c.querySelector('.agcard-hint'); if (h) h.textContent = 'Click for details ▾';
497  });
498  if (!wasOpen) {
499    el.classList.add('open');
500    const h = el.querySelector('.agcard-hint'); if (h) h.textContent = 'Click to collapse ▴';
501  }
502}
503
504// ── INIT ──
505renderAirlineGrid('all', '');
506
507document.querySelectorAll('.abtn').forEach(function(btn) {
508  btn.addEventListener('click', function() {
509    document.querySelectorAll('.abtn').forEach(function(b) { b.classList.remove('active'); });
510    this.classList.add('active');
511    renderAirlineGrid(this.dataset.al, document.getElementById('airline-search-input').value);
512  });
513});
514
515document.getElementById('airline-search-input').addEventListener('input', function() {
516  var al = document.querySelector('.abtn.active').dataset.al;
517  renderAirlineGrid(al, this.value);
518});
519
520var hamburger = document.getElementById('hamburger');
521var navLinks = document.getElementById('nav-links');
522if (hamburger && navLinks) {
523  hamburger.addEventListener('click', function() {
524    var open = hamburger.classList.toggle('open');
525    navLinks.classList.toggle('mobile-open', open);
526    hamburger.setAttribute('aria-expanded', open ? 'true' : 'false');
527  });
528  document.addEventListener('click', function(e) {
529    if (!hamburger.contains(e.target) && !navLinks.contains(e.target)) {
530      hamburger.classList.remove('open');
531      navLinks.classList.remove('mobile-open');
532    }
533  });
534}
535</script>
vendor: 1 bytes, line 535
535
536<script src="nav-auth.js?v=2"></script>
vendor: 1 bytes, line 536
536
537<script src="/newsletter-popup.js" defer></script>
vendor: 1 bytes, line 537
537
538<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"e79d8b0449fb411087aba9b1640e3938","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 538
538
539<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4027cc8cdae36b2',t:'MTc5MDI2MDIzMA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
539</body>
540</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.