TulipLot works best in Chrome or a Chromium-based browser. Some features may be limited here.
← TulipLot home

Can I embed this site in an iframe?

Measured, not guessed. Every row below comes from a real request to the live site on .

A browser refuses to put a page inside an iframe when the page sends X-Frame-Options, or a Content-Security-Policy with a frame-ancestors directive that leaves your origin out. This table shows the raw value that each site sends today.

What this does not tell you

A header read proves one thing only: the browser permits the frame. It does not prove that the application works inside one. A login cookie with SameSite=Lax fails in a third-party frame even when the framing headers are open. The "Usable in practice" column therefore stays empty for any app that nobody tried by hand. An empty cell means "not tested". It never means "probably fine".

There is a second limit, and it matters just as much. An unauthenticated request measures whatever page it lands on, and for a site that requires a login, that is often a sign-in screen and not the application itself. Our Gmail request, for example, never reached mail.google.com — it landed on accounts.google.com, Google's own sign-in page. Some hosts also answer differently from one request to the next. Outlook Web sent frame-ancestors 'self' teams.microsoft.com on three fetches in a row, then sent no framing header at all on two later fetches from the same script. Read every row below as a snapshot taken on the date above, not as a permanent fact about the site.

Mail and calendar

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
Gmailno—DENY—
Google Calendarno—DENY—
Outlook Webno——'self' teams.microsoft.com
Proton Mailno——https://calendar.proton.me https://drive.proton.me
Fastmailno—DENY'self'
Zoho Mailno—SAMEORIGIN—

Project boards

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
Trelloyes———
Asanano—SAMEORIGIN'self' https://teams.integrations.asana.plus https://teams-beta.integrations.asana.plus https://teams-uat.integrations.asana.plus https://teams.microsoft.com https://teams.cloud.microsoft
Jirano—deny'none'
Linearno——'self' https://cms.linear.app
ClickUpno——'self' https://clickup.com https://stage1-landing.clickup.com
Monday.comyes———
Todoistyes———
Basecampno—SAMEORIGIN—

Notes and documents

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
Notionno——'self' https://app.notion.com notion://app.notion.com notion://www.notion.so https://app.contentful.com
Google Docsno—DENY—
Obsidian Publishno—SAMEORIGIN—
Evernoteno—DENYhttps://docs.google.com https://www.evernote.com https://evernote.com
Dropbox Paperno—SAMEORIGIN'self'
Google Keepno—DENY—
Airtableyes———
Figmano—SAMEORIGIN—

Chat

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
Slackno—SAMEORIGIN—
Discordno—DENY—
Telegram Webno—deny—
WhatsApp Webno—DENY—
Microsoft Teamsno——'self' local.teams.office.com teams.microsoft.com.mcas.ms
Elementno—SAMEORIGIN'self'

Code hosting

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
GitHubno—deny'none'
GitLabyes———
Bitbucketno—deny'none'
Codebergno—SAMEORIGIN—
SourceHutno——'none'

Analytics

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
Google Analyticsno—DENY—
Plausibleyes———
Grafana Cloudno—DENY—
Sentryno——*.sentry.io

Music and video

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
YouTubeno—SAMEORIGIN—
Spotifyno——'self' https://adgen-dev.spotify.com/account/*/ad/*/details https://adgen-dev.spotify.com/preview/* https://local.spotify.net/account/*/ad/*/details https://local.spotify.net/preview/* https://app.smartly.io/*
SoundCloudno—SAMEORIGIN—
Twitchno—SAMEORIGIN—
Vimeono—SAMEORIGIN—
Apple Musicno—DENY'none'

News

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
BBC Newsno—SAMEORIGIN—
Hacker Newsno—DENY'self'
Reutersno——'self'
The Guardianno—SAMEORIGIN—
Ars Technicano—SAMEORIGIN—
Wikipediayes———
Al Jazeerano—SAMEORIGIN—

Social

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
Xno—SAMEORIGIN'self' https://x.com https://x.com:443 https://twitter.com https://twitter.com:443
Redditno—SAMEORIGIN—
Mastodonno—DENY'none'
Blueskyno—SAMEORIGIN—
LinkedInno—SAMEORIGIN'self' *.www.linkedin.com:* *.prod.linkedin.com ciafilestore.corp.linkedin.com

Finance

AppBrowser allows the frameUsable in practiceX-Frame-Optionsframe-ancestors
TradingViewno——'none'
Yahoo Financeno—DENY—
CoinGeckono—SAMEORIGIN—
Investing.comno—SAMEORIGIN—
Nasdaqno—SAMEORIGIN—

How we test

One GET request to each address, with a current Chrome user agent, and redirects followed. The script reads two response headers and writes the raw values to a JSON file that ships with the site. Repeat it yourself:

cd frontend && npm run probe:embed

The next run is due 2026-11-24. Headers change, so a row that is more than a quarter old deserves a fresh check.