Guide

Allow Discordbot through Cloudflare

Discordbot is Discord's link-preview crawler. It must receive HTTP 200 HTML with Open Graph tags and optional component-embed JSON. A Cloudflare JS challenge, bot fight mode, or email-obfuscation rewrite on that response will prevent the unfurl.

WAF exception

Create a Cloudflare custom rule: if User-Agent contains Discordbot and the path starts with /p/, skip all remaining challenges and Bot Fight Mode. Return 200. Do the same for image hosts you reference in the gallery.

Confirm with curl -A Discordbot https://tinycord.com/p/demo-portfolio — you should see the inline script in the body, not a challenge interstitial.

Cache versus recrawl

Discord caches a preview for about 30 minutes. Cloudflare should not add another 30 minutes of HTML cache on user slugs or edits will look stuck. Keep CDN s-maxage short (about 15 seconds) on /p/*.

Do not append ?v= to the public share URL. That forces everyone to re-paste. Use ?v= only in Embed Debugger while testing.

Common questions

Does this apply to hosts other than Cloudflare?
Yes. Any WAF, DDoS challenge, or “under attack” mode that answers a crawler with an interstitial has the same effect. The fix is the same: let the Discordbot user agent through to a 200 on public pages.

Try it on your own page

Import a URL, add buttons, and paste the hosted link in Discord.

Create a card