JavaScript 30 — Build 30 things with vanilla JS in 30 days with 30 tutorials

#JavaScript30

30 Day Vanilla JS Coding Challenge

Build 30 things in 30 days with 30 tutorials

No Frameworks×No Compilers×No Libraries×No Boilerplate

There is no formation without repetition.

So, you've done a few courses and read a few books but still don't feel great about your relationship with JavaScript.

How do you get better?

Build things. Lots of things. Build 1,000 things. Keep it up and don't stop. Seriously.

This has always been my advice. Just put in the work and you will get better.

But Wes, what should I build? I have no ideas! Please don't make me do another todo app.

Ideas, Eh? I've got lots! This is JavaScript30 — let's build 30 things together.

Who is this For?

Beginner to Intermediate developers and designers who want to become comfortable with both JavaScript fundamentals and working in the DOM without a library.

You should already know some JavaScript to start - This isn't a JavaScript 101 course. If you are new to JavaScript, or want to just get comfortable with the fundamentals, I'd recommend you take my BeginnerJavaScript.com course - use the code JAVASCRIPT30 for an extra $10 off.

We learn by application - encountering many new situations while talking about the hows, the whys and the whats that we use to solve them.

We steer clear of opinionated design patterns, frameworks, libraries and any type of abstraction. These things are great and often needed, but can obstruct learning and constrain initial understanding.

These tutorials rely heavily upon browser APIs, most of which involve interaction with the page. If you are stuck in console.log() land, these videos are your next step. Oh, the stuff we build is really fun!

Wes, How is this Free?

These videos are free as a thank-you to everyone who has supported my premium courses as well as because I believe in giving back to the community. I see a huge need for these videos and I really think it will help many of you become comfortable creating with JavaScript.

While I've spent over 300 hours on JavaScript30, enough people find they really click with my teaching style and continue their learning with one of my premium courses. It all works out!

Hey, I'm Wes Bos

Wes Bos

Meet Wes Bos

Wes Bos is a Full Stack Developer, Speaker and Teacher from Canada. He is a course creator, works as an independent web developer and is the co-host of Syntax - a popular web development podcast. Wes has taught over 500 students in 200+ classes and spoken at dozens of conferences around the world. Wes wrote his own bio in the third person for some reason.

Wes is the author of React For Beginners, Advanced React and GraphQL, ES6 for Everyone and Learn Node which together have sold over 55,000 copies. He is also the author of JavaScript30.com, CSSGrid.io, Flexbox.io and Command Line Power User, a set of free video series. 300,000 people have taken at least one of Wes' free video courses.

30 Days×30 Videos

Accessible and ESL friendly! Closed Captions are provided for every video. Captions done by Speechpad.

  • JavaScript Drum Kit

    JavaScript Drum Kit

    Day 1
    • DOM & Interface
    • Friends with CSS
    • Audio + Video
  • CSS + JS Clock

    CSS + JS Clock

    Day 2
    • Fundamentals
    • Friends with CSS
  • Playing with CSS Variables and JS

    Playing with CSS Variables and JS

    Day 3
    • Friends with CSS
    • Fun + Experimental
  • Array Cardio Day 1

    Array Cardio Day 1

    Day 4
    • Fundamentals
  • Flex Panels Image Gallery

    Flex Panels Image Gallery

    Day 5
    • Friends with CSS
    • DOM & Interface
  • Ajax Type Ahead

    Ajax Type Ahead

    Day 6
    • DOM & Interface
  • Array Cardio Day 2

    Array Cardio Day 2

    Day 7
    • Fundamentals
  • Fun with HTML5 Canvas

    Fun with HTML5 Canvas

    Day 8
    • Fun + Experimental
  • 14 Must Know Dev Tools Tricks

    14 Must Know Dev Tools Tricks

    Day 9
    • Fundamentals
  • Hold Shift to Check Multiple Checkboxes

    Hold Shift to Check Multiple Checkboxes

    Day 10
    • DOM & Interface
  • Custom HTML5 Video Player

    Custom HTML5 Video Player

    Day 11
    • Audio + Video
  • Key Sequence Detection (KONAMI CODE)

    Key Sequence Detection (KONAMI CODE)

    Day 12
    • Fundamentals
  • Slide In on Scroll

    Slide In on Scroll

    Day 13
    • DOM & Interface
  • Object and Arrays - Reference VS Copy

    Object and Arrays - Reference VS Copy

    Day 14
    • Fundamentals
  • LocalStorage and Event Delegation

    LocalStorage and Event Delegation

    Day 15
    • Fundamentals
    • DOM & Interface
  • CSS Text Shadow Mouse Move Effect

    CSS Text Shadow Mouse Move Effect

    Day 16
    • DOM & Interface
    • Friends with CSS
  • Sorting Band Names without articles

    Sorting Band Names without articles

    Day 17
    • Fundamentals
  • Tally String Times with Reduce

    Tally String Times with Reduce

    Day 18
    • Fundamentals
  • Unreal Webcam Fun

    Unreal Webcam Fun

    Day 19
    • Hardware Access
    • Fun + Experimental
    • Audio + Video
  • Native Speech Recognition

    Native Speech Recognition

    Day 20
    • Audio + Video
    • Fun + Experimental
  • Geolocation based Speedometer and Compass

    Geolocation based Speedometer and Compass

    Day 21
    • Hardware Access
  • Follow Along Links

    Follow Along Links

    Day 22
    • DOM & Interface
    • Friends with CSS
  • Speech Synthesis

    Speech Synthesis

    Day 23
    • Fun + Experimental
    • Audio + Video
  • Sticky Nav

    Sticky Nav

    Day 24
    • DOM & Interface
    • Fundamentals
    • Friends with CSS
  • Event Capture, Propagation, Bubbling and Once

    Event Capture, Propagation, Bubbling and Once

    Day 25
    • DOM & Interface
  • Stripe Follow Along Dropdown

    Stripe Follow Along Dropdown

    Day 26
    • DOM & Interface
    • Fun + Experimental
  • Click and Drag to Scroll

    Click and Drag to Scroll

    Day 27
    • DOM & Interface
    • Fundamentals
  • Video Speed Controller UI

    Video Speed Controller UI

    Day 28
    • Audio + Video
    • Fun + Experimental
  • Countdown Clock

    Countdown Clock

    Day 29
    • Fundamentals
    • Friends with CSS
  • Whack A Mole Game

    Whack A Mole Game

    Day 30
    • DOM & Interface
    • Friends with CSS
    • Fun + Experimental

FAQ

What font / color scheme / editor / terminal is that?

I answer everything over at wesbos.com/uses. Feel free to tweet me any more questions!

I have a question, can I email you?

While I'd absolutely love to help everyone out, there are 746,812 people taking this course. I hope to get a forum setup sometime soon. If you are a member of one of my premium classes, you can jump into the #JavaScript30 room in our Slack channel.

I found another way! Could it be?!

Yes! There are probably 100 different ways to solve each of these exercises, if your answer doesn't line up with mine, it means you did a really good job at trying to figure it out yourself. My answers are by no means the best answers - just a single way of doing it. Instead of emailing me - write a blog post about how you did it. Share what you know!

I lost, deleted or never got my welcome email! What do I do?

Log into your account, or create an account with the same email you used to get the series.

Can I host a meetup / study group? Can I stream these in my classroom? Can I arrange a playing?

Yep yep yep - as long as you do not redistribute the videos you are welcome and encouraged to do this.

Can I re-distribute these and then charge money for them?

I can't believe I have to make this a FAQ. No, you silly goose.

I found a typo or errata

If it's a typo on the site, please shoot me an email here. If it's a correction in the code, you can submit those via GitHub! Please see the above FAQ if you found a better way.

What is that GNARLY AF tune at the start? ⛓🎸🤘

So good! The Divided - For Tonight We're Strangers. Used with permission of course.

You say JavaScript funny

um, I think you mean I say it the correct way! eh?