Embed
Drop a live Hormuz badge into your story.
Eight embed variants: pick the one that matches your slot and audience. Each updates as the strait does. Free, no signup, no reader tracking, no cookies. Paste into any blog, CMS, Substack, or static page.
Status.
News sites · blogs · generalistThe strait verdict (Open / Restricted / Closed), day-of-closure, Brent and the carriers ratio. The default: pick this if you're a generalist news site or blog.
Best on a blog, CMS, or any host that allows iframes.
Copy + paste
<iframe
src="https://straits.live/embed/status"
height="140"
frameborder="0"
style="border:0;width:100%;max-width:560px;"
loading="lazy"
title="Strait of Hormuz · Status"
data-straits="status"
></iframe>
<p style="font-size:11px;color:#5e574a;margin:6px 0 0;">
Source: <a href="https://straits.live/?utm_source=embed&utm_medium=widget&utm_campaign=status" rel="noopener">Straits</a>
</p>
<script>(function(){if(window.__straitsResize)return;window.__straitsResize=1;window.addEventListener('message',function(e){if(e.origin!=='https://straits.live')return;var d=e.data;if(!d||d.type!=='straits:height')return;var f=document.querySelector('iframe[data-straits="'+d.variant+'"]');if(f)f.style.height=d.height+'px'})})();</script>- Size
- 560×140
- Refresh
- 60 s
- Bytes
- ~14 KB
- Cookies
- none
- Tracking
- none
Ticker.
Newsroom mastheads · sticky footers · trading-floor stripsA single horizontal strip: status verdict, Brent, carriers ratio, war-risk multiple, all on one line. Drop into a newspaper-style masthead, a sticky page footer, or any narrow horizontal slot.
Best on a blog, CMS, or any host that allows iframes.
Copy + paste
<iframe
src="https://straits.live/embed/ticker"
height="44"
frameborder="0"
style="border:0;width:100%;max-width:720px;"
loading="lazy"
title="Strait of Hormuz · Ticker"
data-straits="ticker"
></iframe>
<p style="font-size:11px;color:#5e574a;margin:6px 0 0;">
Source: <a href="https://straits.live/?utm_source=embed&utm_medium=widget&utm_campaign=ticker" rel="noopener">Straits</a>
</p>
<script>(function(){if(window.__straitsResize)return;window.__straitsResize=1;window.addEventListener('message',function(e){if(e.origin!=='https://straits.live')return;var d=e.data;if(!d||d.type!=='straits:height')return;var f=document.querySelector('iframe[data-straits="'+d.variant+'"]');if(f)f.style.height=d.height+'px'})})();</script>- Size
- 720×44
- Refresh
- 60 s
- Bytes
- ~12 KB
- Cookies
- none
- Tracking
- none
Summary.
Curated 'live tracker' pages · ProductHunt/Show HN takesOne block with everything: status hero, Brent sparkline, plus a row of Brent / carriers / war-risk stats. Pick this when you'd rather embed one rich block than four separate badges.
Best on a blog, CMS, or any host that allows iframes.
Copy + paste
<iframe
src="https://straits.live/embed/summary"
height="460"
frameborder="0"
style="border:0;width:100%;max-width:560px;"
loading="lazy"
title="Strait of Hormuz · Summary"
data-straits="summary"
></iframe>
<p style="font-size:11px;color:#5e574a;margin:6px 0 0;">
Source: <a href="https://straits.live/?utm_source=embed&utm_medium=widget&utm_campaign=summary" rel="noopener">Straits</a>
</p>
<script>(function(){if(window.__straitsResize)return;window.__straitsResize=1;window.addEventListener('message',function(e){if(e.origin!=='https://straits.live')return;var d=e.data;if(!d||d.type!=='straits:height')return;var f=document.querySelector('iframe[data-straits="'+d.variant+'"]');if(f)f.style.height=d.height+'px'})})();</script>- Size
- 560×460
- Refresh
- 60 s
- Bytes
- ~17 KB
- Cookies
- none
- Tracking
- none
Container carriers.
gCaptain · Splash247 · JOC · Lloyd's List · shipping substacksThe rerouted-vs-total ratio across the top 9 container lines, plus combined trapped vessels and TEU. Pick this if you cover shipping, logistics, or supply chains.
Best on a blog, CMS, or any host that allows iframes.
Copy + paste
<iframe
src="https://straits.live/embed/carriers"
height="150"
frameborder="0"
style="border:0;width:100%;max-width:560px;"
loading="lazy"
title="Strait of Hormuz · Container carriers"
data-straits="carriers"
></iframe>
<p style="font-size:11px;color:#5e574a;margin:6px 0 0;">
Source: <a href="https://straits.live/?utm_source=embed&utm_medium=widget&utm_campaign=carriers" rel="noopener">Straits</a>
</p>
<script>(function(){if(window.__straitsResize)return;window.__straitsResize=1;window.addEventListener('message',function(e){if(e.origin!=='https://straits.live')return;var d=e.data;if(!d||d.type!=='straits:height')return;var f=document.querySelector('iframe[data-straits="'+d.variant+'"]');if(f)f.style.height=d.height+'px'})})();</script>- Size
- 560×150
- Refresh
- 60 s
- Bytes
- ~13 KB
- Cookies
- none
- Tracking
- none
Brent crude.
Energy desks · oilprice.com · trader blogs · energy substacksBrent spot, 24h delta, a 7-day inline sparkline and a vs-pre-crisis comparison. Pick this if you cover energy, oil markets, or run an energy substack.
Best on a blog, CMS, or any host that allows iframes.
Copy + paste
<iframe
src="https://straits.live/embed/oil"
height="150"
frameborder="0"
style="border:0;width:100%;max-width:560px;"
loading="lazy"
title="Strait of Hormuz · Brent crude"
data-straits="oil"
></iframe>
<p style="font-size:11px;color:#5e574a;margin:6px 0 0;">
Source: <a href="https://straits.live/?utm_source=embed&utm_medium=widget&utm_campaign=oil" rel="noopener">Straits</a>
</p>
<script>(function(){if(window.__straitsResize)return;window.__straitsResize=1;window.addEventListener('message',function(e){if(e.origin!=='https://straits.live')return;var d=e.data;if(!d||d.type!=='straits:height')return;var f=document.querySelector('iframe[data-straits="'+d.variant+'"]');if(f)f.style.height=d.height+'px'})})();</script>- Size
- 560×150
- Refresh
- 60 s
- Bytes
- ~16 KB
- Cookies
- none
- Tracking
- none
War-risk insurance.
TradeWinds · Splash247 (insurance) · marine-insurance trade pressJWC-listed status, the war-risk multiple, the spot VLCC voyage cost, and the count of P&I clubs that have withdrawn coverage. Pick this if you cover marine insurance or risk.
Best on a blog, CMS, or any host that allows iframes.
Copy + paste
<iframe
src="https://straits.live/embed/insurance"
height="170"
frameborder="0"
style="border:0;width:100%;max-width:560px;"
loading="lazy"
title="Strait of Hormuz · War-risk insurance"
data-straits="insurance"
></iframe>
<p style="font-size:11px;color:#5e574a;margin:6px 0 0;">
Source: <a href="https://straits.live/?utm_source=embed&utm_medium=widget&utm_campaign=insurance" rel="noopener">Straits</a>
</p>
<script>(function(){if(window.__straitsResize)return;window.__straitsResize=1;window.addEventListener('message',function(e){if(e.origin!=='https://straits.live')return;var d=e.data;if(!d||d.type!=='straits:height')return;var f=document.querySelector('iframe[data-straits="'+d.variant+'"]');if(f)f.style.height=d.height+'px'})})();</script>- Size
- 560×170
- Refresh
- 60 s
- Bytes
- ~13 KB
- Cookies
- none
- Tracking
- none
Hormuz Index.
Risk desks · markets coverage · analyst newslettersBoth Hormuz Index readings: Crisis Pressure (the state of the strait now) and the Escalation Forecast (30-day outlook), with bands, 7-day deltas, and a sparkline. Pick this if you cover risk or markets and want the single-number read.
Best on a blog, CMS, or any host that allows iframes.
Copy + paste
<iframe
src="https://straits.live/embed/index"
height="250"
frameborder="0"
style="border:0;width:100%;max-width:680px;"
loading="lazy"
title="Strait of Hormuz · Hormuz Index"
data-straits="index"
></iframe>
<p style="font-size:11px;color:#5e574a;margin:6px 0 0;">
Source: <a href="https://straits.live/?utm_source=embed&utm_medium=widget&utm_campaign=index" rel="noopener">Straits</a>
</p>
<script>(function(){if(window.__straitsResize)return;window.__straitsResize=1;window.addEventListener('message',function(e){if(e.origin!=='https://straits.live')return;var d=e.data;if(!d||d.type!=='straits:height')return;var f=document.querySelector('iframe[data-straits="'+d.variant+'"]');if(f)f.style.height=d.height+'px'})})();</script>- Size
- 680×250
- Refresh
- 60 s
- Bytes
- ~15 KB
- Cookies
- none
- Tracking
- none
Works on
Iframes ship natively on most CMSes; for platforms that strip iframes, switch the format toggle to Markdown image and the badge renders as a live PNG instead.
FAQ
The questions every newsroom IT desk asks.
- Will it slow my site?
- No. The iframe is ~14 KB on first paint and the image fallback is a single PNG. Both load lazily and never block the host page. Every variant is edge-cached for 60 s so the median request returns from a CDN.
- Does it track my readers?
- No. The iframe sets no cookies on your domain and we record nothing about your readers individually. The widget itself fires a single page-view event to our analytics (Plausible, cookie-less) which records that the embed loaded and which site it loaded on; that is the whole telemetry surface.
- Will it work on Substack / Notion / WordPress / Ghost / Medium / LinkedIn?
- Iframes work natively on Ghost, self-hosted WordPress, custom sites, and most CMSes. For Substack, Notion, Medium, LinkedIn newsletter, and WordPress.com free tiers, which strip iframes, paste the Markdown image snippet instead. The PNG re-renders every 60 s on our servers so the image is always live, even though the platform won’t let you embed JavaScript.
- Will the iframe height grow if the card needs more room?
- Yes. The iframe snippet ships with a one-line listener that receives a
postMessagefrom the embed page and resizes the iframe to fit its rendered content. Breach states that expand the card (insurance multiplier rows, multi-line carrier verdicts on narrow widths) grow the iframe automatically rather than getting clipped. The listener validates the message origin againststraits.liveso other iframes on your page can’t trigger a resize. If you want a strictly locked size, delete the<script>block at the end of the snippet; the iframe keeps the declaredheightattribute as a static fallback. - How do I embed in a static-site build (Hugo, Jekyll, 11ty) or a newsletter?
- Each variant ships a self-contained HTML snapshot at
straits.live/embed/<variant>/static. Inline styles, no JavaScript, no external CSS, no font fetches; paste it directly into a Markdown post, a Mailchimp / Substack export, a Notion doc, or fetch it during a Hugo / Jekyll / 11ty build to bake the current snapshot into your site. The trade-off: it’s a single point-in-time capture rather than live, so re-fetch on each rebuild. Append?theme=darkfor the dark palette. SVG vector format is also available at/embed/<variant>/image?format=svgfor design tools, PDFs, and print layouts. - What happens if straits.live goes down?
- The iframe shows an empty card; the image falls back to a broken-image icon. Nothing on your page breaks. The widget is fully isolated: host CSS, host JS, and host layout are unaffected by anything that happens to us.
- Can I remove the attribution line?
- Yes. Straits data and embeds are released under CC0 1.0 (public domain), so the snippet is HTML you control and attribution is not legally required. We’d rather you kept the visible Source: Straits link (it’s how other journalists discover us and the reason we can keep this free), but it’s your call. For a clean version without the line, email hello@straits.live and we’ll send you a snippet.
- What is the minimum host width?
- 320 px for every variant; that’s the smallest standard mobile column. The Sidebar variant is designed for 320 px and looks ideal there; Status, Carriers, Brent, and War-risk reflow to a stacked layout below about 480 px and stay legible down to 320 px. Summary stacks its three-stat row into a single column below 400 px (works, but cramped). The Ticker progressively hides Brent, carriers, and war-risk as the host narrows past 700/560/380 px in turn, keeping the status verdict and brand visible at any width.
- Does it work with oEmbed (Discourse, Drupal, Ghost)?
- Yes. Each variant publishes an oEmbed provider URL at
/api/oembed?url=https://straits.live/embed/<variant>. CMSes that auto-discover oEmbed (Discourse, Drupal’s URL Embed module, Ghost’s rich-text editor) will unfurl a straits.live embed URL into the live badge without a snippet paste. Each variant page also advertises itself via<link rel="alternate" type="application/json+oembed">in the HTML head so auto-discovery clients pick it up. - Can I resize it / change the colors?
- Width: pick Responsive (the badge fills its parent column, capped at the variant’s natural width) or Fixed (the variant’s natural pixel width). Edit the
widthattribute by hand if you want a different value. Theme: light, dark, or auto; auto follows your reader’s systemprefers-color-schemeand switches without a page reload (iframe only; the PNG fallback can’t be re-rendered per reader, so it stays on whichever explicit theme you pick). Brand colors and accents are not configurable on purpose: Straits is a recognizable single visual identity, and we keep the badge consistent across embeds so it reads as a trusted source rather than a styled-up widget.
For newsrooms
All eight variants share the same back-end snapshot the front-page dashboard reads from. Status flips reflect the multi-signal logic that drives /is-the-strait-of-hormuz-open: carrier postures, war-risk insurance multiple, and the IMF PortWatch daily transit count against its pre-crisis baseline.
Quote-friendly ledes, brand assets, and the boilerplate paragraph live at /press. Press contact: hello@straits.live. Same-day reply during active crisis windows.
Updates
Each variant re-fetches every 60 seconds: server-side cache plus a soft refresh inside the iframe so a tab left open keeps updating.
Cost
Free. No signup, no API key. Iframe sets no cookies on the host page and tracks nothing about your readers.
Attribution
The snippet ships with a small visible Source: Straits line. We’d rather you kept it; that’s the part that helps both your story and our reach.
Need raw data?
GET straits.live/status returns the same payload as JSON. CORS open. Cache 30 seconds.
// Example payload, abridged (GET /status for the live document)
{
"status": "restricted",
"verdict": { "short": "No", "long": "...", "basis": "carriers" },
"asOf": "2026-06-10T14:32:11Z",
"brent": 94.10, "wti": 91.20, "change24h": 1.2,
"transits": { "count": 2, "baseline": 94, "throughputPct": 2 },
"shipsTransiting": 66, "stranded": 350,
"insurance": { "multiple": 8, "vlccPremiumLow": 125000, "vlccPremiumHigh": 2500000 },
"aisGaps": { "count": 14, "baseline7d": 11.6 },
"hormuzIndex": { "crisisPressure": { "value": 94 }, "escalationProbability": { "value": 68 } },
"events": [/* ... up to 40 most recent */]
}For per-indicator endpoints (oil time-series, events, ports, prediction markets, SPR, gas, transits-by-type), see the full catalogue at straits.live/api.
Reader-funded
The widgets are free to embed, with no signup and nothing tracked about your readers. A $5 tip covers about a day of the live feeds that keep them updating. One-time, by card or in XRP; no account, no recurring charge.
June: 2.4 of 30 server days covered by readers