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:

AttributeDefaultDescription
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-metrics5 key dimensionsComma list of dimension keys to show: corporate_tax, funding, startup_visa, residency_pathways, tax_residency, practical_residency, remote_worker, family_viability, ecosystem.
data-cta11 to show the 'Full comparison' button, 0 to hide.
data-branded11 to show 'Powered by NomadSignal', 0 to hide (white-label).
data-accent4f6ef7Hex 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 at nomadsignal.io/embed/compare/....
  • The embed page is chromeless (no nav, footer, or feedback widget) and sets X-Frame-Options: ALLOWALL and frame-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/* keep X-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.