{"id":18077,"date":"2026-11-03T12:00:00","date_gmt":"2026-11-03T17:30:00","guid":{"rendered":"https:\/\/www.journohq.com\/blog\/?p=18077"},"modified":"2026-11-03T11:44:38","modified_gmt":"2026-11-03T17:14:38","slug":"thanksgiving-travel-2026","status":"publish","type":"post","link":"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/","title":{"rendered":"Thanksgiving Travel 2026: When to Book, When to Fly, and What to Skip"},"content":{"rendered":"\n<style data-wp-block-html=\"css\">\n\/* =====================================================================\n   Journo blog post components  \u00b7  v1.2  \u00b7  2026-10\n   Every rule is scoped under .jp-post so nothing leaks into the theme,\n   Elementor widgets, header, footer or sidebar.\n   Load this ONCE sitewide (see wpcode-enqueue.php), or paste it inside\n   a style tag at the top of a single post (see journo-post-standalone.html).\n   ===================================================================== *\/\n\n.jp-post {\n  \/* Brand tokens: swap these for Journo's exact brand values *\/\n  --jp-ink: #14212b;          \/* body text *\/\n  --jp-muted: #5b6b76;        \/* captions, meta *\/\n  --jp-paper: #ffffff;        \/* post background *\/\n  --jp-tint: #eef4f6;         \/* TL;DR + table stripes *\/\n  --jp-line: #d5e0e5;         \/* borders *\/\n  --jp-brand: #0f5c6e;        \/* links, headings accents *\/\n  --jp-cta: #e8552d;          \/* CTA button *\/\n  --jp-cta-ink: #ffffff;\n  --jp-gold: #c99a2e;         \/* score bars, framework badge *\/\n  --jp-radius: 10px;\n  --jp-measure: 70ch;\n\n  color: var(--jp-ink);\n  line-height: 1.7;\n  font-size: 1.0625rem;\n}\n.jp-post *, .jp-post *::before, .jp-post *::after { box-sizing: border-box; }\n.jp-post a { color: var(--jp-brand); text-underline-offset: 3px; }\n.jp-post h2, .jp-post h3 { text-wrap: balance; scroll-margin-top: 96px; }\n.jp-post h2 { margin-top: 2.4em; }\n.jp-post :focus-visible { outline: 3px solid var(--jp-gold); outline-offset: 2px; }\n\n\/* Reading progress bar (injected by JS) *\/\n.jp-progress {\n  position: fixed; top: 0; left: 0; height: 4px; width: 100%;\n  transform-origin: 0 50%; transform: scaleX(0);\n  background: var(--jp-brand); z-index: 99999; pointer-events: none;\n}\n\n\/* Opening image at the very top of the post *\/\n.jp-post figure.jp-hero { margin: 0 0 1.5rem; }\n\n\/* Italic teaser under the hero image *\/\n.jp-post .jp-teaser { font-style: italic; color: var(--jp-muted); font-size: 1.125rem; }\n\n\/* TL;DR \/ The short version *\/\n.jp-post .jp-tldr {\n  background: var(--jp-tint); border: 1px solid var(--jp-line);\n  border-radius: var(--jp-radius); padding: 1.25rem 1.5rem; margin: 1.75rem 0;\n}\n.jp-post .jp-tldr__label {\n  font-size: .78rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;\n  color: var(--jp-brand); margin: 0 0 .5rem;\n}\n.jp-post .jp-tldr ul { margin: 0; padding-left: 1.2rem; }\n.jp-post .jp-tldr li + li { margin-top: .4rem; }\n\n\/* Jump-to table of contents (JS fills it from the H2s) *\/\n.jp-post .jp-toc { border-left: 3px solid var(--jp-line); padding: .25rem 0 .25rem 1rem; margin: 1.75rem 0; }\n.jp-post .jp-toc__label { font-weight: 700; margin: 0 0 .35rem; }\n.jp-post .jp-toc ol { margin: 0; padding-left: 1.2rem; }\n.jp-post .jp-toc a { text-decoration: none; }\n.jp-post .jp-toc a:hover { text-decoration: underline; }\n.jp-post .jp-toc a[aria-current=\"true\"] { font-weight: 700; }\n\n\/* CTA box: Journo Insider \/ $6,640 gifts *\/\n.jp-post .jp-cta {\n  border: 2px solid var(--jp-ink); border-radius: var(--jp-radius);\n  padding: 1.5rem; margin: 2.25rem 0; background: var(--jp-paper);\n  display: grid; gap: .75rem;\n}\n.jp-post .jp-cta__eyebrow { font-size: .78rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--jp-brand); margin: 0; }\n.jp-post .jp-cta__title { font-size: 1.35rem; line-height: 1.3; margin: 0; }\n.jp-post .jp-cta p { margin: 0; }\n.jp-post .jp-cta__fine { font-size: .85rem; color: var(--jp-muted); }\n.jp-post .jp-btn {\n  display: inline-block; justify-self: start;\n  background: var(--jp-cta); color: var(--jp-cta-ink); text-decoration: none;\n  font-weight: 700; padding: .8rem 1.25rem; border-radius: 999px;\n  transition: transform .15s ease, box-shadow .15s ease;\n}\n.jp-post .jp-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,.15); color: var(--jp-cta-ink); }\n\n\/* Named framework box (Liquidity Test, Travel Decision Stack, 5-Signal Score) *\/\n.jp-post .jp-framework {\n  background: var(--jp-ink); color: #f3f6f8; border-radius: var(--jp-radius);\n  padding: 1.5rem; margin: 2rem 0;\n}\n.jp-post .jp-framework a { color: #ffd27a; }\n.jp-post .jp-framework__badge {\n  display: inline-block; background: var(--jp-gold); color: var(--jp-ink);\n  font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;\n  padding: .2rem .6rem; border-radius: 999px; margin-bottom: .6rem;\n}\n.jp-post .jp-framework h3 { color: #fff; margin: 0 0 .5rem; }\n.jp-post .jp-framework ol { margin: 0; padding-left: 1.3rem; }\n.jp-post .jp-framework li + li { margin-top: .45rem; }\n\n\/* Quick answer box *\/\n.jp-post .jp-quick { border-left: 5px solid var(--jp-brand); background: var(--jp-tint); padding: 1rem 1.25rem; margin: 1.75rem 0; border-radius: 0 var(--jp-radius) var(--jp-radius) 0; }\n.jp-post .jp-quick strong:first-child { display: block; margin-bottom: .25rem; }\n\n\/* Tables: scroll inside their own box on phones *\/\n.jp-post .jp-table { overflow-x: auto; margin: 1.75rem 0; border: 1px solid var(--jp-line); border-radius: var(--jp-radius); }\n.jp-post .jp-table table { border-collapse: collapse; width: 100%; min-width: 560px; font-size: .95rem; margin: 0; }\n.jp-post .jp-table th, .jp-post .jp-table td { padding: .7rem .9rem; text-align: left; vertical-align: top; border-bottom: 1px solid var(--jp-line); }\n.jp-post .jp-table thead th { background: var(--jp-ink); color: #fff; font-weight: 700; }\n.jp-post .jp-table tbody tr:nth-child(even) { background: var(--jp-tint); }\n.jp-post .jp-table td.jp-num, .jp-post .jp-table th.jp-num { text-align: right; font-variant-numeric: tabular-nums; }\n.jp-post .jp-table caption { caption-side: bottom; font-size: .85rem; color: var(--jp-muted); padding: .6rem .9rem; text-align: left; }\n\n\/* Score bars for \"Scored Honestly\" app posts *\/\n.jp-post .jp-score { display: grid; gap: .5rem; margin: 1rem 0 1.5rem; }\n.jp-post .jp-score__row { display: grid; grid-template-columns: minmax(8rem, 12rem) 1fr 2.5rem; gap: .75rem; align-items: center; font-size: .95rem; }\n.jp-post .jp-score__bar { height: .6rem; background: var(--jp-tint); border-radius: 999px; overflow: hidden; }\n.jp-post .jp-score__bar span { display: block; height: 100%; width: var(--jp-w, 0%); background: var(--jp-gold); border-radius: inherit; transition: width .8s ease; }\n.jp-post .jp-score__val { font-variant-numeric: tabular-nums; font-weight: 700; text-align: right; }\n.jp-post .jp-bestfor { display: inline-block; background: var(--jp-tint); color: var(--jp-brand); font-size: .8rem; font-weight: 700; padding: .15rem .6rem; border-radius: 999px; }\n\n\/* Numbered steps (How do you start \/ Day 1-7 \/ Step 1-5) *\/\n.jp-post .jp-steps { list-style: none; counter-reset: jp-step; padding: 0; margin: 1.5rem 0; display: grid; gap: 1rem; }\n.jp-post .jp-steps > li { counter-increment: jp-step; position: relative; padding-left: 3rem; }\n.jp-post .jp-steps > li::before {\n  content: counter(jp-step); position: absolute; left: 0; top: .1rem;\n  width: 2.1rem; height: 2.1rem; border-radius: 50%; display: grid; place-items: center;\n  background: var(--jp-brand); color: #fff; font-weight: 800; font-size: .95rem;\n}\n\n\/* Operator line \/ pull quote *\/\n.jp-post .jp-pull { font-size: 1.35rem; line-height: 1.4; font-weight: 700; border-top: 2px solid var(--jp-ink); border-bottom: 2px solid var(--jp-ink); padding: 1rem 0; margin: 2rem 0; }\n\n\/* \"Is this you?\" self-check quiz *\/\n.jp-post .jp-quiz { border: 1px solid var(--jp-line); border-radius: var(--jp-radius); padding: 1.25rem 1.5rem; margin: 2rem 0; }\n.jp-post .jp-quiz fieldset { border: 0; padding: 0; margin: 0 0 1rem; }\n.jp-post .jp-quiz legend { font-weight: 700; margin-bottom: .4rem; }\n.jp-post .jp-quiz label { display: inline-flex; gap: .4rem; align-items: center; margin-right: 1rem; cursor: pointer; }\n.jp-post .jp-quiz__result { background: var(--jp-tint); border-radius: var(--jp-radius); padding: .9rem 1.1rem; margin-top: .5rem; }\n\n\/* FAQ: native <details>, works with JS off *\/\n.jp-post .jp-faq { margin: 1.5rem 0; border-top: 1px solid var(--jp-line); }\n.jp-post .jp-faq details { border-bottom: 1px solid var(--jp-line); padding: .9rem 0; }\n.jp-post .jp-faq summary { cursor: pointer; font-weight: 700; list-style: none; display: flex; justify-content: space-between; gap: 1rem; }\n.jp-post .jp-faq summary::-webkit-details-marker { display: none; }\n.jp-post .jp-faq summary::after { content: \"+\"; font-size: 1.3rem; line-height: 1; color: var(--jp-brand); flex: none; }\n.jp-post .jp-faq details[open] summary::after { content: \"\u2013\"; }\n.jp-post .jp-faq details > div { padding-top: .5rem; }\n\n\/* Closing aphorism *\/\n.jp-post .jp-closer { font-size: 1.2rem; font-weight: 700; margin-top: 2rem; }\n\n\/* Headings: set explicitly so the theme can't shrink them to body size *\/\n.jp-post h2 { font-size: clamp(1.6rem, 3.6vw, 2.25rem); line-height: 1.2; font-weight: 800; margin-bottom: .6rem; }\n.jp-post h3 { font-size: 1.2rem; line-height: 1.3; font-weight: 700; margin: 1.6rem 0 .4rem; }\n\n\/* Destination headings in \"Where to Go If You Want\u2026\" posts: clear break before each place.\n   Markup stays the same as the published series, just <h2 class=\"jp-dest-title\">. *\/\n.jp-post h2.jp-dest-title {\n  margin-top: 3.5rem; padding-top: 2.5rem; border-top: 1px solid var(--jp-line);\n  font-size: clamp(1.8rem, 4vw, 2.5rem);\n}\n.jp-post h2.jp-dest-title ~ h3 { color: var(--jp-brand); }\n\n\/* Destination section: one per place, same layout every time *\/\n.jp-post .jp-dest { margin-top: 3.5rem; padding-top: 2.75rem; border-top: 1px solid var(--jp-line); }\n.jp-post .jp-dest__head { margin-bottom: 1.25rem; }\n.jp-post .jp-dest__num {\n  margin: 0 0 .35rem; font-size: .78rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--jp-brand);\n}\n.jp-post .jp-dest h2 { margin-top: 0; }\n.jp-post .jp-dest__facts {\n  list-style: none; padding: 0; margin: 1rem 0 0;\n  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .6rem;\n}\n.jp-post .jp-dest__facts li {\n  background: var(--jp-tint); border-radius: var(--jp-radius); padding: .7rem .8rem;\n  font-weight: 700; font-size: .95rem; line-height: 1.35; margin: 0;\n}\n.jp-post .jp-dest__facts span {\n  display: block; font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--jp-muted); margin-bottom: .2rem;\n}\n.jp-post .jp-dest h3 { color: var(--jp-brand); }\n.jp-post .jp-dest h3::before {\n  content: \"\"; display: inline-block; width: .55rem; height: .55rem; border-radius: 50%;\n  background: var(--jp-brand); margin-right: .55rem; vertical-align: .12em;\n}\n\n\/* Operator tip callout *\/\n.jp-post .jp-tip {\n  background: #fff6ef; border-left: 5px solid var(--jp-brand); border-radius: 0 var(--jp-radius) var(--jp-radius) 0;\n  padding: 1rem 1.25rem; margin: 1.75rem 0 0;\n}\n.jp-post .jp-tip p { margin: 0; }\n.jp-post .jp-tip__label { font-size: .75rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--jp-brand); margin-bottom: .3rem !important; }\n\n\/* =====================================================================\n   MOTION (v1.1). The script adds .jp-motion to .jp-post, so with JS off,\n   or with \"reduce motion\" switched on, everything simply shows as normal.\n   ===================================================================== *\/\n.jp-post.jp-motion { --jp-ease: cubic-bezier(.2, .7, .2, 1); }\n\n\/* Scroll reveal: fade + rise as each block enters the screen *\/\n.jp-post.jp-motion .jp-reveal {\n  opacity: 0; transform: translateY(28px);\n  transition: opacity .8s var(--jp-ease), transform .8s var(--jp-ease);\n  transition-delay: var(--jp-d, 0ms);\n  will-change: opacity, transform;\n}\n.jp-post.jp-motion .jp-reveal.is-in { opacity: 1; transform: none; }\n\n\/* Headings slide in from the left with an accent bar that draws itself *\/\n.jp-post.jp-motion h2.jp-reveal { transform: translateX(-24px); position: relative; }\n.jp-post.jp-motion h2.jp-reveal.is-in { transform: none; }\n.jp-post.jp-motion h2::after {\n  content: \"\"; display: block; height: 4px; width: 64px; margin-top: .5rem; border-radius: 4px;\n  background: linear-gradient(90deg, var(--jp-brand), var(--jp-gold));\n  transform: scaleX(0); transform-origin: 0 50%; transition: transform .9s var(--jp-ease) .25s;\n}\n.jp-post.jp-motion h2.is-in::after { transform: scaleX(1); }\n\n\/* Images: soft zoom-out reveal, then gentle parallax while scrolling *\/\n.jp-post figure { margin: 2rem 0; overflow: hidden; border-radius: var(--jp-radius); }\n.jp-post figure img { display: block; width: 100%; height: auto; }\n.jp-post.jp-motion figure.jp-reveal {\n  clip-path: inset(6% 6% 6% 6% round 18px); opacity: 0; transform: none;\n  transition: clip-path 1.1s var(--jp-ease), opacity .8s var(--jp-ease);\n}\n.jp-post.jp-motion figure.jp-reveal.is-in { clip-path: inset(0 0 0 0 round var(--jp-radius)); opacity: 1; }\n.jp-post.jp-motion figure img {\n  scale: 1.14; translate: 0 var(--jp-par, 0px);\n  transition: scale 1.6s var(--jp-ease);\n}\n.jp-post.jp-motion figure.is-in img { scale: 1.07; }\n\n\/* CTA boxes: lift on hover, button shimmer every few seconds, arrow nudge *\/\n.jp-post .jp-cta { transition: box-shadow .3s ease, transform .3s ease; }\n.jp-post .jp-cta:hover, .jp-post.jp-motion .jp-cta.jp-reveal.is-in:hover { box-shadow: 0 14px 40px rgba(20, 33, 43, .14); transform: translateY(-3px); }\n.jp-post .jp-btn { position: relative; overflow: hidden; isolation: isolate; }\n.jp-post.jp-motion .jp-btn::after {\n  content: \"\"; position: absolute; inset: 0; z-index: -1;\n  background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,.45) 50%, transparent 70%);\n  transform: translateX(-120%); animation: jp-shimmer 4.5s ease-in-out infinite 1.5s;\n}\n@keyframes jp-shimmer { 0%, 70% { transform: translateX(-120%); } 100% { transform: translateX(120%); } }\n.jp-post .jp-btn:hover { transform: translateY(-2px) scale(1.02); }\n\n\/* \"Best for\" pills pop in *\/\n.jp-post.jp-motion .jp-bestfor.jp-reveal { transform: scale(.8); }\n.jp-post.jp-motion .jp-bestfor.jp-reveal.is-in { transform: none; transition-timing-function: cubic-bezier(.34, 1.56, .64, 1); }\n\n\/* Pull quote: rules draw in from the centre *\/\n.jp-post.jp-motion .jp-pull {\n  border-color: transparent;\n  background:\n    linear-gradient(var(--jp-ink), var(--jp-ink)) top center \/ 0% 2px no-repeat,\n    linear-gradient(var(--jp-ink), var(--jp-ink)) bottom center \/ 0% 2px no-repeat;\n  transition: background-size 1.1s var(--jp-ease) .2s, opacity .8s var(--jp-ease), transform .8s var(--jp-ease);\n}\n.jp-post.jp-motion .jp-pull.is-in { background-size: 100% 2px, 100% 2px; }\n\n\/* Tables: rows slide in one after another, row hover highlight *\/\n.jp-post.jp-motion .jp-table tbody tr.jp-reveal { transform: translateX(18px); }\n.jp-post.jp-motion .jp-table tbody tr.jp-reveal.is-in { transform: none; }\n.jp-post .jp-table tbody tr { transition: background-color .2s ease; }\n.jp-post .jp-table tbody tr:hover { background: #fff6ef; }\n\n\/* Numbered steps: the number circle pops when the step arrives *\/\n.jp-post.jp-motion .jp-steps > li.jp-reveal::before { transform: scale(0); transition: transform .6s cubic-bezier(.34, 1.56, .64, 1) .2s; }\n.jp-post.jp-motion .jp-steps > li.jp-reveal.is-in::before { transform: scale(1); }\n\n\/* Framework box: a slow light sweep across the dark panel *\/\n.jp-post .jp-framework { position: relative; overflow: hidden; }\n.jp-post.jp-motion .jp-framework::before {\n  content: \"\"; position: absolute; inset: -40%; pointer-events: none;\n  background: radial-gradient(circle at center, rgba(201,154,46,.18), transparent 45%);\n  animation: jp-glow 9s ease-in-out infinite alternate;\n}\n.jp-post .jp-framework > * { position: relative; }\n@keyframes jp-glow { from { transform: translate(-25%, -15%); } to { transform: translate(25%, 15%); } }\n\n\/* FAQ answers ease open *\/\n.jp-post .jp-faq details[open] > div { animation: jp-open .45s var(--jp-ease); }\n.jp-post .jp-faq summary::after { transition: transform .3s ease; }\n.jp-post .jp-faq details[open] summary::after { transform: rotate(180deg); }\n.jp-post .jp-faq summary:hover { color: var(--jp-brand); }\n@keyframes jp-open { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }\n\n\/* Back-to-top button (added by the script) *\/\n.jp-top {\n  position: fixed; right: 18px; bottom: calc(18px + env(safe-area-inset-bottom, 0px)); z-index: 9999;\n  width: 46px; height: 46px; border-radius: 50%; border: 0; cursor: pointer;\n  background: #14212b; color: #fff; font-size: 20px; line-height: 46px; text-align: center;\n  box-shadow: 0 8px 24px rgba(0,0,0,.2);\n  opacity: 0; transform: translateY(16px) scale(.9); pointer-events: none;\n  transition: opacity .3s ease, transform .3s ease;\n}\n.jp-top.is-on { opacity: 1; transform: none; pointer-events: auto; }\n.jp-top:hover { transform: translateY(-3px); }\n\n@media (max-width: 600px) {\n  .jp-post .jp-dest__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n  .jp-post .jp-score__row { grid-template-columns: 1fr 2.5rem; }\n  .jp-post .jp-score__bar { grid-column: 1 \/ -1; grid-row: 2; }\n  .jp-post .jp-cta, .jp-post .jp-framework { padding: 1.15rem; }\n}\n@media (prefers-reduced-motion: reduce) {\n  .jp-post .jp-score__bar span, .jp-post .jp-btn, .jp-post .jp-cta { transition: none; }\n  .jp-post .jp-btn::after, .jp-post .jp-framework::before, .jp-post .jp-faq details[open] > div { animation: none; }\n  .jp-post .jp-cta:hover { transform: none; }\n  .jp-progress { display: none; }\n}\n\n\n\/* =====================================================================\n   Today's layout extras: \"Departures Board\" (Article 46, Thanksgiving Travel 2026)\n   Layered on top of journo-post.css; only applies to .jp-theme-board.\n   Journo colours and fonts are NOT changed (they come from journo-post.css).\n   New this time: every H2 carries a split-flap airport tile (\"NOV 26\",\n   \"DEP\", \"GATE\"...). The week is shown as a dark departures board with\n   crowd dots and Best \/ Good \/ Busy \/ Avoid status, plus a trip checker\n   (fly out \/ fly back selects). Airports to avoid are gate cards, the\n   drive-or-fly math is a slider calculator with two bars, and \"What to\n   skip\" is a crossed-out boarding list. Postcard Operator tip stays.\n   Dane's rule: orange is used ONLY on real buttons.\n   ===================================================================== *\/\n\nbody:has(.jp-theme-board) .jp-progress { background: var(--jp-brand, #0f5c6e); }\n.jp-post.jp-theme-board .jp-cta__eyebrow { color: var(--jp-brand); }\n\n\/* Split-flap tile before each H2 (base h2::after is the motion underline) *\/\n.jp-post.jp-theme-board h2[data-flap] { position: relative; }\n.jp-post.jp-theme-board h2[data-flap]::before {\n  content: attr(data-flap);\n  display: table; margin: 0 0 .7rem; padding: .35rem .6rem .3rem;\n  font: 800 .78rem\/1 ui-monospace, \"SFMono-Regular\", Menlo, Consolas, monospace;\n  letter-spacing: .22em; color: var(--jp-gold);\n  background:\n    linear-gradient(180deg, rgba(255,255,255,.07) 0 49%, rgba(0,0,0,.35) 49% 51%, transparent 51%),\n    var(--jp-ink);\n  border-radius: 4px; box-shadow: 0 2px 0 rgba(0,0,0,.25);\n}\n.jp-post.jp-theme-board h2 { margin-top: 3.25rem; }\n.jp-post.jp-theme-board figure.jp-dest-photo { margin: 3.5rem 0 0; }\n.jp-post.jp-theme-board figure.jp-dest-photo + h2 { margin-top: 1.4rem; }\n\n\/* Departures board *\/\n.jp-theme-board .jp-board {\n  margin: 1.75rem 0; padding: 1.1rem 1.1rem 1.25rem; border-radius: var(--jp-radius);\n  background: var(--jp-ink); color: #e9f1f3;\n  box-shadow: 0 18px 40px rgba(20, 33, 43, .18);\n}\n.jp-theme-board .jp-board__head,\n.jp-theme-board .jp-board__rows li {\n  display: grid; grid-template-columns: 3.2rem 4.4rem minmax(0, 1fr) 4.6rem 6.4rem; gap: .6rem; align-items: center;\n}\n.jp-theme-board .jp-board__head {\n  padding: 0 .55rem .5rem; font-size: .7rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #9fb3ba;\n  border-bottom: 1px solid rgba(255,255,255,.12);\n}\n.jp-post.jp-theme-board .jp-board__rows { list-style: none; margin: 0; padding: 0; display: grid; gap: 3px; }\n.jp-post.jp-theme-board .jp-board__rows li {\n  margin: 0; padding: .55rem; border-radius: 4px;\n  font-family: ui-monospace, \"SFMono-Regular\", Menlo, Consolas, monospace; font-size: .9rem; font-variant-numeric: tabular-nums;\n  background: rgba(255,255,255,.04); transition: background .25s ease, box-shadow .25s ease;\n}\n.jp-theme-board .jp-board__rows li > span:first-child { font-weight: 800; color: #fff; }\n.jp-theme-board .jp-crowd { display: flex; gap: 4px; }\n.jp-theme-board .jp-crowd i { width: .62rem; height: .62rem; border-radius: 2px; background: rgba(255,255,255,.14); }\n.jp-theme-board .jp-crowd i.on { background: #e9f1f3; }\n.jp-theme-board li[data-crowd=\"4\"] .jp-crowd i.on,\n.jp-theme-board li[data-crowd=\"5\"] .jp-crowd i.on { background: var(--jp-gold); }\n.jp-theme-board .jp-status {\n  justify-self: start; padding: .2rem .5rem; border-radius: 3px; font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;\n  border: 1px solid currentColor;\n}\n.jp-theme-board li[data-status=\"best\"] .jp-status { color: #7fd6e6; }\n.jp-theme-board li[data-status=\"good\"] .jp-status { color: #e9f1f3; }\n.jp-theme-board li[data-status=\"busy\"] .jp-status { color: var(--jp-gold); }\n.jp-theme-board li[data-status=\"avoid\"] .jp-status { color: var(--jp-ink); background: var(--jp-gold); border-color: var(--jp-gold); }\n.jp-theme-board li.is-picked { background: rgba(127, 214, 230, .16); box-shadow: inset 3px 0 0 #7fd6e6; }\n.jp-theme-board .jp-board__note { margin: .8rem .2rem 0; font-size: .8rem; color: #9fb3ba; }\n\n\/* Trip checker inside the board *\/\n.jp-theme-board .jp-planner { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px dashed rgba(255,255,255,.2); }\n.jp-post.jp-theme-board .jp-planner__q { margin: 0 0 .6rem; font-weight: 800; color: #fff; }\n.jp-theme-board .jp-planner__pick { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }\n.jp-theme-board .jp-planner__pick label { font-size: .78rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: #9fb3ba; }\n.jp-theme-board .jp-planner__pick select {\n  font: inherit; font-size: .95rem; padding: .45rem .6rem; border-radius: 6px; min-width: 0;\n  background: #fff; color: var(--jp-ink); border: 2px solid transparent; cursor: pointer;\n}\n.jp-theme-board .jp-planner__pick select:focus-visible { outline: 3px solid var(--jp-gold); outline-offset: 2px; }\n.jp-theme-board .jp-planner__out { margin-top: .9rem; display: grid; gap: .55rem; }\n.jp-post.jp-theme-board .jp-planner__out p { margin: 0; }\n.jp-theme-board .jp-meter { height: .55rem; border-radius: 99px; background: rgba(255,255,255,.12); overflow: hidden; }\n.jp-theme-board .jp-meter span { display: block; height: 100%; width: 0; border-radius: 99px; background: linear-gradient(90deg, #7fd6e6, var(--jp-gold)); transition: width .6s var(--jp-ease, ease); }\n.jp-theme-board .jp-verdict { font-weight: 800; color: #fff; }\n.jp-theme-board .jp-verdict b { color: #7fd6e6; }\n.jp-theme-board .jp-verdict.is-bad b { color: var(--jp-gold); }\n\n\/* Airport gate cards *\/\n.jp-theme-board .jp-gates { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .9rem; margin: 1.5rem 0; }\n.jp-theme-board .jp-gate {\n  border: 1px solid var(--jp-line); border-radius: var(--jp-radius); padding: .9rem 1rem 1rem; background: var(--jp-paper); min-width: 0;\n}\n.jp-post.jp-theme-board .jp-gate p { margin: 0; font-size: .95rem; }\n.jp-post.jp-theme-board .jp-gate__code {\n  display: inline-block; margin: 0 0 .5rem !important; padding: .25rem .5rem; border-radius: 4px;\n  font: 800 1.05rem\/1 ui-monospace, \"SFMono-Regular\", Menlo, Consolas, monospace; letter-spacing: .14em;\n  color: var(--jp-gold); background: var(--jp-ink);\n}\n\n\/* Drive or fly calculator *\/\n.jp-theme-board .jp-math {\n  margin: 1.75rem 0; padding: 1.3rem 1.3rem 1.2rem; border: 2px solid var(--jp-brand); border-radius: var(--jp-radius); background: var(--jp-tint);\n}\n.jp-post.jp-theme-board .jp-math__q { margin: 0 0 .8rem; font-weight: 800; font-size: 1.15rem; color: var(--jp-brand); }\n.jp-theme-board .jp-math__inputs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem 1.4rem; }\n.jp-theme-board .jp-math__inputs label { display: flex; justify-content: space-between; gap: .5rem; font-size: .88rem; font-weight: 700; margin-top: .4rem; }\n.jp-theme-board .jp-math__inputs output { font-variant-numeric: tabular-nums; color: var(--jp-brand); }\n.jp-theme-board .jp-math__inputs input[type=\"range\"] { width: 100%; accent-color: var(--jp-brand); }\n.jp-theme-board .jp-math__out { margin-top: 1rem; display: grid; gap: .6rem; }\n.jp-theme-board .jp-bar { display: grid; grid-template-columns: 3.4rem minmax(0, 1fr) auto; gap: .6rem; align-items: center; font-size: .92rem; }\n.jp-theme-board .jp-bar__track { height: 1.1rem; border-radius: 4px; background: rgba(15, 92, 110, .12); overflow: hidden; }\n.jp-theme-board .jp-bar__fill { display: block; height: 100%; width: 0; background: var(--jp-brand); transition: width .5s var(--jp-ease, ease); }\n.jp-theme-board .jp-bar--fly .jp-bar__fill { background: var(--jp-gold); }\n.jp-theme-board .jp-bar b { font-variant-numeric: tabular-nums; }\n.jp-post.jp-theme-board .jp-math__verdict { margin: .3rem 0 0; font-weight: 800; }\n.jp-post.jp-theme-board .jp-math__note { margin: .9rem 0 0; font-size: .8rem; color: var(--jp-muted); }\n\n\/* What to skip: crossed-out boarding list *\/\n.jp-post.jp-theme-board .jp-skiplist { list-style: none; padding: 0; margin: 1.25rem 0; display: grid; gap: .6rem; }\n.jp-post.jp-theme-board .jp-skiplist li {\n  position: relative; margin: 0; padding: .75rem 1rem .75rem 3rem; border: 1px dashed var(--jp-line); border-radius: 8px; background: var(--jp-paper);\n}\n.jp-theme-board .jp-skiplist li::before {\n  content: \"\\2715\"; position: absolute; left: .9rem; top: .7rem; width: 1.4rem; height: 1.4rem; display: grid; place-items: center;\n  font-size: .8rem; font-weight: 800; color: var(--jp-gold); border: 2px solid var(--jp-gold); border-radius: 50%;\n}\n.jp-theme-board .jp-skiplist strong { text-decoration: line-through; text-decoration-color: var(--jp-gold); text-decoration-thickness: 2px; }\n\n\/* Goldilocks tool CTA *\/\n.jp-post.jp-theme-board .jp-cta--tool { border-color: var(--jp-brand); background: var(--jp-tint); }\n\n\/* Operator tip as a stamped paper postcard (recurring feature) *\/\n.jp-theme-board .jp-postcard {\n  position: relative; margin: 1.6rem 0 0; padding: 1.4rem 7.5rem 1.4rem 1.5rem;\n  background:\n    repeating-linear-gradient(180deg, transparent 0 1.9rem, rgba(15, 92, 110, .08) 1.9rem calc(1.9rem + 1px)),\n    #fffaf3;\n  border: 1px solid var(--jp-line); border-radius: 6px;\n  box-shadow: 0 12px 28px rgba(20, 33, 43, .08);\n  transform: rotate(-.4deg);\n}\n.jp-post.jp-theme-board .jp-postcard h3 {\n  margin: 0 0 .35rem; font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; color: var(--jp-brand);\n}\n.jp-post.jp-theme-board .jp-postcard h3::before { display: none; }\n.jp-theme-board .jp-postcard p { margin: 0; }\n.jp-theme-board .jp-postcard::after {\n  content: attr(data-stamp);\n  position: absolute; top: 1rem; right: 1rem; width: 5.25rem; height: 5.25rem;\n  display: grid; place-items: center; text-align: center; padding: .4rem;\n  font-size: .68rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; line-height: 1.1;\n  color: var(--jp-brand); border: 2px dashed var(--jp-brand); border-radius: 50%; opacity: .7; transform: rotate(-9deg);\n}\n.jp-post.jp-motion.jp-theme-board .jp-postcard.jp-reveal { transform: rotate(-2deg) translateY(20px); }\n.jp-post.jp-motion.jp-theme-board .jp-postcard.jp-reveal.is-in { transform: rotate(-.4deg); }\n\n\/* TL;DR label, FAQ questions and Quick answer label are h3s (for Yoast) but keep their usual look *\/\n.jp-post.jp-theme-board .jp-tldr h3.jp-tldr__label {\n  font-size: .78rem; line-height: 1.4; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;\n  color: var(--jp-brand); margin: 0 0 .5rem;\n}\n.jp-post.jp-theme-board .jp-faq summary h3.jp-faq__q {\n  display: inline; margin: 0; font-size: inherit; line-height: inherit; font-weight: 700; color: inherit;\n}\n.jp-post.jp-theme-board .jp-quick h3.jp-quick__label { font-size: 1.0625rem; line-height: 1.7; font-weight: 700; color: inherit; margin: 0 0 .25rem; }\n\n@media (max-width: 760px) {\n  .jp-theme-board .jp-gates { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n}\n@media (max-width: 600px) {\n  .jp-theme-board .jp-board { padding: .9rem .7rem 1rem; }\n  .jp-theme-board .jp-board__head,\n  .jp-theme-board .jp-board__rows li { grid-template-columns: 2.6rem 3.9rem minmax(0, 1fr) 5.6rem; gap: .4rem; }\n  .jp-theme-board .jp-board__head span:nth-child(4),\n  .jp-theme-board .jp-board__rows li > span:nth-child(4) { display: none; }\n  .jp-post.jp-theme-board .jp-board__rows li { font-size: .82rem; padding: .5rem .4rem; }\n  .jp-theme-board .jp-status { font-size: .64rem; padding: .18rem .35rem; }\n  .jp-theme-board .jp-crowd { gap: 3px; }\n  .jp-theme-board .jp-crowd i { width: .5rem; height: .5rem; }\n  .jp-theme-board .jp-gates { grid-template-columns: minmax(0, 1fr); }\n  .jp-theme-board .jp-math__inputs { grid-template-columns: minmax(0, 1fr); }\n  .jp-theme-board .jp-postcard { padding: 4.6rem 1.15rem 1.2rem; }\n  .jp-theme-board .jp-postcard::after { width: 3.9rem; height: 3.9rem; font-size: .52rem; top: .6rem; }\n}\n@media (prefers-reduced-motion: reduce) {\n  .jp-theme-board .jp-postcard, .jp-post.jp-motion.jp-theme-board .jp-postcard.jp-reveal { transform: none; }\n  .jp-theme-board .jp-meter span, .jp-theme-board .jp-bar__fill, .jp-post.jp-theme-board .jp-board__rows li { transition: none; }\n}\n\n<\/style>\n\n<script data-wp-block-html=\"js\">\n\/* =====================================================================\n   Journo blog post behaviour  \u00b7  v1.2  \u00b7  2026-10\n   Vanilla JS, no dependencies, safe to load deferred or inline.\n   Does nothing on pages without a .jp-post wrapper, and every feature\n   degrades gracefully: with JS off the post still reads fully.\n   ===================================================================== *\/\n(function () {\n  'use strict';\n\n  function ready(fn) {\n    if (document.readyState !== 'loading') fn();\n    else document.addEventListener('DOMContentLoaded', fn);\n  }\n\n  function slugify(text) {\n    return text.toLowerCase()\n      .replace(\/[^\\w\\s-]\/g, '')\n      .trim()\n      .replace(\/\\s+\/g, '-')\n      .slice(0, 60);\n  }\n\n  ready(function () {\n    var post = document.querySelector('.jp-post');\n    if (!post || post.dataset.jpInit) return;\n    post.dataset.jpInit = '1';\n\n    \/* 1. Give every H2 a stable id so \"Jump to\" links and shares work *\/\n    var headings = Array.prototype.slice.call(post.querySelectorAll('h2'))\n      .filter(function (h) { return !h.closest('.jp-cta, .jp-tldr, .jp-toc, [data-jp-no-toc]'); });\n    var used = {};\n    headings.forEach(function (h) {\n      if (!h.id) {\n        var id = slugify(h.textContent) || 'section';\n        while (used[id] || document.getElementById(id)) id += '-x';\n        h.id = id;\n      }\n      used[h.id] = true;\n    });\n\n    \/* 2. Build the Jump-to list inside any empty .jp-toc *\/\n    var toc = post.querySelector('.jp-toc');\n    var tocLinks = [];\n    if (toc && headings.length) {\n      var list = toc.querySelector('ol') || toc.appendChild(document.createElement('ol'));\n      if (!list.children.length) {\n        headings.forEach(function (h) {\n          var li = document.createElement('li');\n          var a = document.createElement('a');\n          a.href = '#' + h.id;\n          a.textContent = h.dataset.tocLabel || h.textContent.replace(\/^\\W+\\s*\/, '');\n          li.appendChild(a);\n          list.appendChild(li);\n        });\n      }\n      tocLinks = Array.prototype.slice.call(list.querySelectorAll('a'));\n    }\n\n    \/* 3. Reading progress bar + current-section highlight *\/\n    if (!document.querySelector('.jp-progress')) {\n      var bar = document.createElement('div');\n      bar.className = 'jp-progress';\n      bar.setAttribute('aria-hidden', 'true');\n      document.body.appendChild(bar);\n      var ticking = false;\n      var update = function () {\n        var r = post.getBoundingClientRect();\n        var total = r.height - window.innerHeight;\n        var p = total > 0 ? Math.min(1, Math.max(0, -r.top \/ total)) : 1;\n        bar.style.transform = 'scaleX(' + p + ')';\n        if (tocLinks.length) {\n          var current = null;\n          headings.forEach(function (h) { if (h.getBoundingClientRect().top < 140) current = h.id; });\n          tocLinks.forEach(function (a) { a.setAttribute('aria-current', a.hash === '#' + current ? 'true' : 'false'); });\n        }\n        ticking = false;\n      };\n      window.addEventListener('scroll', function () {\n        if (!ticking) { ticking = true; requestAnimationFrame(update); }\n      }, { passive: true });\n      update();\n    }\n\n    \/* 4. Score bars: <div class=\"jp-score__bar\" data-score=\"4\" data-max=\"5\"> *\/\n    var bars = post.querySelectorAll('.jp-score__bar[data-score]');\n    var fill = function (el) {\n      var pct = (parseFloat(el.dataset.score) \/ parseFloat(el.dataset.max || 5)) * 100;\n      var span = el.querySelector('span') || el.appendChild(document.createElement('span'));\n      span.style.setProperty('--jp-w', Math.max(0, Math.min(100, pct)) + '%');\n    };\n    if ('IntersectionObserver' in window) {\n      var io = new IntersectionObserver(function (entries) {\n        entries.forEach(function (e) { if (e.isIntersecting) { fill(e.target); io.unobserve(e.target); } });\n      }, { threshold: 0.3 });\n      Array.prototype.forEach.call(bars, function (b) { io.observe(b); });\n    } else {\n      Array.prototype.forEach.call(bars, fill);\n    }\n\n    \/* 5. \"Is this you?\" quiz: count \"yes\" answers, show matching result *\/\n    Array.prototype.forEach.call(post.querySelectorAll('.jp-quiz'), function (quiz) {\n      var out = quiz.querySelector('.jp-quiz__result');\n      var results = quiz.querySelectorAll('[data-jp-result]');\n      var render = function () {\n        var groups = quiz.querySelectorAll('fieldset');\n        var answered = 0, yes = 0;\n        Array.prototype.forEach.call(groups, function (g) {\n          var picked = g.querySelector('input:checked');\n          if (picked) { answered++; if (picked.value === 'yes') yes++; }\n        });\n        if (!out || answered < groups.length) return;\n        var match = null;\n        Array.prototype.forEach.call(results, function (r) {\n          if (yes >= parseInt(r.dataset.jpResult, 10)) match = r;\n        });\n        out.innerHTML = match ? match.innerHTML : '';\n        out.hidden = !match;\n      };\n      quiz.addEventListener('change', render);\n    });\n\n    \/* 6. FAQ: keep one answer open at a time (optional, opt-in) *\/\n    Array.prototype.forEach.call(post.querySelectorAll('.jp-faq[data-single]'), function (faq) {\n      faq.addEventListener('toggle', function (e) {\n        if (!e.target.open) return;\n        Array.prototype.forEach.call(faq.querySelectorAll('details[open]'), function (d) {\n          if (d !== e.target) d.open = false;\n        });\n      }, true);\n    });\n\n    \/* 7. CTA click tracking: pushes to GA4\/GTM dataLayer if present *\/\n    post.addEventListener('click', function (e) {\n      var a = e.target.closest && e.target.closest('a.jp-btn, .jp-cta a');\n      if (!a) return;\n      var box = a.closest('.jp-cta');\n      window.dataLayer = window.dataLayer || [];\n      window.dataLayer.push({\n        event: 'journo_cta_click',\n        cta_id: (box && box.dataset.ctaId) || 'unlabelled',\n        cta_text: a.textContent.trim(),\n        cta_url: a.href,\n        post_path: location.pathname\n      });\n    });\n\n    \/* 8. MOTION: scroll reveals, staggered lists, image parallax,\n          number count-up, back-to-top. Skipped for \"reduce motion\". *\/\n    var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    if (reduce || !('IntersectionObserver' in window)) return;\n\n    var targets = [];\n    var add = function (el, delay) {\n      if (!el || el.classList.contains('jp-reveal')) return;\n      if (delay) el.style.setProperty('--jp-d', delay + 'ms');\n      targets.push(el);\n    };\n    \/\/ Top-level blocks of the post\n    var BLOCK = \/^(P|H2|H3|UL|OL|FIGURE|NAV|DIV|ASIDE|BLOCKQUOTE|HEADER)$\/;\n    var addBlocks = function (parent) {\n      Array.prototype.forEach.call(parent.children, function (el) {\n        if (el.tagName === 'SECTION') { addBlocks(el); return; }\n        if (el.classList.contains('jp-dest__head')) { addBlocks(el); return; }\n        if (el.classList.contains('jp-dest__facts')) return;\n        if (BLOCK.test(el.tagName) && !el.classList.contains('jp-steps')) add(el);\n      });\n    };\n    addBlocks(post);\n    \/\/ Staggered children\n    var stagger = function (sel, step) {\n      Array.prototype.forEach.call(post.querySelectorAll(sel), function (list) {\n        Array.prototype.forEach.call(list.children, function (child, i) { add(child, i * step); });\n      });\n    };\n    stagger('.jp-steps', 120);\n    stagger('.jp-table tbody', 90);\n    stagger('.jp-faq', 70);\n    stagger('.jp-dest__facts', 100);\n    Array.prototype.forEach.call(post.querySelectorAll('.jp-tldr li, .jp-framework li'), function (li, i, all) {\n      add(li, 150 + (Array.prototype.indexOf.call(li.parentNode.children, li) * 110));\n    });\n    Array.prototype.forEach.call(post.querySelectorAll('.jp-bestfor'), function (el) { add(el, 120); });\n\n    \/\/ Anything already on screen shows instantly; the rest waits for scroll\n    var vh = window.innerHeight;\n    targets.forEach(function (el) {\n      el.classList.add('jp-reveal');\n      if (el.getBoundingClientRect().top < vh * 0.92) el.classList.add('is-in');\n    });\n    post.classList.add('jp-motion');\n\n    var countUp = function (table) {\n      Array.prototype.forEach.call(table.querySelectorAll('td.jp-num'), function (td) {\n        var text = td.textContent;\n        var nums = text.match(\/\\d[\\d,]*\/g);\n        if (!nums) return;\n        var t0 = null, dur = 1200;\n        var tick = function (t) {\n          if (!t0) t0 = t;\n          var k = Math.min(1, (t - t0) \/ dur);\n          var e = 1 - Math.pow(1 - k, 3);\n          var i = 0;\n          td.textContent = text.replace(\/\\d[\\d,]*\/g, function (n) {\n            var v = Math.round(parseInt(n.replace(\/,\/g, ''), 10) * e);\n            i++;\n            return n.indexOf(',') > -1 ? v.toLocaleString('en-US') : String(v);\n          });\n          if (k < 1) requestAnimationFrame(tick); else td.textContent = text;\n        };\n        requestAnimationFrame(tick);\n      });\n    };\n\n    var revealer = new IntersectionObserver(function (entries) {\n      entries.forEach(function (e) {\n        if (!e.isIntersecting) return;\n        e.target.classList.add('is-in');\n        if (e.target.classList.contains('jp-table')) countUp(e.target);\n        revealer.unobserve(e.target);\n      });\n    }, { rootMargin: '0px 0px -8% 0px', threshold: 0.12 });\n    targets.forEach(function (el) { if (!el.classList.contains('is-in')) revealer.observe(el); });\n\n    \/\/ Parallax on in-body images + back-to-top button\n    var figs = Array.prototype.slice.call(post.querySelectorAll('figure'));\n    var topBtn = document.createElement('button');\n    topBtn.type = 'button';\n    topBtn.className = 'jp-top';\n    topBtn.setAttribute('aria-label', 'Back to top');\n    topBtn.textContent = '\u2191';\n    topBtn.addEventListener('click', function () { window.scrollTo({ top: 0, behavior: 'smooth' }); });\n    document.body.appendChild(topBtn);\n\n    var moving = false;\n    var onScroll = function () {\n      var h = window.innerHeight;\n      figs.forEach(function (f) {\n        var r = f.getBoundingClientRect();\n        if (r.bottom < 0 || r.top > h) return;\n        var off = ((r.top + r.height \/ 2) - h \/ 2) * -0.06;\n        f.style.setProperty('--jp-par', off.toFixed(1) + 'px');\n      });\n      var pr = post.getBoundingClientRect();\n      topBtn.classList.toggle('is-on', -pr.top > h * 0.8);\n      moving = false;\n    };\n    window.addEventListener('scroll', function () {\n      if (!moving) { moving = true; requestAnimationFrame(onScroll); }\n    }, { passive: true });\n    onScroll();\n  });\n})();\n\n\/* Today's extra behaviour (\"Departures Board\"): draws the crowd dots on\n   the Thanksgiving week board, runs the \"Check your Thanksgiving trip\"\n   picker (fly out \/ fly back, lights up both rows, scores crowds and\n   fares) and the \"Drive or fly?\" calculator. Written without less-than\n   signs, line comments or non-ASCII characters so it runs inside the\n   WordPress code block. *\/\n(function () {\n  'use strict';\n  function ready(fn) { if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }\n  ready(function () {\n    var post = document.querySelector('.jp-post.jp-theme-board');\n    if (!post || post.dataset.jpThemeInit) return;\n    post.dataset.jpThemeInit = '1';\n\n    var el = function (tag, cls, text) {\n      var e = document.createElement(tag);\n      if (cls) e.className = cls;\n      if (text) e.appendChild(document.createTextNode(text));\n      return e;\n    };\n    var money = function (n) { return '$' + Math.round(n).toLocaleString('en-US'); };\n\n    \/* 1. Crowd dots on every board row *\/\n    var rows = Array.prototype.slice.call(post.querySelectorAll('.jp-board__rows li'));\n    rows.forEach(function (li) {\n      var box = li.querySelector('.jp-crowd');\n      var n = parseInt(li.dataset.crowd, 10) || 0;\n      if (!box) return;\n      box.setAttribute('aria-label', 'Crowds ' + n + ' of 5');\n      for (var i = 0; 5 > i; i++) {\n        var dot = el('i');\n        if (n > i) dot.className = 'on';\n        box.appendChild(dot);\n      }\n    });\n\n    \/* 2. Trip checker *\/\n    var outSel = post.querySelector('#jp-out');\n    var backSel = post.querySelector('#jp-back');\n    var outBox = post.querySelector('.jp-planner__out');\n    var byDay = {};\n    var label = function (li) {\n      var s = li.querySelectorAll('span');\n      return s[0].textContent + ' ' + s[1].textContent;\n    };\n    rows.forEach(function (li) {\n      byDay[li.dataset.day] = li;\n      var dir = li.dataset.dir;\n      if (outSel && (dir === 'out' || dir === 'both')) outSel.appendChild(new Option(label(li), li.dataset.day));\n      if (backSel && dir === 'back') backSel.appendChild(new Option(label(li), li.dataset.day));\n    });\n    var STATUS = { best: 'a best day', good: 'a good day', busy: 'a busy day', avoid: 'a peak day to avoid' };\n    var check = function () {\n      if (!outSel || !backSel || !outBox) return;\n      var a = byDay[outSel.value], b = byDay[backSel.value];\n      if (!a || !b) return;\n      rows.forEach(function (li) { li.classList.toggle('is-picked', li === a || li === b); });\n      var crowd = (parseInt(a.dataset.crowd, 10) + parseInt(b.dataset.crowd, 10)) \/ 2;\n      var fare = (parseInt(a.dataset.fare, 10) + parseInt(b.dataset.fare, 10)) \/ 2;\n      var peak = 65;\n      while (outBox.firstChild) outBox.removeChild(outBox.firstChild);\n      outBox.appendChild(el('p', '', 'Crowd level: ' + crowd.toFixed(1) + ' of 5. Typical fare premium: about +' + Math.round(fare) + '% over a normal week.'));\n      var meter = el('div', 'jp-meter');\n      var fill = el('span');\n      meter.appendChild(fill);\n      outBox.appendChild(meter);\n      window.requestAnimationFrame(function () { fill.style.width = Math.round(crowd \/ 5 * 100) + '%'; });\n      var v = el('p', 'jp-verdict');\n      var bad = a.dataset.status === 'avoid' || b.dataset.status === 'avoid';\n      var fix = [];\n      if (a.dataset.status === 'avoid' || a.dataset.status === 'busy') fix.push('fly out on Thanksgiving morning or Monday instead of ' + label(a));\n      if (b.dataset.status === 'avoid' || b.dataset.status === 'busy') fix.push('come back Saturday or Tuesday instead of ' + label(b));\n      var head = el('b', '', bad ? 'Peak-day plan. ' : (fix.length ? 'Decent plan. ' : 'Operator plan. '));\n      v.appendChild(head);\n      if (bad) v.classList.add('is-bad');\n      var rest;\n      if (fix.length) {\n        rest = 'To save, ' + fix.join(', and ') + '.';\n      } else {\n        rest = 'Out on ' + STATUS[a.dataset.status] + ', back on ' + STATUS[b.dataset.status] + '. That is about ' + Math.max(0, Math.round(peak - fare)) + ' points cheaper than the Wednesday and Sunday crowd.';\n      }\n      v.appendChild(document.createTextNode(rest));\n      outBox.appendChild(v);\n    };\n    if (outSel && backSel) {\n      outSel.value = 'wed25';\n      backSel.value = 'sun29';\n      outSel.addEventListener('change', check);\n      backSel.addEventListener('change', check);\n      check();\n    }\n\n    \/* 3. Drive or fly calculator *\/\n    var math = post.querySelector('.jp-math');\n    if (!math) return;\n    var GAS = 3.10, HOTEL = 140, AIRPORT = 60;\n    var inp = function (id) { return post.querySelector('#' + id); };\n    var miles = inp('jp-miles'), ppl = inp('jp-ppl'), fareIn = inp('jp-fare'), mpg = inp('jp-mpg');\n    var out = math.querySelector('.jp-math__out');\n    var hrs = function (h) {\n      var whole = Math.floor(h), mins = Math.round((h - whole) * 60);\n      if (mins === 60) { whole += 1; mins = 0; }\n      return whole + 'h ' + (mins ? mins + 'm' : '00m');\n    };\n    var bar = function (cls, name, cost, max, time) {\n      var row = el('div', 'jp-bar ' + cls);\n      row.appendChild(el('span', '', name));\n      var track = el('span', 'jp-bar__track');\n      var fill = el('span', 'jp-bar__fill');\n      track.appendChild(fill);\n      row.appendChild(track);\n      row.appendChild(el('b', '', money(cost) + ' round trip \\u00b7 ' + hrs(time) + ' each way'));\n      window.requestAnimationFrame(function () { fill.style.width = Math.max(4, Math.round(cost \/ max * 100)) + '%'; });\n      return row;\n    };\n    var calc = function () {\n      var M = +miles.value, P = +ppl.value, F = +fareIn.value, G = +mpg.value;\n      inp('jp-miles-o').textContent = M + ' miles';\n      inp('jp-ppl-o').textContent = String(P);\n      inp('jp-fare-o').textContent = money(F);\n      inp('jp-mpg-o').textContent = G + ' mpg';\n      var drive = 2 * M \/ G * GAS + (M > 600 ? 2 * HOTEL : 0);\n      var fly = P * F + AIRPORT;\n      var driveH = M \/ 55 * 1.25;\n      var flyH = 3.5 + M \/ 450;\n      var max = Math.max(drive, fly);\n      while (out.firstChild) out.removeChild(out.firstChild);\n      out.appendChild(bar('jp-bar--drive', 'Drive', drive, max, driveH));\n      out.appendChild(bar('jp-bar--fly', 'Fly', fly, max, flyH));\n      var diff = Math.abs(fly - drive);\n      var text;\n      if (fly > drive) {\n        text = 'Driving saves about ' + money(diff) + ' for ' + P + (P > 1 ? ' people' : ' person') + (driveH > flyH + 2 ? ', but costs over two extra hours each way.' : ' and is close on time.');\n      } else {\n        text = 'Flying saves about ' + money(diff) + (flyH > driveH ? ', though the drive is quicker door to door.' : ' and is faster door to door.');\n      }\n      out.appendChild(el('p', 'jp-math__verdict', text));\n    };\n    [miles, ppl, fareIn, mpg].forEach(function (i) { if (i) i.addEventListener('input', calc); });\n    calc();\n  });\n})();\n\n<\/script>\n\n<div class=\"jp-post jp-theme-board\" data-jp-version=\"1.0\" data-jp-theme=\"departures-board\">\n\n  <figure class=\"jp-hero\">\n    <img decoding=\"async\" src=\"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2026\/11\/thanksgiving-travel-2026-hero-journo.jpeg\" alt=\"Holiday travelers with carry-on bags walking past a departures board at a busy US airport, Thanksgiving travel 2026\" width=\"1200\" height=\"630\" fetchpriority=\"high\">\n  <\/figure>\n\n  <p class=\"jp-teaser\">Thanksgiving travel 2026 is the busiest week of the year to fly or drive. Here is which days to fly, which airports to avoid, whether to drive instead and what to do if you have not booked yet.<\/p>\n\n  <p>Thanksgiving falls on Thursday, November 26, 2026. Last year set records on both fronts. AAA expected a record 81.8 million Americans to travel over the holiday, and TSA screened about 3.13 million people on the Sunday after Thanksgiving, the most in its history. So this year will be crowded again. However, the gap between the best and worst days to fly is bigger than most people think.<\/p>\n  <p>This guide runs Thanksgiving travel 2026 through the Journo Timing Optimization Framework: pick the right days, book on the right clock and skip the moves that cost the most.<\/p>\n\n  <div class=\"jp-tldr\" role=\"note\" aria-label=\"Summary\">\n    <h3 class=\"jp-tldr__label\">TL;DR: Thanksgiving travel 2026<\/h3>\n    <ul>\n      <li><strong>Best days to fly:<\/strong> out on Monday, November 23, or Thanksgiving Day itself; back on Friday, November 27, Saturday the 28th or Tuesday, December 1.<\/li>\n      <li><strong>Worst days to fly:<\/strong> Wednesday, November 25, and Sunday, November 29.<\/li>\n      <li><strong>Book now.<\/strong> Fares usually climb fast in the last two to three weeks, so lock flights by about November 10.<\/li>\n      <li><strong>Drive or fly:<\/strong> for three or more people going under about 400 miles, driving usually wins on cost and is often close on time.<\/li>\n      <li><strong>Avoid:<\/strong> tight connections at the biggest hubs, the last flight of the day and checked bags if you can.<\/li>\n    <\/ul>\n  <\/div>\n\n  <div class=\"jp-cta\" data-cta-id=\"gifts-top\">\n    <p class=\"jp-cta__eyebrow\">Journo Insider<\/p>\n    <p class=\"jp-cta__title\">Get $6,640 in travel gifts \u2014 just for saying &#8220;maybe&#8221;<\/p>\n    <p>Start the 14-day free trial and keep the gifts even if you cancel.<\/p>\n    <a class=\"jp-btn\" href=\"https:\/\/www.journotravelhub.com\/mifge\">Claim your free gifts \u2192<\/a>\n    <p class=\"jp-cta__fine\">No credit card required. Cancel any time.<\/p>\n  <\/div>\n\n  <nav class=\"jp-toc\" aria-label=\"Jump to\">\n    <p class=\"jp-toc__label\">Jump to<\/p>\n    <ol><\/ol>\n  <\/nav>\n\n  <h2 data-flap=\"NOV 26\" data-toc-label=\"The dates\">When is Thanksgiving travel 2026, and how should you plan it?<\/h2>\n  <p>The Thanksgiving travel window runs from Saturday, November 21, to Tuesday, December 1, 2026. Most people squeeze into Tuesday and Wednesday out and Sunday and Monday back, which is exactly why those days cost the most. Our <a href=\"https:\/\/www.journohq.com\/blog\/timing-optimization-framework-travel\/\">Timing Optimization Framework<\/a> says to find the gaps around a spike, and Thanksgiving has three good ones.<\/p>\n  <div class=\"jp-framework\">\n    <span class=\"jp-framework__badge\">Travel Decision Stack<\/span>\n    <h3>Thanksgiving week, layer by layer<\/h3>\n    <ol>\n      <li><strong>Experience.<\/strong> What do you actually need? Thursday dinner with family is the fixed point. Everything else can move.<\/li>\n      <li><strong>Real Cost.<\/strong> Fare plus bags plus parking or rides plus the rental car. A cheap Wednesday fare with a $70 airport ride and two checked bags is not cheap.<\/li>\n      <li><strong>Timing.<\/strong> Shift by one day, and you often skip the worst lines and the highest fares. The board below shows how.<\/li>\n      <li><strong>Execution.<\/strong> Book the flight first, then the car, then seats. Also, fly the first departure of the day, when delays have not stacked up yet.<\/li>\n    <\/ol>\n  <\/div>\n\n  <h2 data-flap=\"DEP\" data-toc-label=\"Best and worst days\">Best and worst days to fly for Thanksgiving 2026<\/h2>\n  <p>Here is the whole week as a departures board. The crowd level and fare level are Journo estimates based on past Thanksgiving patterns. Then pick your out and back days below to see how your plan scores.<\/p>\n\n  <div class=\"jp-board\" id=\"jp-board\" data-jp-no-toc>\n    <div class=\"jp-board__head\" aria-hidden=\"true\"><span>Day<\/span><span>Date<\/span><span>Crowds<\/span><span>Fares<\/span><span>Status<\/span><\/div>\n    <ol class=\"jp-board__rows\">\n      <li data-day=\"sat21\" data-crowd=\"3\" data-fare=\"25\" data-status=\"good\" data-dir=\"out\"><span>Sat<\/span><span>Nov 21<\/span><span class=\"jp-crowd\"><\/span><span>+25%<\/span><span class=\"jp-status\">Good out<\/span><\/li>\n      <li data-day=\"sun22\" data-crowd=\"4\" data-fare=\"40\" data-status=\"busy\" data-dir=\"out\"><span>Sun<\/span><span>Nov 22<\/span><span class=\"jp-crowd\"><\/span><span>+40%<\/span><span class=\"jp-status\">Busy<\/span><\/li>\n      <li data-day=\"mon23\" data-crowd=\"2\" data-fare=\"20\" data-status=\"best\" data-dir=\"out\"><span>Mon<\/span><span>Nov 23<\/span><span class=\"jp-crowd\"><\/span><span>+20%<\/span><span class=\"jp-status\">Best out<\/span><\/li>\n      <li data-day=\"tue24\" data-crowd=\"4\" data-fare=\"45\" data-status=\"busy\" data-dir=\"out\"><span>Tue<\/span><span>Nov 24<\/span><span class=\"jp-crowd\"><\/span><span>+45%<\/span><span class=\"jp-status\">Busy<\/span><\/li>\n      <li data-day=\"wed25\" data-crowd=\"5\" data-fare=\"60\" data-status=\"avoid\" data-dir=\"out\"><span>Wed<\/span><span>Nov 25<\/span><span class=\"jp-crowd\"><\/span><span>+60%<\/span><span class=\"jp-status\">Avoid<\/span><\/li>\n      <li data-day=\"thu26\" data-crowd=\"1\" data-fare=\"0\" data-status=\"best\" data-dir=\"both\"><span>Thu<\/span><span>Nov 26<\/span><span class=\"jp-crowd\"><\/span><span>Lowest<\/span><span class=\"jp-status\">Best out<\/span><\/li>\n      <li data-day=\"fri27\" data-crowd=\"2\" data-fare=\"10\" data-status=\"best\" data-dir=\"back\"><span>Fri<\/span><span>Nov 27<\/span><span class=\"jp-crowd\"><\/span><span>+10%<\/span><span class=\"jp-status\">Best back<\/span><\/li>\n      <li data-day=\"sat28\" data-crowd=\"3\" data-fare=\"25\" data-status=\"good\" data-dir=\"back\"><span>Sat<\/span><span>Nov 28<\/span><span class=\"jp-crowd\"><\/span><span>+25%<\/span><span class=\"jp-status\">Good back<\/span><\/li>\n      <li data-day=\"sun29\" data-crowd=\"5\" data-fare=\"70\" data-status=\"avoid\" data-dir=\"back\"><span>Sun<\/span><span>Nov 29<\/span><span class=\"jp-crowd\"><\/span><span>+70%<\/span><span class=\"jp-status\">Avoid<\/span><\/li>\n      <li data-day=\"mon30\" data-crowd=\"4\" data-fare=\"40\" data-status=\"busy\" data-dir=\"back\"><span>Mon<\/span><span>Nov 30<\/span><span class=\"jp-crowd\"><\/span><span>+40%<\/span><span class=\"jp-status\">Busy<\/span><\/li>\n      <li data-day=\"tue01\" data-crowd=\"2\" data-fare=\"10\" data-status=\"best\" data-dir=\"back\"><span>Tue<\/span><span>Dec 1<\/span><span class=\"jp-crowd\"><\/span><span>+10%<\/span><span class=\"jp-status\">Best back<\/span><\/li>\n    <\/ol>\n    <p class=\"jp-board__note\">Fares: Journo estimate of the typical premium over a normal mid-November weekday fare on the same route. Crowds: 1 (quiet) to 5 (record lines).<\/p>\n    <div class=\"jp-planner\">\n      <p class=\"jp-planner__q\">Check your Thanksgiving trip<\/p>\n      <div class=\"jp-planner__pick\">\n        <label for=\"jp-out\">Fly out<\/label>\n        <select id=\"jp-out\"><\/select>\n        <label for=\"jp-back\">Fly back<\/label>\n        <select id=\"jp-back\"><\/select>\n      <\/div>\n      <div class=\"jp-planner__out\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/div>\n\n  <p>Wednesday before and Sunday after are the two peaks, and they are also the days when one storm in Chicago or Denver causes delays across the country. In contrast, Thanksgiving Day itself is usually the quietest and cheapest day of the whole window, because almost nobody wants to fly on the holiday.<\/p>\n  <div class=\"jp-postcard\" data-stamp=\"Thu Nov 26\">\n    <h3>Operator tip<\/h3>\n    <p>Fly out on the first flight on Thanksgiving morning. You land by lunch, the airport is half empty and the fare is often the lowest of the week. Then come back on Saturday or on Tuesday, December 1, if you can work remotely on Monday. Those two moves alone can save a family of four several hundred dollars.<\/p>\n  <\/div>\n\n  <h2 data-flap=\"BOOK\" data-toc-label=\"When to book\">When should you book Thanksgiving flights in 2026?<\/h2>\n  <p>Now. For most domestic routes, Thanksgiving fares are already well above normal by early November, and they usually climb fastest in the final two to three weeks. So the realistic goal is not to find a bargain. Instead, it is to stop the price from getting worse. Aim to have flights booked by about November 10, 2026.<\/p>\n  <p>Also, run any fare you are unsure of through the <a href=\"https:\/\/www.journohq.com\/tools\/goldilocks-booking-forecaster\/\">Goldilocks Booking Forecaster<\/a>. It tells you whether to book the flight, hotel or car now, wait or keep watching. Before you pay, take two minutes with our <a href=\"https:\/\/www.journohq.com\/blog\/regret-free-trip-audit\/\">Regret-Free Trip Audit<\/a>, so you do not lock in a plan that fails the first question.<\/p>\n\n  <div class=\"jp-cta jp-cta--tool\" data-cta-id=\"goldilocks\">\n    <p class=\"jp-cta__title\">Is today&#8217;s fare good, or will it drop?<\/p>\n    <p>Paste your route and dates, and Goldilocks tells you to book now, wait or watch.<\/p>\n    <a class=\"jp-btn\" href=\"https:\/\/www.journohq.com\/tools\/goldilocks-booking-forecaster\/\">Check my fare with Goldilocks \u2192<\/a>\n  <\/div>\n\n  <div class=\"jp-postcard\" data-stamp=\"Book by Nov 10\">\n    <h3>Operator tip<\/h3>\n    <p>Book a refundable or changeable fare if the gap is small. On a peak week the extra cost is often small, and it lets you rebook for free if a cheaper day opens up or a storm is forecast.<\/p>\n  <\/div>\n\n  <figure class=\"jp-dest-photo\">\n    <img decoding=\"async\" src=\"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2026\/11\/thanksgiving-quiet-airport-gate-journo.jpeg\" alt=\"A quiet gate at a smaller US airport at dawn, an easier choice for Thanksgiving travel 2026\" width=\"1200\" height=\"800\" loading=\"lazy\">\n  <\/figure>\n  <h2 data-flap=\"GATE\" data-toc-label=\"Airports to avoid\">Which airports should you avoid at Thanksgiving?<\/h2>\n  <p>The biggest hubs carry the most people and feel the knock-on delays first. In addition, the northern hubs carry real snow risk by late November. So if you have a choice, use a smaller airport nearby, or at least avoid connecting through the big ones.<\/p>\n  <div class=\"jp-gates\">\n    <div class=\"jp-gate\">\n      <p class=\"jp-gate__code\">ORD<\/p>\n      <p><strong>Chicago O&#8217;Hare.<\/strong> Busy and exposed to early snow. Try Chicago Midway (MDW) or Milwaukee (MKE) instead.<\/p>\n    <\/div>\n    <div class=\"jp-gate\">\n      <p class=\"jp-gate__code\">ATL<\/p>\n      <p><strong>Atlanta.<\/strong> The busiest airport in the country, with long security lines on the peak days. If you must connect, leave at least 90 minutes.<\/p>\n    <\/div>\n    <div class=\"jp-gate\">\n      <p class=\"jp-gate__code\">DEN<\/p>\n      <p><strong>Denver.<\/strong> Huge and often windy or snowy in late November. Avoid it as a connection if a nonstop exists.<\/p>\n    <\/div>\n    <div class=\"jp-gate\">\n      <p class=\"jp-gate__code\">EWR<\/p>\n      <p><strong>New York area.<\/strong> Newark, JFK and LaGuardia all run near capacity. Look at Westchester (HPN), Long Island MacArthur (ISP) or Newburgh (SWF).<\/p>\n    <\/div>\n    <div class=\"jp-gate\">\n      <p class=\"jp-gate__code\">LAX<\/p>\n      <p><strong>Los Angeles.<\/strong> The airport roads jam before the terminals do. Burbank (BUR), Long Beach (LGB) or Ontario (ONT) are far easier.<\/p>\n    <\/div>\n    <div class=\"jp-gate\">\n      <p class=\"jp-gate__code\">DFW<\/p>\n      <p><strong>Dallas.<\/strong> Big connecting hub with thunderstorm and ice risk. Dallas Love Field (DAL) is the calmer option for nonstops.<\/p>\n    <\/div>\n  <\/div>\n  <p>If a connection is unavoidable, check it before you book. The <a href=\"https:\/\/www.journohq.com\/tools\/layover-maximizer\/\">Layover Maximizer<\/a> shows whether a layover is long enough to be safe, and a 45-minute connection on Wednesday at a big hub is a gamble.<\/p>\n  <div class=\"jp-postcard\" data-stamp=\"First flight\">\n    <h3>Operator tip<\/h3>\n    <p>Pick the first departure of the day, even if it means a 5 a.m. alarm. Morning flights leave on time far more often, because the plane is already at the gate and the day&#8217;s delays have not started.<\/p>\n  <\/div>\n\n  <figure class=\"jp-dest-photo\">\n    <img decoding=\"async\" src=\"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2026\/11\/thanksgiving-road-trip-highway-autumn-journo.jpeg\" alt=\"A family car on a quiet autumn highway at sunrise, driving instead of flying for Thanksgiving\" width=\"1200\" height=\"800\" loading=\"lazy\">\n  <\/figure>\n  <h2 data-flap=\"ROAD\" data-toc-label=\"Drive or fly\">Should you drive or fly for Thanksgiving 2026?<\/h2>\n  <p>Most Americans drive at Thanksgiving, and for good reason. Every extra traveler adds a full airfare, but adds almost nothing to the cost of a car. On the other hand, the roads are worst on Tuesday and Wednesday afternoons and on Sunday, so a short drive can take far longer than the map says. Set your own numbers below.<\/p>\n\n  <div class=\"jp-math\" id=\"jp-math\" data-jp-no-toc>\n    <p class=\"jp-math__q\">Drive or fly? Run your numbers<\/p>\n    <div class=\"jp-math__inputs\">\n      <label for=\"jp-miles\">Distance one way <output id=\"jp-miles-o\">350 miles<\/output><\/label>\n      <input type=\"range\" id=\"jp-miles\" min=\"100\" max=\"1200\" step=\"25\" value=\"350\">\n      <label for=\"jp-ppl\">Travelers <output id=\"jp-ppl-o\">3<\/output><\/label>\n      <input type=\"range\" id=\"jp-ppl\" min=\"1\" max=\"6\" step=\"1\" value=\"3\">\n      <label for=\"jp-fare\">Round-trip fare per person <output id=\"jp-fare-o\">$420<\/output><\/label>\n      <input type=\"range\" id=\"jp-fare\" min=\"150\" max=\"900\" step=\"10\" value=\"420\">\n      <label for=\"jp-mpg\">Car fuel economy <output id=\"jp-mpg-o\">28 mpg<\/output><\/label>\n      <input type=\"range\" id=\"jp-mpg\" min=\"15\" max=\"50\" step=\"1\" value=\"28\">\n    <\/div>\n    <div class=\"jp-math__out\" aria-live=\"polite\"><\/div>\n    <p class=\"jp-math__note\">Assumes gas at about $3.10 a gallon, holiday traffic adding about 25% to drive time, one hotel night each way past 600 miles, about $60 in airport parking or rides, and 3.5 hours of airport time on top of the flight. Journo estimates.<\/p>\n  <\/div>\n\n  <p>As a rule, driving wins for three or more people under about 400 miles. For a solo traveler, flying usually wins past about 250 miles, if the fare is reasonable. If you drive, leave before 7 a.m. on Wednesday or go on Thanksgiving morning, and come back on Saturday, not Sunday.<\/p>\n  <div class=\"jp-postcard\" data-stamp=\"Drive smart\">\n    <h3>Operator tip<\/h3>\n    <p>If you fly and need a car, compare the airport rental with an off-airport branch a short ride away. Airport locations add fees and run out of cars at Thanksgiving. Before you book either one, paste its recent reviews into <a href=\"https:\/\/www.journohq.com\/tools\/review-genie\/\">Review Genie<\/a>, which flags the branches with long lines and surprise charges.<\/p>\n  <\/div>\n\n  <h2 data-flap=\"SKIP\" data-toc-label=\"What to skip\">What should you skip for Thanksgiving travel 2026?<\/h2>\n  <ul class=\"jp-skiplist\">\n    <li><strong>Wednesday afternoon flights.<\/strong> They are the most crowded and the most likely to be delayed into the evening.<\/li>\n    <li><strong>The Sunday return.<\/strong> It was the busiest day in TSA&#8217;s history last year. Saturday or Tuesday is calmer and usually cheaper.<\/li>\n    <li><strong>Checked bags.<\/strong> Carry-on only means no bag fees, no waiting at the carousel and an easy rebook if your flight is cancelled.<\/li>\n    <li><strong>Basic economy with kids.<\/strong> It often means no seat choice, so a family may end up apart. Pay for standard economy or choose seats early.<\/li>\n    <li><strong>The last flight of the night.<\/strong> If it cancels, there is nothing left to rebook on until the next day.<\/li>\n  <\/ul>\n\n  <h2 data-flap=\"PLAN B\" data-toc-label=\"Not booked yet?\">Haven&#8217;t booked yet? Your Thanksgiving plan B<\/h2>\n  <p>If the fares to see family look painful, you still have options. First, fly on Thanksgiving Day and come home on Tuesday, which is often the cheapest pair of the week. Second, turn it into a trip. While US airports are packed, the week is quiet in much of Europe, Japan and Mexico, and our guide to the <a href=\"https:\/\/www.journohq.com\/blog\/shoulder-season-destinations-2026\/\">20 best shoulder season destinations for 2026<\/a> lists the places at their best in late November. <!-- FORWARD LINK: Article 45 \"Best Destinations by Month: The Full 2026 Travel Calendar\" (slug best-time-to-travel-by-month-2026) is not marked live yet. Kurt: wrap the next phrase in a link to it once it is published. -->Our month-by-month travel calendar has more November picks. The <a href=\"https:\/\/www.journohq.com\/tools\/trip-day-optimizer\/\">Trip Day Optimizer<\/a> then plans each day around holiday opening hours.<\/p>\n\n  <p class=\"jp-pull\">The holiday is fixed. The days around it are not. Move one day, and Thanksgiving travel gets cheaper and calmer.<\/p>\n\n  <div class=\"jp-quick\">\n    <h3 class=\"jp-quick__label\">Quick answer<\/h3>\n    For Thanksgiving travel 2026, the best days to fly are Monday, November 23, or Thanksgiving Day, November 26, going out, and Friday, November 27, Saturday, November 28, or Tuesday, December 1, coming back. The worst days are Wednesday, November 25, and Sunday, November 29. Book flights by about November 10, take the first flight of the day, avoid tight connections at big hubs such as Chicago O&#8217;Hare, Atlanta and Denver, and drive if three or more of you are going under about 400 miles.\n  <\/div>\n\n  <div class=\"jp-cta\" data-cta-id=\"gifts-bottom\">\n    <p class=\"jp-cta__title\">Try Journo Insider \u2014 keep the gifts no matter what<\/p>\n    <a class=\"jp-btn\" href=\"https:\/\/www.journotravelhub.com\/mifge\">Say &#8220;maybe&#8221; and claim your gifts \u2192<\/a>\n  <\/div>\n\n  <h2>Thanksgiving travel 2026 FAQ<\/h2>\n  <div class=\"jp-faq\">\n    <details>\n      <summary><h3 class=\"jp-faq__q\">What is the best day to fly for Thanksgiving 2026?<\/h3><\/summary>\n      <div><p>Thanksgiving Day itself, Thursday, November 26, is usually the cheapest and quietest day to fly out. Monday, November 23, is the best choice if you want to arrive early. For the trip home, Friday the 27th, Saturday the 28th or Tuesday, December 1, beat Sunday by a wide margin.<\/p><\/div>\n    <\/details>\n    <details>\n      <summary><h3 class=\"jp-faq__q\">What is the worst day to travel for Thanksgiving?<\/h3><\/summary>\n      <div><p>The Wednesday before and the Sunday after are the worst days, both in the air and on the roads. The Sunday after Thanksgiving 2025 was the busiest day TSA has ever recorded, with about 3.13 million people screened.<\/p><\/div>\n    <\/details>\n    <details>\n      <summary><h3 class=\"jp-faq__q\">Is it too late to book Thanksgiving flights?<\/h3><\/summary>\n      <div><p>No, but prices usually rise fastest in the last two to three weeks. So book by about November 10, 2026, and choose Thanksgiving Day or Monday to fly out if you want the best remaining fares.<\/p><\/div>\n    <\/details>\n    <details>\n      <summary><h3 class=\"jp-faq__q\">Is it cheaper to drive or fly for Thanksgiving?<\/h3><\/summary>\n      <div><p>For three or more people under about 400 miles each way, driving is almost always cheaper and often close on total time. For one or two people going farther, flying usually wins, as long as you avoid the peak days.<\/p><\/div>\n    <\/details>\n    <details>\n      <summary><h3 class=\"jp-faq__q\">What time of day is best to fly at Thanksgiving?<\/h3><\/summary>\n      <div><p>The first flights of the morning. They are the most likely to leave on time, and if they are cancelled, you still have the rest of the day to rebook.<\/p><\/div>\n    <\/details>\n  <\/div>\n\n  <p class=\"jp-closer\">Thanksgiving travel 2026 will break records again. You do not have to be part of the crush. Fly on the quiet days, book this week and keep one day of slack, and the holiday is about the table, not the airport.<\/p>\n\n<\/div>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\"@type\": \"Question\", \"name\": \"What is the best day to fly for Thanksgiving 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Thanksgiving Day itself, Thursday, November 26, is usually the cheapest and quietest day to fly out. Monday, November 23, is the best choice if you want to arrive early. For the trip home, Friday the 27th, Saturday the 28th or Tuesday, December 1, beat Sunday by a wide margin.\"}},\n    {\"@type\": \"Question\", \"name\": \"What is the worst day to travel for Thanksgiving?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"The Wednesday before and the Sunday after are the worst days, both in the air and on the roads. The Sunday after Thanksgiving 2025 was the busiest day TSA has ever recorded, with about 3.13 million people screened.\"}},\n    {\"@type\": \"Question\", \"name\": \"Is it too late to book Thanksgiving flights?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"No, but prices usually rise fastest in the last two to three weeks. So book by about November 10, 2026, and choose Thanksgiving Day or Monday to fly out if you want the best remaining fares.\"}},\n    {\"@type\": \"Question\", \"name\": \"Is it cheaper to drive or fly for Thanksgiving?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"For three or more people under about 400 miles each way, driving is almost always cheaper and often close on total time. For one or two people going farther, flying usually wins, as long as you avoid the peak days.\"}},\n    {\"@type\": \"Question\", \"name\": \"What time of day is best to fly at Thanksgiving?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"The first flights of the morning. They are the most likely to leave on time, and if they are cancelled, you still have the rest of the day to rebook.\"}}\n  ]\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>The best and worst days to fly for Thanksgiving 2026, when to book, which airports to avoid and whether to drive instead.<\/p>\n","protected":false},"author":2,"featured_media":18073,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[14759,852],"tags":[15036,15035,15034,15033,14949,15032,15031,14865],"class_list":["post-18077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-destinations","category-travel-tips","tag-airport-tips","tag-best-days-to-fly-thanksgiving","tag-drive-or-fly","tag-holiday-travel","tag-operator-tips","tag-thanksgiving-flights","tag-thanksgiving-travel-2026","tag-travel-decision-stack"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Thanksgiving Travel 2026: When to Book, When to Fly, and What to Skip<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Thanksgiving Travel 2026: When to Book, When to Fly, and What to Skip\" \/>\n<meta property=\"og:description\" content=\"The best and worst days to fly for Thanksgiving 2026, when to book, which airports to avoid and whether to drive instead.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/\" \/>\n<meta property=\"og:site_name\" content=\"Journo Travel Journal\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/JournoHQ\/\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/JournoHQ\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-03T17:30:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2026\/11\/thanksgiving-travel-2026-hero-journo.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"541\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Dane Homenick\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@danehomenick\" \/>\n<meta name=\"twitter:site\" content=\"@journohq\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dane Homenick\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/thanksgiving-travel-2026\\\/\",\"url\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/thanksgiving-travel-2026\\\/\",\"name\":\"Thanksgiving Travel 2026: When to Book, When to Fly, and What to Skip\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/thanksgiving-travel-2026\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/thanksgiving-travel-2026\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/thanksgiving-travel-2026-hero-journo.jpeg\",\"datePublished\":\"2026-11-03T17:30:00+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.journohq.com\\\/blog\\\/thanksgiving-travel-2026\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/thanksgiving-travel-2026\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/thanksgiving-travel-2026-hero-journo.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/thanksgiving-travel-2026-hero-journo.jpeg\",\"width\":1024,\"height\":541,\"caption\":\"Holiday travelers with carry-on bags walking past a departures board at a busy US airport, Thanksgiving travel 2026\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/\",\"name\":\"Journo Travel Journal\",\"description\":\"Travel More, For Less,  &amp; Share It In A More Beautiful Way\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/#organization\",\"name\":\"Journo Travel Journal\",\"url\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/logo1.png\",\"contentUrl\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/logo1.png\",\"width\":484,\"height\":95,\"caption\":\"Journo Travel Journal\"},\"image\":{\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/JournoHQ\\\/\",\"https:\\\/\\\/x.com\\\/journohq\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.journohq.com\\\/blog\\\/#\\\/schema\\\/person\\\/d1486e120db18ac12a8ad856d7f1bbb8\",\"name\":\"Dane Homenick\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/442c1e18b8c50ee122d3d535c1fc7a4da1d124402fff0c8a5ee7a411dc87e9af?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/442c1e18b8c50ee122d3d535c1fc7a4da1d124402fff0c8a5ee7a411dc87e9af?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/442c1e18b8c50ee122d3d535c1fc7a4da1d124402fff0c8a5ee7a411dc87e9af?s=96&d=mm&r=g\",\"caption\":\"Dane Homenick\"},\"description\":\"Founder and Chief Coffee Getter of Journo Travel Co., this dude wants nothing more than to explore the world with his fam by his side and to help others do the same in their lives. Oh, and maybe put back a few beers with new and old friends here and there :)\",\"sameAs\":[\"https:\\\/\\\/www.journohq.com\",\"https:\\\/\\\/www.facebook.com\\\/JournoHQ\\\/\",\"https:\\\/\\\/x.com\\\/danehomenick\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Thanksgiving Travel 2026: When to Book, When to Fly, and What to Skip","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/","og_locale":"en_US","og_type":"article","og_title":"Thanksgiving Travel 2026: When to Book, When to Fly, and What to Skip","og_description":"The best and worst days to fly for Thanksgiving 2026, when to book, which airports to avoid and whether to drive instead.","og_url":"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/","og_site_name":"Journo Travel Journal","article_publisher":"https:\/\/www.facebook.com\/JournoHQ\/","article_author":"https:\/\/www.facebook.com\/JournoHQ\/","article_published_time":"2026-11-03T17:30:00+00:00","og_image":[{"width":1024,"height":541,"url":"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2026\/11\/thanksgiving-travel-2026-hero-journo.jpeg","type":"image\/jpeg"}],"author":"Dane Homenick","twitter_card":"summary_large_image","twitter_creator":"@danehomenick","twitter_site":"@journohq","twitter_misc":{"Written by":"Dane Homenick","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/","url":"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/","name":"Thanksgiving Travel 2026: When to Book, When to Fly, and What to Skip","isPartOf":{"@id":"https:\/\/www.journohq.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/#primaryimage"},"image":{"@id":"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/#primaryimage"},"thumbnailUrl":"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2026\/11\/thanksgiving-travel-2026-hero-journo.jpeg","datePublished":"2026-11-03T17:30:00+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.journohq.com\/blog\/thanksgiving-travel-2026\/#primaryimage","url":"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2026\/11\/thanksgiving-travel-2026-hero-journo.jpeg","contentUrl":"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2026\/11\/thanksgiving-travel-2026-hero-journo.jpeg","width":1024,"height":541,"caption":"Holiday travelers with carry-on bags walking past a departures board at a busy US airport, Thanksgiving travel 2026"},{"@type":"WebSite","@id":"https:\/\/www.journohq.com\/blog\/#website","url":"https:\/\/www.journohq.com\/blog\/","name":"Journo Travel Journal","description":"Travel More, For Less,  &amp; Share It In A More Beautiful Way","publisher":{"@id":"https:\/\/www.journohq.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.journohq.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.journohq.com\/blog\/#organization","name":"Journo Travel Journal","url":"https:\/\/www.journohq.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.journohq.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2025\/09\/logo1.png","contentUrl":"https:\/\/www.journohq.com\/blog\/wp-content\/uploads\/2025\/09\/logo1.png","width":484,"height":95,"caption":"Journo Travel Journal"},"image":{"@id":"https:\/\/www.journohq.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/JournoHQ\/","https:\/\/x.com\/journohq"]},{"@type":"Person","@id":"https:\/\/www.journohq.com\/blog\/#\/schema\/person\/d1486e120db18ac12a8ad856d7f1bbb8","name":"Dane Homenick","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/442c1e18b8c50ee122d3d535c1fc7a4da1d124402fff0c8a5ee7a411dc87e9af?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/442c1e18b8c50ee122d3d535c1fc7a4da1d124402fff0c8a5ee7a411dc87e9af?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/442c1e18b8c50ee122d3d535c1fc7a4da1d124402fff0c8a5ee7a411dc87e9af?s=96&d=mm&r=g","caption":"Dane Homenick"},"description":"Founder and Chief Coffee Getter of Journo Travel Co., this dude wants nothing more than to explore the world with his fam by his side and to help others do the same in their lives. Oh, and maybe put back a few beers with new and old friends here and there :)","sameAs":["https:\/\/www.journohq.com","https:\/\/www.facebook.com\/JournoHQ\/","https:\/\/x.com\/danehomenick"]}]}},"_links":{"self":[{"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/posts\/18077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/comments?post=18077"}],"version-history":[{"count":2,"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/posts\/18077\/revisions"}],"predecessor-version":[{"id":18079,"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/posts\/18077\/revisions\/18079"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/media\/18073"}],"wp:attachment":[{"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/media?parent=18077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/categories?post=18077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.journohq.com\/blog\/wp-json\/wp\/v2\/tags?post=18077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}