APO – A Free Online Petri Net Editor

A Transition System in APO

Last year I did the course on petri nets at my home university in Oldenburg. With the help of petri nets algorithms, processes and complex systems (e.g. in industrial production or even chemistry) can be analysed and evaluated. The topic was quite interesting to me and the more types of nets and algorithms we got to know, the more I wondered why there is no good editor for these nets.

In fact the research group for parallel systems in Oldenburg is developing a really powerful software called APT (Analysis of Petri Nets and Transitions Systems) which is able to analyse huge nets at massive scale and supports hundreds of powerful algorithms. The software is openly developed on GitHub under an MIT licence. APT is designed as a command line interface which makes sense when operating with these kind of nets with thousands of nodes. But for learning purposes, sometimes a nice user interface that lets you see your nets and makes it easy to interact with them has some true benefits. Therefore, I was surprised that no such tool existed.

Synthesis of Petri Nets with APO

This got me to the idea to combine my interests in petri nets and the development of web apps for my bachelor thesis and to create an easy to use yet powerful online petri net editor that helps you to create and analyse petri nets and transition systems. Because it runs in your browser no installation is needed so you can quickly simulate different nets and run several algorithms on it. It even allows you to generate the coverability graph from petri nets and supports the synthesis of petri nets with specified properties from given transition systems. For further research on these nets import and export to APT allows you to use the whole range of algorithms provided by APT.

Try APO (APT Online) here


I named my project APO (for APT Online) and used GitHub for developing and hosting as well. Usage instructions are available inside the app and instructions for further development (e.g. the implementation of new algorithms or other net types) can be found on GitHub. The App is written in CoffeeScript and uses AngularJS and Google’s Material Design. No active internet connection is needed for the creation and manipulation of nets (they also use the browser for continuous storage), but the algorithms used for minimisation, detection of properties (like liveness, homogenousness, boundedness, safeness, conflict freedom etc.), analysis and synthesis depend on APT which is written in Java. Therefore, I created an AngularJS Service called APT Online (as another project on GitHub) that comes with a REST interface to run these algorithms on the server.

As you may see when trying APO, I put a lot of effort in this app, but I also learned very much by developing it. Not only did I learn a new programming language with CoffeeScript, but also the design, testing and human computer interaction part were quite challenging. Therefore, I would love to hear from you, if you use APO for learning, demonstration purposes or even further development.



  1. Robert Monfera

    Nice petri net builder! Is there a way to set arc capacity or make an inhibitory arc? I didn’t run across a description of the tool’s specific functionality so I tried to discover things by trial and error

    1. Adrian

      Hi Robert,
      thanks for your feedback! At the moment arc capacity and inhibitory arcs are not supported by the tool although I think they could be implemented with a reasonable amount of effort. You can find a short explanation of the tools in the „About“ menu in the top right corner. There’s also a quick start guide in the repository’s Readme on Github which might help you to get started.

  2. Charles Lomotey

    Can the tool be used for SPN models (probabilistic)? I would like to use the tool in my doctoral dissertation. What are your requirements for citation? I will assign all credits for the use your tool.

    1. Adrian

      Hi Charles Lomotey,
      thank you very much for your interest in my work! APO doesn’t support SPN models yet, though I guess it could be implemented with a reasonable amount of effort. My bachelor thesis is not published, bit I will send you a digital copy of it to your email address. You can always refer to APOs public repository on GitHub which is linked in the text. All the best for your dissertation!