Embed the comparison widget
Drop a live NomadSignal country comparison into any page with one line of HTML. The widget auto-resizes to fit its container, uses real 2026 jurisdiction data, and links back to the full comparison on nomadsignal.io. Free to embed.
Live preview
This is a real iframe rendering /embed/compare/panama-vs-belize.
Quick start
Add this anywhere in your page where you want the widget to appear:
<div data-ns-compare data-a="panama" data-b="belize"></div>
<script async src="https://nomadsignal.io/embed.js?v=1"></script>The loader script finds every element with data-ns-compare, reads the two country slugs from data-a and data-b, creates an iframe to /embed/compare/[a]-vs-[b], and auto-resizes it as the content loads. That is the whole integration.
Configuration
All options are data attributes on the same element:
| Attribute | Default | Description |
|---|---|---|
| data-a | (required) | First country slug, e.g. panama. Find slugs in the URL of any country page. |
| data-b | (required) | Second country slug. The pair is alpha-sorted to a canonical URL automatically. |
| data-metrics | 5 key dimensions | Comma list of dimension keys to show: corporate_tax, funding, startup_visa, residency_pathways, tax_residency, practical_residency, remote_worker, family_viability, ecosystem. |
| data-cta | 1 | 1 to show the 'Full comparison' button, 0 to hide. |
| data-branded | 1 | 1 to show 'Powered by NomadSignal', 0 to hide (white-label). |
| data-accent | 4f6ef7 | Hex color (no #) for the CTA and accent borders, for white-label embeds. Validated as a clean 3- or 6-digit hex. |
Full example with every option:
<div
data-ns-compare
data-a="panama"
data-b="belize"
data-metrics="corporate_tax,tax_residency,remote_worker,residency_pathways"
data-cta="1"
data-branded="1"
data-accent="4f6ef7"
></div>
<script async src="https://nomadsignal.io/embed.js?v=1"></script>How it works
- The loader (
embed.js, ~2KB, no dependencies) injects an iframe pointing atnomadsignal.io/embed/compare/.... - The embed page is chromeless (no nav, footer, or feedback widget) and sets
X-Frame-Options: ALLOWALLandframe-ancestors *so it can be framed cross-origin. - A tiny script inside the iframe measures its height and posts it to the host page via
postMessage; the loader resizes the iframe so there are no scrollbars. - All routes other than
/embed/*keepX-Frame-Options: DENY. The widget is the only surface that can be framed.
White-label
Set data-branded="0" and a custom data-accent to remove NomadSignal branding and match your brand. This is the same widget used by our agency partners. Per-account white-label config (custom branding tied to an account, usage analytics) is part of the Founder tier - the public data-* attributes above are free for anyone to embed.
Terms
Free to embed on any site. The widget displays real NomadSignal jurisdiction data and a link back to nomadsignal.io (unless you hide branding). Do not frame the embed to imply NomadSignal endorses your product. The data is informational only - see our disclaimer.