Thirty chapters move from syntax to browser projects
The course lays out exactly 30 days, beginning with variables and data types before covering arrays, loops, functions, objects, sets, regular expressions, errors, classes, JSON, promises, and closures. Days 21 through 23 introduce the DOM and events. The final week switches to small browser projects such as a solar-system calculator, country-data charts, a portfolio, a leaderboard, and animation. Beginners can see where the route leads without joining a platform or unlocking lessons.
Each chapter mixes conversational explanation with short code blocks and exercises. Day 18, for example, moves through callbacks, the Promise constructor, Fetch, async functions, and await before assigning work with country and cat APIs. This breadth is useful for a first pass. It is less convincing as a sole reference because a daily chapter often compresses several concepts that deserve separate debugging sessions. The repository description wisely admits the 30-day challenge may take more than 100 days.
Ten Day 1 exercises make practice the main attraction
Day 1 ends with 10 exercises after walking through the console, script tags, primitive values, comments, and variables. Later lessons commonly divide practice into levels, and Days 24 through 29 turn DOM work into visual projects. The prompts make learners produce something instead of only reading syntax. Starter HTML, JavaScript, images, and data files lower the blank-page cost while leaving the implementation to the student.
The final day is unfinished. Day 30 advertises 3 exercise levels, yet only Level 1 contains tasks: reproduce a country animation and validate a form with regular expressions. Levels 2 and 3 have headings without assignments. There is no integrated grader in the course flow, so learners must judge output themselves or ask another person for review. That is fine for an exercise book and weak for anyone buying into a formal curriculum experience.
What happened when we ran it
Our lab did not run the repository. The checkout was classified as JavaScript learning content without a supported project target, and no Dockerfile was present. We therefore have no measured dependency count, install duration, build outcome, or test result. Calling the examples readable is an editorial judgment based on the material; it is not a claim that every snippet passed in our Debian sandbox.
That result matches the repository's shape. It contains Markdown chapters, starter pages, scripts, media, and data rather than one application with a top-level runtime. A learner is meant to open individual pages, use the browser console, and edit files. This flexibility makes the first day easy to start, while it gives teachers no standard command for checking all 30 days against one browser or JavaScript version.
Node 14 advice and top-level await need outside checks
The introduction is dated January 2020 and shows Node v12.14.0 from the author's machine. It then says v14.17.6 is the recommended download, advice that belongs to a much older Node era. The early chapters mostly use browser JavaScript, so the dated runtime does not spoil every lesson. New students should still install a currently supported Node release and use its documentation rather than treating the screenshot as a version pin.
Day 18 contains a sharper correctness problem. Its example assigns const value = await square(2) at top level and prints 4. Issue 995 explains that this throws unless the code is in a module or the await sits inside an async function. A beginner following the course's ordinary script-tag setup can hit that error with no nearby explanation. The lesson remains useful after wrapping the call or switching to module context.
Open issues identify errors in specific lessons
GitHub listed 369 combined issues and pull requests when fetched. Issue 1020, updated September 8, 2026, says Day 14's lesson file has the wrong name and asks for try-catch exercises. The measured commit confirms that the Day 14 directory contains a Markdown file named after Day 13. Issue 983 questions the Day 3 truthy-value wording, while older issue 364 corrects a displayed result for String.match. These are concrete editing gaps, not proof that the entire course is wrong.
Ten languages widen access without equal guarantees
The main page links English plus 9 translations: Spanish, Italian, Russian, Turkish, Azerbaijani, Korean, Vietnamese, Polish, and Portuguese. That is unusually welcoming for a free beginner course. Translation coverage can differ by day, and issue 978 reports trouble exposing an Arabic work in progress. A learner should check the target language's later chapters before committing to the full schedule rather than assuming every translation mirrors all 30 English lessons.
No release history exists, and GitHub detects no repository license. The first point means there is no stable course version to pin or changelog to consult. The second matters more for teachers who want to copy, modify, or publish the chapters. Public source and 46,785 stars do not by themselves grant reuse rights. Reading from GitHub is straightforward; redistribution deserves direct permission or a clear license addition from the owner.
It works best beside MDN and a human reviewer
30 Days of JavaScript is generous, approachable material with enough exercises to fill far more than 30 evenings. Its best use is guided self-study: read one chapter, run every example, complete the prompt, then verify behavior in MDN and ask for code review. The course gives beginners momentum and visible projects without forcing a framework before they understand DOM events. It should not carry the whole burden of teaching current runtime behavior or professional testing.
The Modern JavaScript Tutorial is stronger when explanations and current language details matter most. The Odin Project adds a broader web path and project sequence, while freeCodeCamp supplies immediate tests in the browser. Start here if the daily rhythm and downloadable files keep you practicing. Move to one of those alternatives when an empty Level 2, a disputed example, or the absence of automated feedback begins costing more time than the simple format saves.
