How can we help?

What are the Computer Programming Project guidelines?


We love when people create projects that expand their understanding of computer programming -- like drawings and animations, games, scientific visualizations, or entries to contests!

To keep the community focused on learning to code and creating interesting projects that align with Khan Academy’s mission and community guidelines, the following will help you understand what kind of projects are appropriate here on Khan Academy. Projects that don’t meet the guidelines may be hidden from the "hot" list or from public view.

Please take some time to review the guidelines below as you create your coding masterpieces. Thank you for making our community safe, informative, and appropriate for all coding learners!

About the "Hot" list

The "hot" list is a gallery of projects that have been recently popular with the community, according to votes. You can find that list by clicking "Browse projects" on the Computer Programming homepage.

The purpose of the "hot" list is to highlight original projects that create something really cool - like a game, graphic, or interactive simulation -- feel free to vote up a project if you’re impressed by its programming, functionality, or code!

Project Guidelines

Projects should reflect the strides you’ve made in your coding journey, and beginners are always welcome to flex their creative muscles here! However, there are some basic rules to keep in mind as you do this.

If a project or discussion post falls into one of the following disallowed criteria, a Guardian may hide it from the "hot" list and/or public view entirely. Learners who persistently break these rules may also get banned from community activity. Projects that spur discussions that distract from learning about computer programming and coding may also get hidden.

A project is considered inappropriate if it falls into one or more of the following categories:


  • Containing discriminatory or offensive language.
  • Sexual or violent content, or any other content that could reasonably be deemed inappropriate for an educational setting.


  • Advertisements or non-helpful links to 3rd party sites.
  • Controversial or divisive topics including religion, politics, or personal issues/revealing details that compromise learner privacy.
  • Social groups or clubs, or projects that generate social chats, and other posts not related to coding, in the discussion thread.
  • Asking others to “vote up” a project.
  • Garnering or receiving votes from a voting ring (groups of people who conspire to vote up each others’ projects). People who participate in voting rings will be banned from community activity.


You can create spin-offs of projects by clicking the "Spin-off" button under each project. Creating a spin-off gives credit to the original creator and connects the new project to the original. Any learner can create a spin-off of any project.

It’s considered plagiarism if:

  • A user pastes someone else's work into a new project, instead of creating a spin-off.
  • A user pastes work from multiple projects without giving credit/links to those projects in comments at the top of the project.

Programs with Bookmarklets

All programs with bookmarklet code* should be Hidden from Everywhere. These circumvent some of the functionality that has been intentionally disabled, and thus poses a security risk.

*A bookmarklet is any code script that the program author asks the user to save as a browser bookmark. Clicking the bookmark with the saved code will then run the script, which has the potential to edit/delete the user’s site data or collect their personal information.

Using Disallowed Functionality

To ensure that the ProcessingJS programs you create on Khan Academy will continue working in the future, they should not use functionalities intentionally disabled for reasons of security, privacy, or user experience. Generally, that means that JS programs should not be accessing `externals` or the `DOM` in some way. Here are specific examples:

  • LocalStorage: Programs should not attempt to get or set `localStorage`. Doing so will cause projects to run out of quota.
  • Links: JS Programs should not automatically open links to other web pages, on Khan Academy or otherwise; if you want to direct learners to a relevant link please use `println()` with the URL instead.
  • Sound: Programs should only create sounds using the `playSound/getSound` functions, with the sounds listed in the soundpicker. Programs should only play sounds in response to user interaction - i.e., inside one of the `mouse*` or `key*` event handling functions. Programs should not play sounds immediately upon load, and should not loop sounds endlessly.