Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Juggling Lab juggling animator

Juggling Lab is an open-source application for creating and animating juggling patterns. Its main goals are to help people learn juggling patterns, and to assist with inventing new ones.

The project site has more information and download links.

There is also a web service to generate animated GIFs from a pattern description.

The code

Juggling Lab is written in Java and uses standard Swing components, and it should run on any platform supported by Java 11 or later. The pom.xml file is used by Maven to build the code, and scripts in /bin run the compiled jar.

Clone the repository and play around with it! I always appreciate bug reports (file under "Issues" above), and am always open to pull requests (bug fixes, new/updated pattern files, new features).


Juggling Lab has been in development since 1997 – the earliest days of the Java language. It started as an AWT applet running in a browser, then migrated to Swing with the release of Java 1.2. Eventually Juggling Lab morphed into the desktop application it is today.

Over that long span of time the project has seen contributions from many people, including:

  • Jack Boyce – Most Juggling Lab code, project administration
  • Roman Auvrey – Fixes to language localization code, French language translation
  • Daniel Bareket – Hebrew translations
  • Dominik Braun – Fun With Juggling Lab patterns, and many design ideas including camangle, showground, and hidejugglers settings, and the '^' repeat notation
  • Vincent Bruel – Suggestions for improved bouncing support (hyperlift/hyperforce patterns), ball-bounce audio sample
  • Brian Campbell – Bookmarklet
  • Jason Haslam – Ring prop, bitmapped-image prop, improved ball graphic, visual editor enhancements, internationalization of user interface including Spanish and Portuguese translations, and many bug fixes
  • Steve Healy (JAG) – Many invaluable design suggestions and bug reports, especially of siteswap notation component
  • Anselm Heaton – Orbit-finding code, other design suggestions
  • Lewis Jardine – Apache Ant build file, GPL clarifications
  • Roman Karavia – CheerpJ conversion to run Juggling Lab in the browser
  • Ken Matsuoka – JuggleMaster pattern library, used here with his permission
  • Rupert Millard – Implementation of '*' shortcut for sync notation
  • Herve Nicol – Bug fixes
  • Denis Paumier – Suggestions for passing and multiplexing improvements to siteswap generator
  • Andrew Peterson – Performance profiling of animation routines
  • Romain Richard and Frédéric Rayar – Android version (Google Play)
  • Frédéric Roudaut – Design ideas for siteswap notation component, French language translation
  • Daniel Simu – Bug reports, many design suggestions
  • P. R. Vaidyanathan – Hand Siteswap feature input
  • Xavier Verne – French translation of user interface
  • Johannes Waldmann – Source code documentation
  • Mahit Warhadpande – Hand Siteswap feature design and implementation
  • Alan Weathers – Alanz pattern files, bug reports, many application improvement ideas