Uma rede de Petri consiste em posições, transições e arcos direcionados. Arcos interligam posições e transições, não podendo conectar posições e posições ou transições e transições. As posições de entrada de uma transição são aquelas as quais um arco se destina. As posições de saída são aquelas das quais um arco se origina.
Posições podem conter qualquer número de tokens. Transições podem ser disparadas, isto é, executadas: quando uma transição é disparada, ela consome um token de cada uma das suas posições de entrada, e produz um token em cada uma das suas posições de saída. Uma transição é habilitada quando ela pode ser disparada, isto é, quando existem tokens em cada posição de entrada.
A execução de uma rede de Petri é não-determinística. Isso significa que múltiplas transições podem ser habilitadas ao mesmo tempo (cada uma pode ser disparada) e que nenhuma transição deve ser obrigatoriamente executada em determinado momento.