mscgen - Man Page

Message Sequence Chart Renderer


mscgen -T type [ -o file ] [ -i ] infile

mscgen -l


Mscgen is a small program that parses Message Sequence Chart descriptions and produces PNG, EPS, SVG or server side image maps (ismaps) as the output. Message Sequence Charts (MSCs) are a way of representing entities and interactions over some time period and are often used in combination with SDL.  MSCs are popular in Telecoms to specify how protocols operate although MSCs need not be complicated to create or use. Mscgen aims to provide a simple text language that is clear to create, edit and understand, which can also be transformed into images.


-T type

Specifies the output file type, which maybe one of 'png', 'eps', 'svg' or 'ismap'

-i infile

The file from which to read input.  If omitted or specified as '-', input will be read from stdin.  The '-i' option maybe omitted if <infile> is specified as the last option.

-o file

Write output to the named file.  This option must be specified if input is taken from stdin, otherwise the output filename defaults to <infile>.<type>.

-F font

Use specified font for rendering PNG output.  This is only supported if mscgen was built with USE_FREETYPE and is ignored otherwise.


Display the parsed msc as text to stdout.  This is useful only for checking the parser.


Display program licence and exit.


The language interpreted by mscgen is similar to that of Graphviz dot, using simple text instructions to add entities and then message arcs.  The following example shows the input for a simple message sequence chart.

# MSC for some fictional process

msc {

 a->b [ label = "ab()" ] ;
 b->c [ label = "bc(TRUE)"];
 c=>c [ label = "process(1)" ];
 c=>c [ label = "process(2)" ];
 c=>c [ label = "process(n)" ];
 c=>c [ label = "process(END)" ];
 a<<=c [ label = "callback()"];
 ---  [ label = "If more to run", ID="*" ];
 a->a [ label = "next()"];
 a->c [ label = "ac1()\nac2()"];
 b<-c [ label = "cb(TRUE)"];
 b->b [ label = "stalled(...)"];
 a<-b [ label = "ab() = FALSE"];


More information on the input can be found at

See Also


2011-03-05 mscgen-0.20