Build your embed
Left column
Right column
Preview
Paste this into your page
<iframe
id="ct-compare"
src="https://www.citizenshiptimes.com/embed/compare?a=portugal&b=malta"
title="Portugal vs Malta — Citizenship Times"
width="100%"
height="700"
loading="lazy"
style="border:0;max-width:720px"
referrerpolicy="no-referrer-when-downgrade"
></iframe>
<p style="font:12px/1.5 system-ui,sans-serif;color:#666;max-width:720px">
Programme data from
<a href="https://www.citizenshiptimes.com/programmes/portugal">Citizenship Times</a>.
</p>
<!-- Optional: sizes the frame to its contents. Drop it and the height above is used instead. -->
<script>
addEventListener("message", function (e) {
if (e.origin !== "https://www.citizenshiptimes.com") return;
if (e.data && e.data.type === "ct-embed-height") {
document.getElementById("ct-compare").height = e.data.height;
}
});
</script>The widget reads its two programmes from the URL, so you can hand-edit ?a= and ?b= later without coming back here. Any of our 67 dossier slugs works.
Terms, in plain English
It is free, including commercially
Advisers, brokers, law firms, and publishers can all run it, on client-facing pages and behind logins. We do not charge for it and there is no licence to sign.
Keep the attribution
The credit line inside the frame links back to us and must stay. Do not overlay it, crop it with a short iframe height, or wrap the widget in a frame that swallows the link — that link is the entire price. The snippet's height is set so the line is never cropped; if you shorten it, check the bottom of the card still shows.
Do not present it as your own research
You can put it beside your own commentary and disagree with it in the same breath. What you cannot do is restyle it to look like your house data, or strip the verified date.
We will change the numbers under you
That is the feature. When a fee moves or a visa waiver is pulled, the widget updates on its own — which is also why you should not screenshot it and treat the image as durable.
No third-party script, no cookies, no tracking
The widget is a plain iframe. We load nothing onto your page and set no cookies on your readers. The only script in the snippet is five lines of your own, listening for the widget's height so the frame fits its contents — delete it and the fallback height is used instead.
Bulk access to the underlying dataset — a feed, an export, or a licence to restyle it — is a separate conversation. Write to research@citizenshiptimes.com and tell us what you are building.
What sits behind the numbers
Every field in the widget comes from one of the 67 programme dossiers, and each dossier carries a verified date and a named source. The sources — and, more usefully, what each of them is bad at — are set out in the methodology.
If you would rather cite a ranking than a pair, the 2026 Index ranks every jurisdiction we cover on one reproducible formula. If you spot an error in either, we would rather hear it than not: corrections@citizenshiptimes.com.