How to create Algorithm Challenges

Writing Algorithm challenges is a great way to exercise your own problem solving and testing abilities. It is a simple three step process.

  1. Fill out the generator form and test your challenge.
  2. Once you have confirmed a working Algorithm challenge in the generator, copy and paste the fields into the JSON generator.
  3. Copy the JSON, fork the freecodecamp repository, and submit a pull request with your addition to the challenge .json file.


Name your challenge


Attempt to rate difficulty compared against existing Algorithm challenges.

TODO: add basic quantifiers for each difficulty level


Separate paragraphs with a line break. Only the first paragraph is visible prior to a user clicking the “More information” button.

All necessary information must be included in the first paragraph. Write this first paragraph as succinct as possible. Subsequent paragraphs should offer hints or details if needed.

If your subject matter warrants deeper understanding, you may link to Wikipedia.

Challenge Seed

This is important.

Challenge Entry Point (deprecated)

Leave this field blank. It will soon be removed from the generator.


These tests are what bring your challenge to life. Without them, we cannot confirm the accuracy of a user’s submitted answer. Choose your tests wisely.

Algorithm tests are written using the Chai.js assertion library. Please use the should and expect syntax for end user readability. As an example of what not do to, many of the original Algorithm challenges are written with assert syntax and many of the test cases are difficult to read.

If your Algorithm question has a lot of edge cases, you will need to write many tests for full coverage. If you find yourself writing more tests than you desire, you may consider simplifying the requirements of your Algorithm challenge. For difficulty level 1 through 3, you will generally only need 2 to 4 tests.