How to Add Free Travel Widgets to Your Blog in 2026 (WordPress, Squarespace, Ghost)
Step-by-step guide to embedding free travel widgets on WordPress, Squarespace, and Ghost. Carry-on checkers, bag fee calculators, and size tools in minutes.
On this page
- The Three Widgets
- Embed Code
- Carry-On Size Widget
- Bag Fit Checker Widget
- Checked Bag Fee Calculator Widget
- WordPress
- Block Editor (Gutenberg)
- Classic Editor
- Elementor
- WordPress.com Limitations
- Squarespace
- Squarespace Plan Requirements
- Squarespace Tips
- Ghost
- Ghost Tips
- Other Platforms
- Customization Reference
- Widget-Specific Parameters
- Example: Dark Theme with Custom Color
- Example: Pre-Filled Bag Review
- Troubleshooting
Adding a travel widget to your blog takes about five minutes and a short HTML snippet. No plugin, no account, no API key. You pick a widget, copy the embed code, paste it into a Custom HTML block (WordPress), Code Block (Squarespace), or HTML card (Ghost), and publish. The widget handles everything else: auto-resizing, theme matching, and keeping airline data current without you touching it again.
This guide covers three free embeddable airline widgets and shows you exactly how to add them on the three most popular blogging platforms. Every widget is under 50 KB, sets zero cookies, and auto-updates when airline policies change.
The Three Widgets
Each widget serves a different reader question. You can embed one, two, or all three depending on what your content covers.
Carry-On Size Widget shows verified carry-on and personal item dimensions, weight limits, gate-check risk, and fees for 75+ airlines. Best for airline review posts, packing guides, and “which airline should I fly” content. Readers pick an airline from a dropdown and see everything they need to know about that carrier’s bag rules.
Bag Fit Checker Widget lets readers enter their bag dimensions (or click a preset like “standard roller 22x14x9”) and see which airlines accept it. Best for luggage review posts, “does this bag fit” content, and carry-on packing guides. You can pre-configure the dimensions via URL parameters so the widget loads with results already showing.
Checked Bag Fee Widget compares first bag, second bag, overweight (51-70 lb, 71-100 lb), and oversize (63-80 in) fees across 50+ airlines in a sortable table. Best for budget travel posts, “how to avoid bag fees” content, and airline comparison articles.
Embed Code
Every widget uses the same short snippet format: an iframe, an attribution line, and a resize script. Copy the code below, or use the live customizer on each widget’s page to configure colors, themes, and sizing visually before copying. If you already have an older embed without the attribution line, it will keep working, just swap in the new snippet whenever convenient.
Carry-On Size Widget
<div style="box-sizing:border-box !important;display:block !important;margin:16px auto !important;max-width:640px !important;width:100% !important;position:relative;text-align:left;line-height:normal;">
<iframe
src="https://vientapps.com/embed/carry-on/?theme=light&attribution=external"
style="box-sizing:border-box !important;display:block !important;margin:0 !important;width:100% !important;max-width:100% !important;border:1px solid #e5e7eb;border-radius:12px 12px 0 0;overflow:hidden;background:#ffffff;"
height="580"
loading="lazy"
title="Carry-on size checker by Vientapps">
</iframe>
<div style="box-sizing:border-box !important;display:flex !important;margin:0 !important;width:100% !important;max-width:100% !important;padding:8px 16px;border:1px solid #e5e7eb;border-top:0;border-radius:0 0 12px 12px;background:#ffffff;color:#6b7280;font-size:11px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.4;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px 12px;">
<span>Verify with airline before flying.</span>
<span>
<a href="https://vientapps.com/tools/carry-on-size/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Powered by Vientapps</a>
<span style="margin:0 4px;opacity:0.5;">·</span>
<a href="https://vientapps.com/terms/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Terms</a>
</span>
</div>
</div>
<script src="https://vientapps.com/embed/resize.js" async></script>
Bag Fit Checker Widget
<div style="box-sizing:border-box !important;display:block !important;margin:16px auto !important;max-width:640px !important;width:100% !important;position:relative;text-align:left;line-height:normal;">
<iframe
src="https://vientapps.com/embed/bag-fit/?theme=light&attribution=external"
style="box-sizing:border-box !important;display:block !important;margin:0 !important;width:100% !important;max-width:100% !important;border:1px solid #e5e7eb;border-radius:12px 12px 0 0;overflow:hidden;background:#ffffff;"
height="540"
loading="lazy"
title="Bag fit checker by Vientapps">
</iframe>
<div style="box-sizing:border-box !important;display:flex !important;margin:0 !important;width:100% !important;max-width:100% !important;padding:8px 16px;border:1px solid #e5e7eb;border-top:0;border-radius:0 0 12px 12px;background:#ffffff;color:#6b7280;font-size:11px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.4;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px 12px;">
<span>Verify with airline before flying.</span>
<span>
<a href="https://vientapps.com/tools/carry-on-size/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Powered by Vientapps</a>
<span style="margin:0 4px;opacity:0.5;">·</span>
<a href="https://vientapps.com/terms/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Terms</a>
</span>
</div>
</div>
<script src="https://vientapps.com/embed/resize.js" async></script>
Checked Bag Fee Calculator Widget
<div style="box-sizing:border-box !important;display:block !important;margin:16px auto !important;max-width:640px !important;width:100% !important;position:relative;text-align:left;line-height:normal;">
<iframe
src="https://vientapps.com/embed/checked-bag-fees/?theme=light&attribution=external"
style="box-sizing:border-box !important;display:block !important;margin:0 !important;width:100% !important;max-width:100% !important;border:1px solid #e5e7eb;border-radius:12px 12px 0 0;overflow:hidden;background:#ffffff;"
height="640"
loading="lazy"
title="Checked bag fee calculator by Vientapps">
</iframe>
<div style="box-sizing:border-box !important;display:flex !important;margin:0 !important;width:100% !important;max-width:100% !important;padding:8px 16px;border:1px solid #e5e7eb;border-top:0;border-radius:0 0 12px 12px;background:#ffffff;color:#6b7280;font-size:11px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.4;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px 12px;">
<span>Verify with airline before flying.</span>
<span>
<a href="https://vientapps.com/tools/checked-bag-fees/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Powered by Vientapps</a>
<span style="margin:0 4px;opacity:0.5;">·</span>
<a href="https://vientapps.com/terms/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Terms</a>
</span>
</div>
</div>
<script src="https://vientapps.com/embed/resize.js" async></script>
You only need the resize.js script once per page, even if you embed multiple widgets.
WordPress
WordPress is the most common platform for travel blogs, and embedding works the same whether you’re on self-hosted WordPress.org or WordPress.com Business plan.
Block Editor (Gutenberg)
- Open the post or page where you want the widget
- Click the + button to add a new block
- Search for Custom HTML and select it
- Paste the embed snippet into the block
- Click Preview to confirm the widget renders in the editor
- Publish or update the page
The widget appears immediately in the preview. If you see raw HTML instead of the widget, make sure you selected “Custom HTML” and not “Paragraph” or “Code.”
Classic Editor
- Switch to the Text tab (not Visual) in the editor
- Place your cursor where you want the widget
- Paste the embed code
- Switch back to Visual to confirm the iframe placeholder appears
- Publish or update
The Classic Editor’s Visual mode may show a gray placeholder instead of a live preview. This is normal. The widget renders correctly on the published page.
Elementor
- Drag an HTML widget onto your page layout
- Paste the embed code into the HTML content field
- The widget preview appears in the Elementor canvas
- Save and publish
WordPress.com Limitations
WordPress.com Personal and Premium plans do not allow custom HTML blocks with iframes. You need a Business plan or higher to embed these widgets. Self-hosted WordPress.org has no restrictions.
Squarespace
Squarespace supports custom HTML through Code Blocks, but only on Business plan and above.
- Open the page editor and click + to add a new content block
- Select Code from the block menu (under “More”)
- Paste the embed snippet into the code editor
- Uncheck “Display Source” if it’s checked (you want the rendered widget, not raw code)
- Click outside the block to close the editor
- Save and publish
Squarespace Plan Requirements
- Personal plan: No Code Block support. You cannot embed custom HTML widgets.
- Business plan: Code Blocks are available. This is the minimum plan for widget embedding.
- Commerce plans: Code Blocks are available.
Squarespace Tips
- If the widget appears too narrow, remove the
max-widthfrom the iframe’s style attribute so it fills the full content width - Squarespace’s editor may not show a live preview of the widget. Check the published page to confirm it renders
- For sidebar placement, add
compact=trueto the iframe URL and reduce max-width to 360px
Ghost
Ghost supports custom HTML natively on all plans, including the free tier.
- Open the post editor
- Click the + button on a new line (or type
/htmlto jump directly to the HTML card) - Select HTML from the card menu
- Paste the embed snippet
- Click outside the card to close the editor. You’ll see a gray “HTML” placeholder in the editor.
- Preview or publish the post to see the rendered widget
Ghost Tips
- Ghost’s editor does not render iframes inline. The gray “HTML” placeholder is normal. The widget renders on the published page.
- Ghost supports HTML cards on all plans (Free, Creator, Team, Business). No plan upgrade needed.
- For best results, place the HTML card between text paragraphs rather than at the very top of the post
- If you embed all three widgets in one post, you only need the
resize.jsscript tag once. Include it after the last iframe.
Other Platforms
The embed code is standard HTML that works on any platform supporting iframes.
Webflow: Add a Custom Code Embed element to your page. Paste the iframe and script. Publish.
Wix: From the editor, click Add (+), select Embed Code, choose “Embed a Widget.” Paste the iframe code. Wix may require you to adjust the iframe height manually since it doesn’t always auto-resize.
Jekyll / Hugo / Astro / Next.js: Paste the iframe directly into your markdown or template file. Most static site generators pass raw HTML through to the output.
Plain HTML: Paste the code anywhere in your <body>. No build step, no framework needed.
Customization Reference
All customization is done through URL parameters in the iframe src. Update the URL to change settings without re-copying the embed code.
| Parameter | Values | Default | What it does |
|---|---|---|---|
theme | light, dark, auto | light | Sets the widget’s color scheme. auto follows the reader’s system preference. |
color | Any hex code (without #) | f59e0b | Sets the accent color for buttons, highlights, and interactive elements. |
radius | 0 to 24 | 12 | Sets the corner radius in pixels. 0 is sharp, 24 is fully rounded. |
compact | true | false | Reduces the widget height for sidebar or narrow-column placement. |
Widget-Specific Parameters
Carry-On Size Widget:
| Parameter | Example | What it does |
|---|---|---|
airline | southwest-airlines | Pre-selects a specific airline when the widget loads. Uses the airline’s URL slug. |
Bag Fit Checker Widget:
| Parameter | Example | What it does |
|---|---|---|
l, w, h | l=22&w=14&h=9 | Pre-fills bag dimensions so results show immediately on load. |
unit | in or cm | Sets the measurement unit. |
Checked Bag Fee Widget:
| Parameter | Example | What it does |
|---|---|---|
bags | 1, 2, or 3 | Sets the default number of checked bags for the calculator. |
trip | domestic or international | Sets the default trip type. |
Example: Dark Theme with Custom Color
<div style="box-sizing:border-box !important;display:block !important;margin:16px auto !important;max-width:400px !important;width:100% !important;position:relative;text-align:left;line-height:normal;">
<iframe
src="https://vientapps.com/embed/bag-fit/?theme=dark&color=3b82f6&radius=8&compact=true&attribution=external"
style="box-sizing:border-box !important;display:block !important;margin:0 !important;width:100% !important;max-width:100% !important;border:1px solid #e5e7eb;border-radius:8px 8px 0 0;overflow:hidden;background:#ffffff;"
height="420"
loading="lazy"
title="Bag fit checker by Vientapps">
</iframe>
<div style="box-sizing:border-box !important;display:flex !important;margin:0 !important;width:100% !important;max-width:100% !important;padding:8px 16px;border:1px solid #e5e7eb;border-top:0;border-radius:0 0 8px 8px;background:#ffffff;color:#6b7280;font-size:11px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.4;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px 12px;">
<span>Verify with airline before flying.</span>
<span>
<a href="https://vientapps.com/tools/carry-on-size/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Powered by Vientapps</a>
<span style="margin:0 4px;opacity:0.5;">·</span>
<a href="https://vientapps.com/terms/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Terms</a>
</span>
</div>
</div>
<script src="https://vientapps.com/embed/resize.js" async></script>
Example: Pre-Filled Bag Review
If you’re reviewing a specific bag (say, the Away Carry-On at 21.7 x 13.7 x 9 inches), pre-fill the dimensions so the widget loads with results:
<div style="box-sizing:border-box !important;display:block !important;margin:16px auto !important;max-width:640px !important;width:100% !important;position:relative;text-align:left;line-height:normal;">
<iframe
src="https://vientapps.com/embed/bag-fit/?l=21.7&w=13.7&h=9&unit=in&theme=light&attribution=external"
style="box-sizing:border-box !important;display:block !important;margin:0 !important;width:100% !important;max-width:100% !important;border:1px solid #e5e7eb;border-radius:12px 12px 0 0;overflow:hidden;background:#ffffff;"
height="540"
loading="lazy"
title="Bag fit checker by Vientapps">
</iframe>
<div style="box-sizing:border-box !important;display:flex !important;margin:0 !important;width:100% !important;max-width:100% !important;padding:8px 16px;border:1px solid #e5e7eb;border-top:0;border-radius:0 0 12px 12px;background:#ffffff;color:#6b7280;font-size:11px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.4;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px 12px;">
<span>Verify with airline before flying.</span>
<span>
<a href="https://vientapps.com/tools/carry-on-size/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Powered by Vientapps</a>
<span style="margin:0 4px;opacity:0.5;">·</span>
<a href="https://vientapps.com/terms/" target="_blank" rel="noopener" style="color:inherit;text-decoration:none;">Terms</a>
</span>
</div>
</div>
<script src="https://vientapps.com/embed/resize.js" async></script>
Troubleshooting
Widget shows raw HTML instead of rendering. You pasted the code into a text or paragraph block instead of an HTML block. In WordPress, use “Custom HTML.” In Squarespace, use “Code.” In Ghost, use the “HTML” card.
Widget doesn’t resize properly. Make sure the resize.js script tag is included after the iframe. If you removed it or it’s blocked by a content security policy, the iframe will stay at its default height.
Widget is too wide or too narrow. Adjust the max-width value in the iframe’s style attribute. Remove it entirely to let the widget fill the full container width. For sidebar placement, try max-width:360px with compact=true in the URL.
Widget doesn’t appear on Squarespace. You’re likely on a Personal plan. Code Blocks require a Business plan or higher.
Widget doesn’t appear on WordPress.com. You need a Business plan or higher. WordPress.com Personal and Premium plans block custom HTML with iframes.
Multiple widgets on one page. Include the resize.js script only once, after the last iframe. All widgets on the page will auto-resize correctly.
Widget looks different from my blog’s theme. Use the theme=auto parameter so the widget follows the reader’s system preference (light or dark). Set the color parameter to your blog’s primary brand color hex code for visual consistency.
For the full list of available widgets and a side-by-side comparison with affiliate alternatives, see our guide to the best embeddable travel widgets for bloggers. If you’re interested in how these widgets were built, the carry-on widget build log covers the technical architecture.
Quick Comparison
Free embeddable carry-on size reference card showing verified dimensions, weight limits, and gate-check risk for 75+ airlines.
Free embeddable bag fit checker where readers enter dimensions and see which of 75+ airlines accept their bag.
Free embeddable checked bag fee calculator comparing first bag, second bag, overweight, and oversize fees across 50+ airlines.
Frequently Asked Questions
Will travel widgets slow down my blog?
Do I need a WordPress plugin to add travel widgets?
Can I embed travel widgets on Squarespace free plan?
Do these widgets work on Wix, Webflow, and other platforms?
Can I change the widget colors after embedding it?
Do these widgets set cookies or track my readers?
Will the airline data in the widgets stay up to date?
Travel research publisher and senior staff engineer
Caden Sorenson runs Vientapps, an independent travel research and tools site covering airline carry-on policies, packing lists, and head-to-head airline, cruise, and destination comparisons, with everything cited to primary sources. He's a senior staff engineer with 15+ years of experience building iOS apps, web platforms, and developer tools, and a Computer Science graduate from Utah State University. Based in Logan, Utah.
Related guides
- 8 Best Embeddable Travel Widgets for Bloggers in 2026We tested 8 embeddable travel widgets for bloggers, from free airline tools to affiliate flight search. Covers privacy, performance, and what readers actually use.
- Best Airline for Flying with Checked Musical Instruments (2026)Southwest is the US guitar gold standard. American and Delta lead for CBBG cellos. Lufthansa expanded cabin to 125 cm March 2026. Avoid WestJet for cellos.
- Best Airline for Flying with an Infant (2026)Singapore has the largest bassinet (14 kg). United's 35 lb widebody bassinet is industry-high. ANA/JAL put bassinets in Business. Delta One has zero.
Stay in the loop
Get notified when I publish new posts. No spam, unsubscribe anytime.