Skip to main content

Why We Will Never Frame Someone Else's Site

Wrapping a site in our own chrome strips its analytics, breaks its consent flows, and is not ours to do. What we do instead.

If you run a small site, this is the commitment you will never think to ask for and would notice immediately if it were broken. Nobody writes to a discovery tool in advance to ask that their site not be displayed inside somebody else's window. They find out afterwards, from their analytics, when the numbers stop making sense.

For the broader context behind this business guide, read How The Stumble Picks What You See.

So it is written down here, before the surface opens, in terms an operator can hold us to.

What this is, and who it is for

Mostly for operators. If something you built ends up in the register, this describes exactly what happens when someone follows the link, and what we do and do not learn from it.

It is also for readers, because the same decision changes what you can see about where you are.

Scope: this is the direct-link design contract, not a report about a deployed populated surface or observed click behavior.

What framing is, mechanically

A framed page is somebody else's website loaded inside a window on our page. Our header stays at the top, usually with a next button and our name on it. Their site fills the rest.

The important part is what the browser's address bar says. It says our address, because the page you are on is our page. Their site is a panel inside it. From the browser's point of view you never left, and from the visitor's point of view they are reading someone else's work inside our furniture.

The related pattern is a reader mode, where the destination's content is fetched and re-rendered in our own layout and typography. Different mechanism, most of the same consequences.

What it does to the site being framed

The harms here are real and they are also finite. Framing is a trade, not an attack, and overstating it would make this post less useful to the operator it is written for.

  • Analytics get confused or lost. Depending on how the frame is built, the operator may see traffic they cannot attribute, or referral data that points at us rather than at wherever the visitor actually came from, or in some configurations very little at all. The general effect is that the operator's own picture of who visits gets worse, and they did not agree to that.
  • Consent and preference flows can break. A consent prompt, a currency or region chooser, a cookie preference, an age gate: these are built to run on the site's own page in its own context, and inside a frame their behaviour depends on rules the operator does not control. Some of them will not work. Which ones is not predictable from the outside.
  • Sign-in and checkout can break. Anything involving a session, a payment step or a redirect out to another provider is more fragile inside a frame, and the failure lands on the operator's support inbox rather than ours.
  • The branding gets mixed. Our name sits above their work. A visitor who does not look closely comes away with an impression of a relationship that does not exist, and the operator had no say in the pairing.
  • Control is lost in general. The operator cannot see the wrapper, cannot test against it, and cannot fix what it breaks. They can only ask.

None of this is fatal. Plenty of sites are framed somewhere and carry on perfectly well. The point is narrower: every item above is a cost imposed on someone who was not asked.

What it does to the visitor

Smaller effects, but they run against what this site is for.

  • You cannot see where you are. The address bar shows our address. Working out who you are actually reading takes deliberate effort, and on a site whose entire proposition is that somebody checked, hiding the destination is an odd thing to do.
  • Sharing and bookmarking get awkward. What you copy is the wrapper, not the page. Sending a friend the thing you found sends them our tool with a hope that it lands in the same place.
  • The back button gets unpredictable. Navigation inside a frame and navigation outside it do not always behave the same way.
  • Verifying a site before trusting it becomes harder. Checking the address is the first thing anyone does before typing anything into a form. Inside a frame that check gives you our address, which tells you nothing about the form.

Why some tools do it anyway

Because it makes a genuinely nicer product, and pretending otherwise would be dishonest.

The next button stays where your hand is. There is no tab churn, no losing the tool behind a pile of open pages, no having to find your way back in order to keep browsing. The session holds together, so a browsing mood can survive a long run of destinations instead of ending at the first one. On a phone this is the difference between a pleasant few minutes and a fight with the back button.

That is not a small advantage and it is not a cynical one. The tools that do this are mostly trying to keep the browsing experience intact, and for the visitor they succeed. A discovery tool without framing is noticeably more awkward to use, in the sense that you can feel it.

We are choosing to be the more awkward one. The reason is not that the other choice is wrong. It is that the cost of the smoother version is paid by somebody who is not in the room: the operator, who did not ask to be wrapped and cannot see the wrapper. We would rather carry the awkwardness ourselves than hand a bill to a small business for the sake of our own interface feeling nicer.

What we do instead

The route out is a plain link.

  • It points at the operator's own address, directly.
  • No interstitial, no countdown, no "you are leaving" page.
  • No tracking redirect that hides or rewrites the destination.
  • No frame, wrapper, overlay or reader mode around it.
  • Ordinary safety attributes on the link, and nothing else.
  • The address shown is the address followed. Hover it and read it.

Following it means you have left. The tool is a tab behind you, and getting back to it is the ordinary business of getting back to a page you left, which is exactly the awkwardness described above. That is the trade being made, in full view.

The link being a real link rather than a scripted click also matters for reasons that have nothing to do with ethics. The accessibility decisions behind the surface covers why a genuine anchor is the only sensible way to build the route out.

What we do and do not know about your visitors

This is the section an operator should read twice, and it discloses what is recorded rather than claiming nothing is.

We do not know that you clicked. There is no redirect between the surface and the destination, so the click does not touch our server. There is no click log, no outbound counter, and no per-entry tally, because the architecture that would produce one does not exist. This is a consequence of the link design rather than a policy, which is why it is stated as a fact about the build.

We do record something about our own pages. The site runs privacy-respecting analytics that give a rough sense of which pages are read. It does not build a profile of you, does not identify you, and does not follow you to other sites. It covers our pages, not the destination, and nothing it records feeds back into the rotation. The full list of what is stored in your browser is at the cookie policy.

The stumble's session state never reaches us. The short list of entries already shown, kept so the surface does not repeat itself, lives in your browser, carries no identifier, and is discarded when the session ends.

The destination will usually see where the visit came from. A plain link means the browser normally passes a referrer, so the operator's own analytics can see that a visit arrived from a page on this site. That is deliberate. Framing tends to obscure exactly this, and an operator being able to see their own traffic is the interest this whole decision is protecting.

What this means for operators, plainly: we cannot tell you how many visits we sent you, now or ever. If we ever quoted such a figure, either the architecture had changed or the number was made up. Your own analytics is the only source, and it works because we did not get in the way of it. What a listing here does and does not do for a business is set out honestly in what being listed does and doesn't do.

How to check, and what to do if we ever break this

Checking takes seconds and needs no tools.

  1. Hover or long-press any outbound link and read the address. It should be the operator's own.
  2. Follow it, then look at the browser's address bar. It should show their address and nothing of ours.
  3. Look for our header, our next button or our name anywhere on their page. There should be none.
  4. Check that no page appeared in between, with a countdown, an advert or a "continuing to" notice.

If any of those fails, that is a published rule and the site's behaviour disagreeing, which is a factual error. Report it at corrections. Operators have a second route: request removal is free, immediate, needs no reason and involves no attempt to keep you, and it does not require you to explain yourself first.

The commitment also lives outside this post, on the rotation rules and on the permanent list at what we refuse to publish, so that it does not depend on one article staying online.

In Plain English

What it means. We link out normally, the way any page links to any other page. Your site loads in your own window with your own address in the bar, and nothing of ours is wrapped around it.

Who it helps. Operators who would like their analytics, their consent flows and their branding to keep working, and readers who want to know where they actually are.

When to use it. If you find your site displayed inside someone else's interface, this describes what it is doing and what it is costing you.

What to do next. If something you run is listed here and you would rather it were not, request removal takes one message and requires no reason. If our behaviour ever stops matching this page, corrections is the route.

Common questions

Would a preview or screenshot count as framing?

No, and it is not the same mechanism. A frame loads and runs the operator's live site inside our page. A static image does not run anything, does not touch consent flows and does not affect their analytics. It raises separate questions about image rights, which is why the site does not currently show them.

That is a reasonable middle ground and it is the reader's choice rather than ours to make. A plain link can be opened in a new tab by anyone who prefers to, using whatever their browser and their habits provide.

If you cannot count clicks, how do you know the tool is working?

We do not, in that sense, and we would rather say so. There is no outbound number to point at, and building the redirect that would produce one would break the thing this post is about.

Read what we refuse to do

Not framing a third party's site is one line on a longer list that also covers ratings, paid placement, location-by-category pages and residential addresses. The Line is the permanent version, each item with its reason attached, and it is the page to hold us to rather than this one.