Skip to content
Miles Shang edited this page May 5, 2013 · 17 revisions

The app is hosted at:

Labelled bracket notation

Your basic constituent looks like this: [X Y]

X is the category label. Y represents the content. X can be any string of Unicode characters, not including square brackets or spaces. Typical examples might include NP, N', and N. The content Y is any string of Unicode characters, including spaces. The app looks for the first space to determine where X ends and Y begins. In addition, Y can contain any number of other constituents, which should also be given in labelled bracket notation. Here are a few examples:

[ [NP Alice]]([NP Alice]) --- X is NP, Y is Alice.

[ [NP [N Alice] and [N Bob]]]([NP [N Alice] and [N Bob]]) --- Here, there are three constituents. The whole string is one constituent, with X = NP and Y = "[N Alice] and [N Bob]". Another constituent is [N Alice], with X = N and Y = Alice. The final constituent is [N Bob], with X = N and Y = Bob.


Often, in linguistics, if you don't want to fully flesh out a tree, you indicate this with a triangle. In order to draw triangles with this app, include a caret ^ anywhere in the category label X. This indicates that a triangle should be drawn between the present node and any of its children, i.e. between the category label and the content.

Movement lines and subscripts:

This app has basic support for drawing movement lines. To show movement, mark the head of the movement with an underscore followed by a tag after the category label (e.g. [X_a Y]). Mark the tail with the same tag between angled brackets (e.g. [W tr<a>]). The head constituent can not be an ancestor of the tail. Tags can only consist of letters and numbers. Tags that consist of only numbers will appear in subscript after the category label. In other words, if NP_1 is a category label, it will appear as NP1.

Example: [CP [NP^_1 What] [C' [C_b did] [IP_2 [NP^ you] [I' [I tr<b>] [VP [V' [V eat] tr<1>]]]]]]

Although subscripts are technically only allowed in category labels, you can cheat by creating a constituent with no content, like this: [NP [PRO_1]]. This tricks the app into thinking that PRO is a category label, but in the resulting tree, it will look like content with a subscript. However, this only works if the "fake label" is only one word. Otherwise, it will be split up into label and content at the first space.


The term "terminal node" refers to an element of the tree that doesn't have any children. Any other node is a "non-terminal node."

Font options

This app uses browser default fonts, so if you're not happy with the fonts that show up, try switching to a different browser.


  • On: Terminals are green. Non-terminals are blue. Lines, triangles, and movement lines are black.
  • Off: Everything is black.

Terminal lines

  • On: Terminal nodes are treated exactly the same as non-terminals with respect to placement and line drawing.
  • Off: Terminal nodes are placed on a new line after their parents, and no lines will be drawn between them.
  • This option only affects terminal nodes that have no siblings. Otherwise, it would look silly. Also, it does not affect terminal nodes that have triangles drawn to them.


Use this button to obtain the address of the current tree. A small window will pop up with the address already selected. Just copy it and paste it where you want. Some suggestions:

  • Make a bookmark in your browser.
  • Send the link to colleagues or students via e-mail.

You can also make a link just by appending a labelled bracket string after the address of the app, like so:

[[S Testing]]([S Testing])

The question mark after "/syntree/" is essential. Note that while this address will work when you paste it into your browser's address bar, it will not work when you send it by pasting it into anything that automatically generates links, such as Facebook and most e-mail clients. The address you get from the "Link" button should work in those situations.


Click here to download this app for offline use. Extract the .zip file to a location of your choice. To run the app, go to that location and run index.html. Note that in order for the app to work properly, you must keep all the extracted files in their respective folders. For convenience, you may want to create a bookmark or a desktop shortcut referring to index.html. Also note that in Internet Explorer, you may have to click "Allow blocked content" for trees to appear.

Browser compatibility

This app should work in the following browsers:

  • Google Chrome 1.0 and higher
  • Mozilla Firefox 1.5 and higher
  • Safari 1.0 and higher
  • Internet Explorer 9.0 and higher

If you have a required browser and the app doesn't work for you, please let me know at