What an about:blank tab really is, why a website can fill one with another site, and a launcher to try it yourself.
Green sites let other pages show them inside a frame. Red ones refuse, so you can see what a refusal looks like. Which sites work, and why
Most addresses you type, like https://wikipedia.org, tell the browser to go fetch a page from a computer on the internet.
Addresses that start with about: are different: they are pages built into the browser itself. Nothing is downloaded.
about:blank is the simplest one: a completely empty white page. Browsers use it all the time behind the scenes, for example as the
placeholder a new tab or pop-up shows for a split second before its real page arrives.
Here is the key idea. When a website opens a new blank tab, that blank tab counts as belonging to the website that opened it.
Browsers treat an empty page as a "child" of whoever created it, so the parent is allowed to reach in and write whatever it wants into it.
(The technical name for this is that about:blank inherits the origin of its opener; "origin" just means "which website a page belongs to".)
So the launcher above does three things:
about:blank. The address bar says about:blank and will keep saying it.The address bar only ever describes the outer page, not frames inside it, so it keeps showing about:blank while you use the real site.
This is the heart of the launcher, trimmed down. It has to run from a click, or the browser's pop-up blocker stops it.
// 1. Open an empty tab. We get back a handle to it.
const tab = window.open("about:blank", "_blank");
// 2. Because the blank tab belongs to us, we can write into it.
const frame = tab.document.createElement("iframe");
frame.style.cssText = "position:fixed; inset:0; width:100%; height:100%; border:0";
// 3. Point the frame at the real site.
frame.src = "https://example.com";
tab.document.body.style.margin = "0";
tab.document.body.appendChild(frame);
This is where people often get the wrong idea. The trick changes what the browser window shows. It does not change what actually travels over the internet.
| Thing | Effect |
|---|---|
| Address bar | Hidden. It shows about:blank the whole time. |
| Tab title | Up to you. The blank tab has no title unless this page gives it one (the "Tab title" box above). |
| Browser history | Mostly hidden. The blank tab isn't saved as a visit, and pages loaded inside frames usually aren't listed in history the normal way. Browsers differ on the details, so treat this as "less visible", not "invisible". |
| The network (Wi-Fi owner, school or work filters, internet provider) | Not hidden at all. Your computer still connects to the real site directly, exactly as if you'd typed its address. Anything watching the network sees the same thing either way, and a network filter that blocks a site blocks it inside the frame too. |
| Browser extensions and managed devices | Not hidden. Extensions and device-management software can see every page and frame the browser loads. |
| The website itself | Not hidden. It sees your visit normally, and it can tell that it's been put inside a frame. |
Try the red google.com or github.com buttons. The tab opens but the frame shows an error like "refused to connect", or just stays empty.
That's on purpose: those sites send a short note with every page saying "don't show me inside anyone else's frame."
The note is called X-Frame-Options (or, in its newer form, frame-ancestors), and the browser obeys it.
Sites do this to prevent a scam called clickjacking: a bad page shows a real site inside an invisible frame and tricks you into clicking its buttons (like "delete account") while you think you're clicking something harmless. Banks, email, search engines and social networks almost always refuse framing. Simpler sites like Wikipedia and example.com generally allow it.
There is no way around this from inside a web page. The launcher also can't tell in advance whether a site will refuse, because browsers deliberately don't let one website read another website's replies. The helper bar in the new tab has an Open normally button for exactly this case.
It all comes down to one question: does the site let other pages show it in a frame? Each site decides that for itself, and nothing on this page can change the answer. Here is what I found by checking these sites' actual replies and loading each one in Chrome on 25 September 2026.
| Site | Result |
|---|---|
| Your GitHub Pages sites (MEGABONK, Test Prep, GameHub and the rest) | Work fully. GitHub Pages never refuses framing. Better still, every site at just-rice.github.io, including this lab, has the same owner, so a site launched from here is treated like it's in a normal tab: same saved progress, same settings, same sign-in. |
Other people's GitHub Pages sites (someone.github.io) | Load fine, with separate saves: see "saved data" below. A few add their own code that jumps out of frames; the "Don't let the site take over the tab" box stops that. |
| chess.com | Refuses. Every chess.com page sends X-Frame-Options: SAMEORIGIN and frame-ancestors 'self', which both mean "only chess.com itself may frame me". You'll get a "refused to connect" screen. See below for why this can't be worked around. |
| lichess.org (main site) | Refuses (X-Frame-Options: DENY). |
| lichess.org frame pages | Work. Lichess publishes special pages made for framing: the daily puzzle (lichess.org/training/frame) and live top-rated games (lichess.org/tv/frame). |
| Google, GitHub, Bing, banks, email, social media | Refuse. Almost every site with accounts does. |
| Feature | Inside the about:blank tab |
|---|---|
| 3D graphics, animation, canvas games | Work exactly as normal. |
| Keyboard controls | Work after you click once inside the site, so the frame has the keyboard's attention. |
| Sound and video | Work. As in any tab, sound usually starts only after your first click. |
| Fullscreen and game controllers | Work, because the launcher grants the frame those permissions. |
| Mouse capture (games that hide and lock the cursor) | Works. |
| Saved data (progress, settings) | Your own sites: shared with a normal tab. Other sites: kept in a separate box. Browsers file a framed site's saved data under the page around it, so another site's saves made here stay here, and its normal-tab saves don't show up here. |
| Logging in | Your own sites: works. Other sites: usually fails, because browsers block login cookies for sites inside someone else's frame. |
| Links that open a new tab | Open a normal tab with the real address showing. |
| Tab title | Your own sites may change it. Because they share an owner with the blank tab, they're allowed to reach out and rename it. Test Prep does this on purpose, replacing whatever you typed in "Tab title" with its own page name. Other sites can't touch it. |
| Reloading | Empties the tab. Reload inside the site instead, or launch again. |
The refusal is enforced by your browser, following chess.com's instructions. The browser gets those instructions straight from chess.com, so no code on this page can switch them off.
The only way around it is a proxy: a server of your own that fetches chess.com's pages, deletes the "don't frame me" instruction, and passes the rest on. That isn't possible here, and wouldn't work well anyway:
If you want chess inside the launcher, the lichess frame pages above are the supported way. Lichess can also produce frame-ready pages for individual games and studies from its "Share & export" menus.
Some sites run a little code that checks "am I inside a frame?" and, if so, replaces the whole tab with their real address, which undoes the trick. Ticking this box puts the frame in a sandbox, a set of rules that allows everything a normal site needs except that one move. It's off by default because a few sites misbehave inside a sandbox. It doesn't help with sites that refuse framing outright, like chess.com; that refusal happens before the site's code even runs.
Press reload in the blank tab and it goes completely empty. There's nothing to reload: the address really is just about:blank,
and everything you saw was written in by this page, which doesn't happen a second time.
Pop-up blockers only allow new tabs that come straight from you clicking something. That's why the launcher can't open tabs automatically, and if your browser still blocks it, you'll see a message and can allow pop-ups for this page.
The blob: page + frame option builds the same wrapper page as a temporary file that lives only in your browser's memory, then opens it.
Its address looks like blob:https://just-rice.github.io/3f2a…. Unlike about:blank, that address mentions this site, and
reloading the tab works as long as this page is still open. It's a useful comparison for seeing what the address bar does and doesn't reveal.
This button opens an empty about:blank tab, then reads some facts about it from here and prints them below (and inside the new tab).
It shows the "belongs to its opener" rule in action.