Learn to Code with Bloom
Make art with code. No experience needed — we'll teach you everything from scratch.
fn setup() {
size(400, 220)
}
fn draw() {
background(rgb(250, 248, 245))
// Draw colorful circles
fill(coral)
circle(100, 110, 60)
fill(rgb(100, 180, 250))
circle(200, 110, 60)
fill(rgb(140, 200, 100))
circle(300, 110, 60)
}You'll create things like this in the first 5 minutes.
What is Bloom?
Bloom is a programming language made for creative coding. Instead of building websites or apps, you'll make art, animations, and games.
Why start with Bloom?
- Visual feedback — See your code come to life immediately
- Simple syntax — Less typing, more creating
- Helpful errors — When something goes wrong, we explain why
- No setup needed — Code right in your browser
How it works
Every Bloom program has two special parts:
setup()
Runs once when your program starts. Use it to set the canvas size.
draw()
Runs 60 times per second. This is where you draw things and make animations.
Try moving your mouse over this canvas:
fn setup() {
size(400, 200)
}
fn draw() {
background(white)
fill(coral)
circle(mouseX, mouseY, 40)
}The circle follows your mouse because draw() runs over and over, redrawing the circle at your mouse position each time.
Tutorial Chapters
Work through these in order. Each chapter builds on the previous one.
- 1. Your First Sketch — Create a canvas and draw shapes
- 2. Drawing Shapes — Circles, rectangles, lines, and colors
- 3. Animation — Make things move
- 4. Mouse & Keyboard — Respond to user input
- 5. Variables — Store and remember values
- 6. Conditionals — Make decisions with if, else, and logic
- 7. Loops — Repeat actions efficiently
- 8. Functions — Organize your code
- 9. Arrays & Objects — Work with collections of data
- 10. Modules — Split code across files with import & export
- 11. Debugging — Read errors and track down bugs
Ready?
Let's start making art.
Already know the basics? Check the Function Reference for all available functions, walk through the How Bloom Works interactive pipeline explorer, see why Bloom outscales p5.js at high shape counts, or explore the How It Works deep-dive — including how Bloom runs your code on a fast bytecode VM and falls back to a tree-walking interpreter when you use closures.