p5.js is a JS client-side library for creating graphic and interactive expe...
Using the metaphor of a sketch, p5.js has a full set of drawing functionality using the HTML5 canvas element. You’re not limited to the drawing canvas though. You can think of your whole browser page as your sketch, including HTML5 objects for text, input, video, webcam, and sound.
p5.js draws inspiration, wisdom, and guidance from its precursor Processing. However, it is a new interpretation, not an emulation or port. We don't aim to match Processing's set of functionality exactly, allowing ourselves space to deviate and grow in the context of the web.
We are a community of, and in solidarity with, people from every gender identity and expression, sexual orientation, race, ethnicity, language, neuro-type, size, ability, class, religion, culture, subculture, political opinion, age, skill level, occupation, and background. We acknowledge that not everyone has the time, financial means, or capacity to actively participate, but we recognize and encourage involvement of all kinds. We facilitate and foster access and empowerment. We are all learners.
p5.js is a collaborative project created by many individuals, mostly volunteers, and you are invited to help. All types of involvement are welcome. See the community section to get started! You can also check out the contributor docs for more in-depth details about contributing to different areas of the project, including code, bug fixes, documentation, discussion, and more.
Learn more about our community and read our community statement and code of conduct. You can directly support our work with p5.js by donating to the Processing Foundation.
Make your first sketch in the p5.js Editor! Learn more about sketching with p5.js on the Get Started and find everything you can do in the Reference.
To get the complete p5.js library on your own computer, you can download it here. If you are interested in the most recent, less stable version, or even simply in (new!) certain components of p5.js, you can clone this repository and run grunt from the command line to generate the library from source. See the contributor docs for more information about our build process.
If you have found a bug in the p5.js library, you can file it here under the “issues” tab. You can also request new features here. A set of templates for reporting issues and requesting features are provided to assist you (and us!). p5.js is maintained mostly by volunteers, so we thank you for your patience as we try to address your issues as soon as we can. Please post in the correct repository if you can:
p5.js general: https://github.com/processing/p5.js/issues
p5.js website: https://github.com/processing/p5.js-website/issues
p5.js web editor: https://github.com/processing/p5.js-web-editor/issues
Check out p5js.org for lots more! Here are some quick-links to get started learning p5.js.
Get Started: Create and run your first sketch!
p5.js overview: An overview of the main features and functionality of p5.js
Reference: The functionality supported by p5.js
Learn: Tutorials and short, prototypical examples exploring the basics of p5.js
Forum: Ask and answers questions about how to make things with p5.js here
Libraries: Extend p5 functionality to interact with HTML, manipulate sound, and more!
The Coding Train p5.js Tutorials: A huge trove of tutorials created by Dan Shiffman and friends
Stewards are contributors that are particularly involved, familiar, or responsive to certain areas of the project. Their role is to help provide context and guidance to others working on p5.js. If you have a question about contributing to a particular area, you can tag the listed steward in an issue or pull request. They may also weigh in on feature requests and guide the overall direction of their area, with the input of the community. You can read more about the organization of the project at contributor_docs/organization.md.
Anyone interested can volunteer to be a steward! There are no specific requirements for expertise, just an interest in actively learning and participating. If you’re familiar with one or more parts of this project, open an issue to volunteer as a steward!
@qianqianye - p5.js Project Lead
@outofambit - p5.js Mentor
@lmccart- p5.js Creator
We recognize all types of contributions. This project follows the all-contributors specification. Instructions to add yourself or add contribution emojis to your name are here. You can also post an issue or comment with the text:@all-contributors please add @YOUR-USERNAME for THING(S) and our nice bot will add you.