Branding and Custom Domain
CTFFactory allows workspaces to apply custom branding β including logo, colors, and workspace name β to all CTFd instances deployed on their behalf. Workspaces on eligible plans can also configure a custom domain, so deployed CTFs are accessible under your own subdomain rather than the default ctffactory.examboot.net addresses.
Tenant Branding
Branding settings apply globally to every CTFd instance your workspace deploys. Participants who connect to your CTF event will see your workspace identity, not CTFFactory's default branding.
Configuring Branding
Navigate to Workspace Settings > Branding to access all branding controls.
Logo
- Accepted formats: PNG, SVG, WebP
- Recommended dimensions: at least 200 Γ 60 px, aspect ratio 3:1 or wider
- Maximum file size: 2 MB
- The logo appears in the CTFd navigation bar, on the registration/login page, and in participant email notifications
Colors
| Setting | Usage |
|---|---|
| Primary color | Buttons, active nav items, progress bars, and interactive elements |
| Background color | Page and panel backgrounds (light or dark theme base) |
| Text color | Body text and headings |
| Accent color | Highlighted challenge cards and alerts |
Colors are specified as hex values (e.g., #1A2B3C). A live preview panel in the Branding settings page shows how your palette will render in a deployed CTFd instance.
Workspace Display Name
The workspace display name is shown in the browser tab title and on the CTFd home page. It defaults to your workspace slug but can be set to any string up to 64 characters.
Note: Branding changes apply to new deployments immediately. Existing running CTFd instances are updated within 5 minutes via the platform's configuration sync.
Custom Domain
A custom domain lets your deployed CTFs be served from an address you control β for example, ctf.yourcompany.com β instead of the default {slug}.ctffactory.examboot.net addresses.
Prerequisites
- Custom domain requires a Starter plan or higher.
- You must have access to your domain's DNS management console.
Adding a Custom Domain
- Navigate to Workspace Settings > Custom Domain.
- Enter the domain you want to use (e.g.,
ctf.yourcompany.com). - Click Add Domain. The domain appears with a Pending DNS status.
DNS Verification
Because every deployed CTFd portal and challenge is served on its own subdomain, routing requires a wildcard CNAME:
| Record Type | Host | Value |
|---|---|---|
CNAME |
*.ctf.yourcompany.com |
(the CNAME target shown in the UI) |
Add this record in your DNS provider's management console, then click
Verify DNS. CTFFactory confirms the wildcard by resolving a probe host
(ctffactory-verify.ctf.yourcompany.com) and checking it points at the
platform target. Only when this check passes does the status change from
Pending DNS to Verified β the badge is never set without a real DNS
lookup. DNS propagation can take up to 48 hours, though it typically resolves
within minutes to a few hours.
How the Custom Domain Appears in CTFd Instances
Once the domain is verified, new CTF deployments from your workspace are served under it. Each host lives one label under your domain, for example:
https://{ctf}-{id}.ctf.yourcompany.com/ # the CTFd portal
https://chal-{service}-{ctf}-{workspace}.ctf.yourcompany.com/ # a challenge
TLS certificates for these hosts are obtained automatically via the ACME HTTP-01 challenge (Let's Encrypt); no manual certificate management is required. Because certificates are issued per host, plan for Let's Encrypt rate limits on very large events.
Note: Custom-domain routing applies to new deployments. Existing running CTFds keep the hostname they were deployed with until redeployed.
Removing a Custom Domain
To remove a custom domain, navigate to Workspace Settings > Custom Domain and click Remove Domain. Deployments will revert to the default {slug}.ctffactory.examboot.net addressing. The DNS records you created in your DNS provider are not automatically removed β you should clean them up manually to avoid dangling DNS entries.