Using the original metaphor of a software sketchbook, p5.js has a full set of drawing functionality. However, you're not limited to your drawing canvas, you can think of your whole browser page as your sketch! For this, p5.js has addon libraries that make it easy to interact with other HTML5 objects, including text, input, video, webcam, and sound.
p5.js is a new interpretation, not an emulation or port, and it is in active development. An official editing environment is coming soon, as well as many more features!
If you already know the basics of JS or Processing, the p5.js overview wiki page is a good place to start. The frequently asked questions might also be helpful.
If you have found a bug in the p5.js library, you can file it here under the “issues” tab.
p5.js alternatives and similar libraries
Based on the "d3" category
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of p5.js or a related project?
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.
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.sound: https://github.com/processing/p5.js-sound/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!
- @lmccart project lead
- more to come...
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.
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> Lauren McCarthy Jason Sigal Karen Shahriar Rahman Rubayet Evelyn Eastmond Daniel Shiffman Casey Reas Ben Fry Kenneth Lim🐛 💻 📖 kate hollenbach Stalgia Grigg Jerel Johnson Saksham Saxena saber khan Daniel Howe Kevin Siwoff Atul Varma Jess Klein uno seis tres susan evans Saskia Freeke Phoenix Perry jesse cahn-thompson Lee T Chelly Jin L05 DIYgirls lam802 Maya Man Tega Brain luisaph AlM Chng aarón montoya-moraga Cassie Tarakajian Niklas Peters📖 ✅ Mathura MG Yining Shi Jen Kagan Jiashan Wu Marc Abbey K.Adam White Joe Cridge Michael Hadley Todd H. Page Jared Sprague💻 📖 💡 💵 ⚠️ 🐛 evelyn masso Blaize Kaye Sanchit Kapoor Oliver Wright Matthew Kaney Spongman Claire K-V R. Luke DuBois Kevin Barabash codeanticode Bob Holt Sarah Groff Hennigh-Palermo Jordan Shaw brightredchilli Derek J. Kinsman harkirat singh GoToLoop Max Goldstein XY Feng Sparsh Paliwal Austin Cawley-Edwards📖 💡 taseenb Yannick Assogba John Pasquarello💻 Kevin Workman gauini David Wicks Guillermo Montecinos Shawn Van Every Sinan Ascioglu Abe Pazos Char Gene Kogan Jason Mandel Mark Russo Jonathan Dahan Darius Morawiec Darby Rathbone hrishit Chiun Hau You Francesco Bigiarini Fabian Morón Zirfas Mike Anderson Mikael Lindqvist Chris Max Segal Tyler Stefanich Dave Xavier Snelgrove Gareth Battensby Taeyoon Choi AKASH RAJ Kevin Ho Harsh Agrawal Luca Damasco Sam Lavigne Epic Jefferson Caroline Record Christine de Carteret Chris Hallberg David Newbury piinthecloud Paolo Pedercini Jason Alderman Jennifer Jacobs Sepand Ansari Val Head Emily Chen Ben Moren Rune Skjoldborg Madsen Scott Murray Scott Garner b2renger Craig Pickard mxchelle Zach Rispoli Liu Chang Cristóbal Valenzuela Miles Peyton Golan Levin feedzh Chiciuc Nicușor Ken Miller Chandler McWilliams Jaymz Rhime Niels Joubert Utkarsh Tiwari Arihant Parsoya Brad Buchanan Johan Karlsson Andy Timmons zacharystenger Brian Boucheron sortasleepy Kyle McDonald Antonio Jesús Sánchez Padial💻 Brad Smith Vítor Galvão Devon Rifkin Emily Xie Boris Bucha Petr Brzek Ramin Arsenije Savic Luke Burgess-Yeo Sun Lifei naoyashiga Jimish Fotariya Jorge Moreno🐛 💻 📖 Steven Green Marcus Parsons Nick Yahnke Anthony Su kroko / Reinis Adovičs Robyn Overstreet Ben Hinchley Max Kolyanov Zeno Zeng Seth plural Lionel Ringenbach Harshil Goel Joshua Storm Becker maxdevjs trych Alejandra Trejo Prashant Gupta Kai-han Chang kjav maddy Christopher Coleman Boaz Yasai📝 Jay Gupta Nitish Bansal Caroline Hermans💡 📖 Faith Wuyue Yu Aatish Bhatia📖 🐛 Mislav Milicevic💻 🐛 Yuting Lu📖 Adil Rabbani💻 🐛 💡 Pierre Krafft🐛 💻 📖 💡 👀 ⚠️ 🔧 Zoë Ingram📖 Aidan Nelson🐛 💻 📖 Cameron Yick📖 Tanvi Kumar🐛 💻 📖 💡 Katsuya Endoh Kevin Bradley📖 Justin Kim📖 Federico Grandi💻 📖 Freddie Rawlins💻 📖 Luc de wit💻 🐛 Mark Nikora💻 Louis Demange🐛 Sanket Singh💻 🐛 📖 💡 Oren Shoham💻 Abhinav Sagar💻 Jonathan Heindl💻 💡 🤔 📖 Hirad Sab💻 🐛 📖 💡 Vishal Singh📖 💻 Corey Gouker💻 📖 🐛 Lisa Mabley📖 💡 Adam Ferriss💻 📖 🐛 💡 Joshua Marris📖 💻 📢 ✅ Erica Pramer📖 Vasu Goel💻 ⚠️ Tokini Irene Fubara📖 Dhruv Sahnan💻 📖 Jon Kaufman📖 Nico Finkernagel🚇 👀 ashu8912💻 ffd8💻 Sona Lee💻 Ryan Slade💻 Mann Shah Juraj Onuska ANURAG GUPTA📖 Sagar Arora Rajiv Ranjan Singh Fenil Gandhi📖 💡 Akshay Padte💻 🐛 ⚠️ Satyam Kulkarni📖 Shirou💻 🐛 Sarthak Saxena💻 Nick McIntyre🔌 🐛 ✅ Amey Bhavsar🐛 💡 Minjun Kim🐛 🌍 Fisher Diede💻 karinaxlpz🌍 Samuel Alarco Cantos🌍 DIVYANSHU RAJ💻 🐛 📖 sm7515📖 Aditya Rachman Putra📖 shaharyarshamshi🌍 Ayush Jain🌍 Summer Rizzo📖 Aierie💻 🐛 Mateusz Swiatkowski💻 🐛 XingZiLong🌍 ov🌍 Kyle James💻 Abhi Gulati📖 Jeremy Tuloup📖 Luis Morales-Navarro️️️️♿️ Yuki🌍 cedarfall📖 Isaac Durazo 🌍 İsmail Namdar💻 ⚠️ skyperx💻 Joseph Aronson💻 🐛 Haider Ali Punjabi💻 Swapnil-2001📖 Takuma Kira🐛 💻 ⚠️ Mohammad Hussain Nagaria🐛 Tushar Choudhari📖 💻 Nakul Shahdadpuri💻 Jacques P. du Toit💻 surajsurajsuraj🐛 Connie Liu💻 🎨 Zeke Sikelianos📖 Ramon Jr. Yniguez💻 Benoît Bouré📖
<!-- markdownlint-enable --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END --> Thanks goes to these wonderful people (emoji key)!