Learn JavaScript
Per Borgen teaches Scrimba's free flagship JavaScript course: about 9.4 hours across eight modules, roughly 200 scrims and 140+ challenges, building a passenger counter, a blackjack game, a Chrome extension, and a Firebase-backed mobile app. It is the strongest free, project-first introduction to JavaScript in the catalog, and the practical prerequisite for Learn React.
Reviewed inside the course with a Pro account, September 2026.
Is Scrimba's free beginner JavaScript course the right first course?
Take it if you have never programmed: nothing is assumed, and most challenges stop the recording so you write the code yourself (Rafid Hoda teaches one guest section). The one catch is that the three Solo Projects are Pro-only. Finish it, then move on to Learn React.
Learn JavaScript
FreeTaught by Per Borgen (opens in a new tab)
Beginner JavaScript taught through 140+ challenges, building a counter, a blackjack game, a Chrome extension, and a mobile app.
Start free on Scrimba (opens in a new tab)140 challenges, one loop, and a free price tag
It is free, so the only cost is time, and the format earns it. JavaScript is a language you learn by typing, and the course is designed around that: a two to four minute explanation, then a scrim that stops and says "go ahead and give this one a shot, and then of course return back to the screencast when you want to see my solution." That loop repeats well over a hundred times. You cannot get through the course by watching.
"Free flagship" does not mean "the only course you need." This is foundations. It teaches variables, functions, the DOM, conditionals, arrays, objects, loops, localStorage, and a first taste of a database, and it stops before async patterns, promises, classes, and the harder language internals. You finish able to build small apps from scratch, not able to reason about every corner of the language; that depth is what Advanced JavaScript is for.
The limits: it is foundations only and stops short of async and object-oriented JavaScript, and the in-browser format means you set up your own environment late. The mobile app section is a guest module whose Firebase setup steps will age faster than the rest. What offsets that is the loop itself. Six of the challenges now check your answer with AI, Per writes bugs on purpose and fixes them out loud, and the transcript panel makes it usable if you learn better by reading. Verdict: the right first course, and the three Solo Projects are the only paid part.
Eight modules, four real projects and three practice stops
Course curriculum
8 modules · 194 lessons
- Build a Passenger Counter App
Your first variable, function, and render, ending in a Netlify deploy.
- Practice Time - Part 1
Drills, the AI-feedback beta, and the basketball scoreboard solo project.
- Setting up a Local Dev Environment
Optional: GitHub Desktop, VS Code, and pushing the scoreboard.
- Build a Blackjack Game
if/else, arrays, Math.random, and objects, each earned by the game.
- Practice Time - Part 2
Objects, loops, mini-games, then the password generator solo project.
- Build a Chrome Extension
A leads tracker: event listeners, localStorage, and the tabs API.
- Practice Time - Part 3
Review drills and the unit converter solo project.
- Build a Mobile App
Rafid Hoda swaps localStorage for Firebase and installs the app on your phone.
Lesson counts are the scrims I counted in each expanded module in September 2026. Scrimba's own figures differ in both directions: the module headers show slightly fewer (they exclude intro and wrap-up scrims), while the course listing and its structured data say 238 lessons, which counts the clips inside scrims rather than the scrims you click. When other pages on this site quote 238, that is Scrimba's number.
Passenger counter, blackjack, Chrome extension, mobile app
1. Build a Passenger Counter App (82 min, 30 scrims)

The opening lesson is under a minute and explains why you are building a people counter: Per's first job at nineteen was standing outside a subway entrance in the cold, counting passengers with a pen and paper. The app fixes that problem, and everything in the module serves it. You write your first variable (let count = 0), meet console.log, add a button with an onclick, write your first function, and render the count with innerText. Strings arrive halfway through, with the classic "8" + "2" gotcha called out explicitly.
The module ends further than most beginner intros: you personalize the app, download it, and deploy it to Netlify so it has a real URL. There is also a short "Learning in public" scrim nudging you to share it. That is a deliberate habit the course keeps building.
2. Practice Time, part 1 (26 min, 10 scrims)
Seven short drills on what you just learned (variables, concatenation, incrementing, an error message, and a five minute calculator challenge), then a "why solo projects matter" talk and the first Solo Project: a basketball scoreboard.
This is also where Scrimba is testing a feature called AI challenges. The module opens with a note that the next six challenges give instant AI feedback on your solution. Per's explanation of why: "we want to help you get to the right solution without having to watch mine," and "the AI will tell you if you've completed the challenge according to the spec" even when your code looks nothing like his. In the course table of contents these show up with a small icon whose tooltip reads "Challenge with Instant Feedback."

3. Setting up a local dev environment (12 min, 4 scrims)
Four scrims, all optional in the sense that the course itself never needs them: install GitHub Desktop, open the project in VS Code, push to GitHub, deploy the solo project. It sits here so that people who want to build the basketball scoreboard on their own machine can. If you are happy in the browser, skip it and come back later.
4. Build a Blackjack Game (2.7 hrs, 55 scrims)

The biggest jump in the course. Blackjack needs conditionals, so you get if/else, else-if, booleans (hasBlackJack, isAlive), and a first pass at "state." Then the game needs cards, so arrays arrive: indexes, push and pop, a for loop that renders each card into the DOM. Then random cards need Math.random() and Math.floor(), which you build up into a dice function first. Then the "new card" button needs && and ||. Objects come last, with a player object holding a name and chips.
Roughly a third of the scrims here are labeled "Aside," which is Per's word for a concept detour before applying it in the game. The rhythm is aside, apply, challenge, and it works because the game gives every concept a reason to exist.

The recap scrim ends with a line I appreciated: "I would have never remembered the difference between comparison operators and logical operators when I learned JavaScript. What they are called doesn't really matter." It is a beginner course that knows what beginners worry about.
5. Practice Time, part 2 (25 min, 9 scrims)
Objects and functions, if/else, loops and arrays, push/pop/unshift/shift, logical operators, then three mini-projects: rock paper scissors, an "EmojiFighter" game, and sorting fruits. The Solo Project here is a password generator (PRO).
6. Build a Chrome Extension (2.7 hrs, 54 scrims)

The most "real" project in the course. The extension is a leads tracker: paste a URL or click "save tab" and it stores the link in a list that survives closing the browser. Per explains the idea came from watching a sales team at a shipping-data company spend hours collecting prospect links by hand.
What it teaches, in order: addEventListener (and refactoring away from onclick), let vs const, rendering a list with innerHTML and then with createElement/append, template strings, styling, packaging and deploying the extension to Chrome, localStorage (four scrims, including storing arrays with JSON.stringify), truthy and falsy values, a delete button, function parameters (six scrims), and finally the Chrome tabs API to grab the current tab's URL. You deploy it twice: once mid-module, once with the final version.

7. Practice Time, part 3 (26 min, 9 scrims)
let and const, logging arrays, saving to localStorage, event listeners with objects in arrays, a sentence generator, rendering images, rounding numbers, converting strings to numbers. Solo Project: a unit converter (PRO).
8. Build a Mobile App (59 min, 23 scrims)
A guest section taught by Rafid Hoda, not Per. You take the leads tracker and swap localStorage for a Firebase Realtime Database: create the project, push data, read it back with onValue, turn the returned object into an array, delete with remove. Then you add a viewport meta tag, favicons, and a web app manifest, deploy to Netlify, and add the app to your phone's home screen. Rafid is upfront that this is "not technically a native mobile app," and the section is a gentle introduction to talking to a backend plus the basics of a progressive web app. It is the newest part of the course and the one most likely to change.
The course closes with a one minute "How to utilize your certificate" scrim and the certificate of completion.
Writing bugs on purpose: Per's teaching voice and a 20 to 30 hour pace
A typical scrim is two to four minutes. Per talks over a live editor, types the code, runs it, and the preview on the right updates. When a scrim is a challenge, the brief is written as numbered comments in the file, the recording pauses, and you type into the same editor. Then you press play and he solves it. The transcript panel is in the settings menu ("Show Transcript"), and you can change playback speed and font size.
The teaching voice is warm to the point of being corny, and I mean that as a compliment for a first course. The first variable lesson opens with "today is actually a really important day in your life because you're going to write your first lines of JavaScript," and the calculator challenge ends with "if you found it a bit too hard, now that you've seen the solution, just go back and try it again." Per also does something few beginner instructors do: he writes bugs on purpose, runs them, and reads the error out loud before fixing them. You see "cannot access myAge before initialization" in lesson three. That habit alone is worth the time. His teacher card calls him the co-founder and CEO of the platform, with more than 750,000 learners through his foundational courses.
With the 9.4 hours of video and 140+ challenges, most people should budget two to three times that: 20 to 30 hours spread over three to six weeks at an hour a day. The blackjack and Chrome extension modules are each 2.7 hours of video and will each take a full week at that pace. If you do the solo projects properly (from the Figma file, with stretch goals), add another five to ten hours.
Everything free except three Solo Projects
The eight modules, all 190-odd scrims, every challenge, and the deploys are free, and finishing the course needs no card.
What is Pro is the three Solo Projects, one at the end of each Practice Time module: a basketball scoreboard, a password generator, and a unit converter. Each comes with a Figma design file, a written spec, and stretch goals (for the scoreboard: a "new game" reset, highlighting the leading team, a period counter). Per is explicit that the stretch goals use concepts he has not taught yet and are "only for those of you who find these requirements to be a bit boring." Pro also unlocks the certificate, the career paths this course belongs to, and the Pro-only channels on Scrimba's Discord (the pricing page lists "basic access to Discord community" as a free feature, so the server itself is not gated).
My read: the solo projects are the point where you find out whether you can build without the instructor, so they matter more than their 10 minutes of video suggests. If you are only ever going to take this one course, stay free and build the scoreboard on your own from the description above. If you plan to continue into the Frontend Developer Path, the projects come with it. Scrimba's pricing page (opens in a new tab) lists the plans.
Starting from zero here, or skipping ahead
It fits complete beginners who want to learn JavaScript by building rather than reading, and anyone who needs the JS foundation before starting React. It is the anchor course for the Frontend Developer Path and the Fullstack Developer Path, and a good fit for beginners and career changers who can only spare an hour a day, because the scrims are short enough to stop anywhere.
Skip it if you already write JavaScript comfortably: go straight to Advanced JavaScript or the React track. Also skip it if you specifically want modern tooling from day one; the course stays in the browser until module three and never touches npm, bundlers, or async code.
Start Learn JavaScript for free (opens in a new tab)Nothing to bring, and the two paths this course anchors
None. The first HTML tag you need is explained when it appears. The course does assume you can follow along in English or one of the nine other subtitle languages, and that you are willing to type every challenge rather than watch it.
It is the foundation for two paths: the Frontend Developer Path and the Fullstack Developer Path. It is the practical prerequisite for Learn React, which assumes the JavaScript this course teaches. The Chrome extension module is also the best preparation in the catalog for Learn Node.js, because it is where you first think about data that outlives the page.
- All JavaScript courses, for the rest of the track after this foundation
- Advanced JavaScript, for the async patterns, promises and classes this course stops before
- The Tricky Parts of JavaScript, a short top-up on the corners of the language this course skips
- Learn React, which assumes the JavaScript from the blackjack and Chrome extension modules
- Scrimba vs freeCodeCamp and Scrimba vs Codecademy, if you are weighing this free flagship against other free options
Yes. All eight modules, every challenge, and the deploys are free with no card required. The only Pro pieces are the three Solo Projects at the end of the Practice Time modules and the certificate.
Yes. It is rated Beginner, assumes no prior programming, and the first lesson literally walks you through writing let count = 0 and logging it. It is the recommended first course in the catalog.
Per Borgen, Scrimba's co-founder, teaches seven of the eight modules. The final Build a Mobile App module is taught by Rafid Hoda.
A passenger counter app deployed to Netlify, a blackjack game, a leads tracker Chrome extension you install in your own browser, and a Firebase-backed version of the tracker you add to your phone's home screen.
Yes. Every scrim has captions, a timestamped transcript panel under the settings menu, and subtitles in ten languages.
Six challenges in Practice Time part 1 that check your solution with AI and tell you whether it meets the spec, even if your code differs from the instructor's. Scrimba labels them 'Challenge with Instant Feedback' and calls the feature a beta.
9.4 hours of video, but plan for 20 to 30 hours including the challenges, or three to six weeks at an hour a day.
No. Everything runs in the browser. Module three shows how to set up VS Code and GitHub Desktop if you want to work locally, but the course never requires it.
Yes, effectively. Learn React is rated Intermediate and assumes the JavaScript that this course teaches, so do it first.