CTFs as you need them
Clone or download
Latest commit 14ea952 Jul 29, 2018
Failed to load latest commit information.
.github Issue template (#455) Nov 14, 2017
CTFd Fix load_location_hash when there are spaces in the challenge name (#634 May 20, 2018
migrations Marking 1.2.0 (#628) May 4, 2018
scripts Add Vagrant with docker support (#285) (#355) Aug 20, 2017
tests Fix banned users not being able to see their own solves (#633) May 19, 2018
.dockerignore Adding .dockerignore and making docker-entrypoint consider DATABASE_U… Jul 13, 2017
.flaskenv 1.2.0 (#627) May 3, 2018
.gitignore Add plugin wrappers for plugin related utils functions (#410) Oct 14, 2017
.travis.yml 1.2.0 (#627) May 3, 2018
CHANGELOG.md Marking 1.2.0 (#628) May 4, 2018
Dockerfile Improve the flexibility and ease-of-use for docker-compose deployment ( Feb 11, 2018
LICENSE Update LICENSE Jul 29, 2018
README.md Marking 1.2.0 (#628) May 4, 2018
Vagrantfile Vagrant uses mariadb database rather than sqlite - Fixes #648 (#649) Jul 29, 2018
development.txt 1.2.0 (#627) May 3, 2018
docker-compose.yml Update docker files (#598) Mar 25, 2018
docker-entrypoint.sh Initialize database in docker-entrypoint.sh to reduce likelihood of m… Jun 18, 2018
export.py Upgrading exports (#283) Jun 16, 2017
import.py Fix argv mistake Apr 15, 2018
manage.py Marking 1.0.0 (#196) Jan 25, 2017
populate.py Use strings for key type (#409) Oct 14, 2017
prepare.sh Mark prepare.sh executable Sep 28, 2017
requirements.txt 1.2.0 (#627) May 3, 2018
serve.py Hints (#232) Mar 29, 2017
setup.cfg Starting to write tests Jan 7, 2017
wsgi.py 1.2.0 (#627) May 3, 2018


Build Status CTFd Slack

What is CTFd?

CTFd is a Capture The Flag framework focusing on ease of use and customizability. It comes with everything you need to run a CTF and it's easy to customize with plugins and themes.

CTFd is a CTF in a can.


  • Create your own challenges, categories, hints, and flags from the Admin Interface
    • Static & Regex based flags
    • Users can unlock hints for free or with points
    • File uploads to the server or Amazon S3
    • Limit challenge attempts & hide challenges
    • Automatic submission throttling
  • Scoreboard with automatic tie resolution
    • Hide Scores from the public
    • Freeze Scores at a specific time
    • Dynamic Scoring
  • Scoregraphs comparing the top 10 teams and team progress graphs
  • Markdown content management system
  • SMTP + Mailgun email support
    • Email confirmation support
    • Forgot password support
  • Automatic competition starting and ending
  • Team management & hiding
  • Customize everything using the plugin and theme interfaces
  • Importing and Exporting of CTF data for archival
  • And a lot more...


  1. Run ./prepare.sh to install dependencies using apt.
  2. Modify CTFd/config.py to your liking.
  3. Use flask run in a terminal to drop into debug mode.

Or you can use Docker with the following command:

docker run -p 8000:8000 -it ctfd/ctfd

  • Here are some deployment options
  • You can check out the Getting Started guide for a breakdown of some of the features you need to get started.

Live Demo



To get basic support, you can join the CTFd Slack Community: CTFd Slack

If you prefer commercial support or have a special project, send us an email: support@ctfd.io.

Managed Hosting

Looking to use CTFd but don't want to deal with managing infrastructure? Check out the CTFd website for managed CTFd deployments.


Looking for CTF challenges to work on? HackerFire is a learning focused CTF built using CTFd. It features a wide variety of challenges and is updated with new content frequently. It also contains custom knowledge resources to teach newcomers about the techniques used to solve a challenge.