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 a large archive 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) zipped size limit for entries.
- The contest runs annually from August 13 to 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, most 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 stayed recognizably the same since 2012:
- Total submission size limited to 13,312 bytes when zipped.
- Entry must be a complete game, playable in a browser, with no external libraries or services loaded from outside the zip (some exceptions for specific categories).
- Theme is announced at the contest’s start and entries are expected to interpret it.
- Submissions are zipped HTML5 bundles — HTML, CSS, JavaScript, and any assets inside the size limit.
- Source code must be published openly.
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 “Number 13” (the first year), “Bad Luck,” “Lost,” “Offline,” “Back,” “404,” “Space,” “Death,” and “13th Century.” Themes are intentionally open to allow diverse interpretations — the contest archive shows many 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. Noise functions produce 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 on/off grid level can be packed into 25 bits — about four 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 chat communities stay active outside 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 group of helpers, and the structure has remained personal and approachable. Sponsors provide prizes, but the contest still feels run by and for its community.
Notable entries and winners
Past Js13kGames entries are publicly browsable at js13kgames.com. Jack Rugile won the first two years, with SpacePi (2012) and Radius Raid (2013). Highlights across later years include 3D games that fit in the size limit through clever WebGL shader work, complete roguelikes, and inventive multiplayer games using minimal server logic. Specific favorites are best discovered by browsing the archives — the contest’s strength is its breadth, with hundreds of entries available to play.
Results combine community voting with scores and feedback from a panel of experts drawn from the web and game development world.
Js13kGames in the broader jam landscape
Js13kGames sits in a specific niche: not as compressed as JS1k, and far tighter than general-purpose jams like Ludum Dare or Global Game Jam, which have no size limit. 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 a great deal about JavaScript and web optimization. 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 the theme reveal and closes on September 13 for submissions. Voting and judging follow, with results announced in the weeks after. Sponsor prizes are distributed to winners in each category.
The contest remains free to enter, with no submission fees and no commercial barriers. Entries must be open source, so the code 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: watch the official site for the theme announcement on August 13, build within the size limit, and submit before the September 13 deadline. 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, 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. The theme is revealed on August 13 and the submission window stays open through September 13. Voting, judging, and results follow.
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 site at js13kgames.com hosts entries from past years, organized by year and category, and most are 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 driven by a 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. Read more about it on Wikipedia’s Js13kGames article.








