The History of Js13kGames (13KB Browser Jam)

Js13kGames is the annual game jam where every entry must fit in 13 kilobytes — code, assets, and all. The contest was founded in 2012, runs every August into September, and has produced thousands of complete browser games under one of the toughest size constraints in modern game development. The history of Js13kGames is a small but distinct chapter in browser-game culture, and one of the few places where the demoscene tradition meets contemporary HTML5 development.
Key takeaways
- Js13kGames was founded by Andrzej Mazur in 2012 with a 13,312-byte (13 KB) size limit for entries.
- The contest runs annually from August 13 into September 13, with a theme announced at the start.
- All entries must be playable in a browser and submitted as a zipped HTML5 bundle.
- The contest’s archive now spans over a decade of entries, all still playable online.
- Js13kGames has helped popularize size-constrained development within HTML5 game communities.
The 2012 origin
Andrzej Mazur, a Polish web developer and HTML5 game advocate, launched Js13kGames in August 2012. The premise was inspired by JS1k — the earlier 1024-byte JavaScript contest founded by Peter van der Zee in 2010 — but with a higher size ceiling that allowed for complete games rather than pure code golf.
The 13-kilobyte limit was chosen as a deliberate compromise. JS1k’s 1024 bytes was extreme enough to favor demos over games; full HTML5 games typically run into the megabytes. Thirteen kilobytes occupies the sweet spot where serious gameplay is possible but every byte matters. The chosen number doubles as a memorable joke: 13 KB, 13th of August to 13th of September, a kind of in-house numerology that became part of the contest’s identity.
The rules
The core rules have remained essentially unchanged since 2012:
- One entry per participant per category.
- Total submission size limited to 13,312 bytes when zipped.
- Entry must be a complete game, playable in a browser, with no external server dependencies (some exceptions for specific categories).
- Theme is announced at the contest’s start and entries must incorporate it.
- Submissions are zipped HTML5 bundles — HTML, CSS, JavaScript, and any assets inside the size limit.
The size measurement is the contest’s defining constraint. Entries must compress effectively into the 13 KB ceiling, which influences how participants structure code and assets. Repetitive patterns compress well; novel structures less so.
The categories
Js13kGames has accumulated categories over time. The Desktop category is the main competition — pure browser games. Additional categories have included Mobile (touch-input games), Server (entries with allowed server-side components), WebMonetization (entries using browser-based payment APIs), Web3, and various year-specific specials.
The category structure both broadens the contest’s appeal and pushes participants toward specific technical experiments. The Server category, for instance, encourages multiplayer entries under the same 13-kilobyte client constraint.
Annual themes
Each year’s theme is announced at the contest’s start. Past themes have included “lost,” “404,” “13,” “offline,” “death,” “space,” and many others. Themes are intentionally vague to allow diverse interpretations — the contest archive shows dozens of distinct games per year, each taking the theme in different directions.
Theme reveal is a small dramatic moment. Participants who have prepared engines or general game ideas in advance have to twist those preparations to fit the theme. The result is fresher interpretations than a pre-announced theme would produce.
The technical practices
Js13kGames participants have developed shared technical knowledge over the contest’s run. A few common techniques:
Procedural generation
Instead of loading textures, sprites, or audio files, entries generate them at runtime. Perlin noise produces terrain. Synthesized oscillators produce music. Procedural everything saves enormous amounts of space.
Compact level encoding
Levels are encoded as strings, bitmaps, or single integers when possible. A 5×5 grid level can be packed into 25 bits — three bytes — leaving the rest of the budget for code.
Aggressive minification
JavaScript minifiers, custom variable-renaming passes, and manual code golfing all contribute to size reduction. Many entries use specialized tools (Roadroller, terser with custom options) tuned for the contest’s compression model.
Compression-friendly coding
The 13 KB measurement is post-compression. Entries are structured so the zip compressor can find repetition: variable names reused, code patterns templated, asset data packed in ways that compress well.
The community
Js13kGames has built a steady community over its decade-plus run. The contest’s Slack and Discord communities are active year-round, not just during the August-September event window. Many entrants return year after year, and the contest’s veterans share techniques openly through blog posts, talks, and source code.
Andrzej Mazur runs the contest with a small organizing team, and the structure has remained personal and approachable. There’s no corporate sponsor wall — Js13kGames feels run by its community, by its community.
Notable entries and winners
Past Js13kGames winners are publicly browsable at js13kgames.com. Highlights across years include 3D shooters that fit in the size limit through clever WebGL shader work, complete roguelikes with multiple character classes, and inventive multiplayer games using minimal server logic. Specific winners are best discovered by browsing the archives — the contest’s strength is its breadth, with hundreds of high-quality entries available to play.
The judges’ tier list for each year is also publicly visible, with commentary from a panel of HTML5 game developers and demoscene veterans.
Js13kGames in the broader jam landscape
Js13kGames sits in a specific niche: not as compressed as JS1k, not as size-permissive as the larger HTML5 jams (Ludum Dare, Global Game Jam). The 13 KB ceiling is what gives the contest its identity. Without it, Js13kGames would be just another browser game jam; with it, the contest is the place where developers learn how to make games that small.
The contest’s relationship with the broader demoscene is real. Demoscene veterans participate, and the techniques used in Js13kGames entries draw heavily from demoscene tradition. The contest is one of the bridges between the historical demoscene and contemporary web development. For the broader demoscene context, see our piece on demoscene browser games.
The educational value
Many participants have written publicly that Js13kGames taught them more about JavaScript and web optimization than any course. The contest’s constraints force engagement with details — bundle structure, minifier behavior, browser API costs, audio synthesis fundamentals — that production developers rarely confront directly.
Some past participants have parlayed their Js13kGames work into talks at JS conferences, into published articles, or into careers in graphics and game development. The contest is, among other things, an unusually effective informal education program.
The current state
Js13kGames continues to run annually. Each year’s contest opens on August 13 with theme reveal and closes on September 13 for submissions. Voting and judging happen through September and October, with results announced shortly after. Sponsor prizes are distributed; merchandise (a t-shirt, frequently) is given to participants.
The contest remains free to enter, with no submission fees and no commercial barriers. All entries are open-source by contest rule, so source is publicly browsable for any submission. That openness is part of the contest’s pedagogical value.
How to participate
If you want to enter Js13kGames: register on the official site when sign-ups open (typically in summer), wait for the theme announcement on August 13, and submit within the contest window. Source code from past contests is publicly available — reading past entries is the best preparation for your own.
For a less constrained browser game with much more conventional code, the Chrome Dino game embedded here uses readable JavaScript without size-coding tricks. For more on browser games that emerged from jams (including some that started in Js13kGames), see our jam-origin browser games piece.
Frequently asked questions
Who founded Js13kGames?
Andrzej Mazur founded Js13kGames in 2012 and continues to run it. He’s a Polish web developer and longtime HTML5 game advocate.
When does Js13kGames run?
Each year from August 13 to September 13. Theme reveal happens on August 13 with submission window open through September 13. Judging and results follow through the rest of September and October.
What’s the size limit for Js13kGames entries?
13,312 bytes (13 KB) for the entire zipped bundle, including HTML, CSS, JavaScript, and any assets. The measurement is post-compression, which influences how participants structure their code.
What categories does Js13kGames have?
The main category is Desktop (browser games). Additional categories have included Mobile, Server (entries with allowed server-side components), WebMonetization, and various year-specific specials. The category list varies by year.
Where can I play past Js13kGames entries?
The official archive at js13kgames.com hosts every entry from every year. Entries are organized by year and category, all playable directly in the browser. The source code for each entry is also publicly available.
The takeaway
Js13kGames is the home of size-constrained browser game development. Over a decade in, the contest is still produced by a small community that values craft over commerce. The 13 KB limit is the constraint; the games are the answer; and the archive is one of the most interesting collections of browser games anywhere on the web.








