# ChordPro 6.04 Cheat Sheet

# General

ChordPro input is a file containing song lyrics, chords and annotations.

Chords are placed between brackets [ and ].

Annotations are placed between bracket-star [* and ].

The input data may be encoded in ASCII, ISO 8859.1, UTF-8, UTF-16 or UTF-32. Lines may be continued on the next line by putting a backslash \ at the end. Unicode escape sequences (\u followed by 4 hexadecimal digits) are replaced by the corresponding unicode character.1

Directives control processing and output. Directives are placed between braces { and } and must be on a single line.

Example:

{title: Twinkle}
[C]Twinkle, twinkle, [F]little [C]star

Texts and chords can use ChordPro Markup and metadata.

Lines that start with a hash # are ignored.

Lines that end with a backslash \ will get the next line appended, where the backslash and leading whitespace of the next line are discarded.

# Directives

Directives can be conditionally executed by appending a dash - and a selector to the directive name.

Arguments to directives may be separated by a colon : and/or whitespace. They may be quoted with "" or ''.

Directive Short Purpose Since
chord name Display diagram in-line. 5.0
base-fret base Specify base-fret (1 or higher).2 5.0
diagram display Override diagram display. May be a colour. 6.03
display display Override chord properties.2 6.02
fingers pos1 pos2 pos3 Specify finger postions.2 6.0
format format Format string for display purposes.2 6.02
frets pos1 pos2 pos3 Specify fret postions.2 5.0
keys pos1 pos2 pos3 Specify keyboard keys.2 6.0
chordcolour colour Chord colour. 5.0
chordfont font cf3 Chord font. 1.0
chordsize size cs3 Chord size. 1.0
chorus Recall chorus. May have a label.4 5.0
choruscolour colour Chorus colour. 6.03
chorusfont font Chorus font. 6.03
chorussize size Chorus size. 6.03
column_break cb New column or page. 3.6
columns cols col Number of columns. 3.6
comment c Comment. 1.0
comment_box cb Comment. 3.6
comment_italic ci Comment. 3.6
define name Define chord. 1.0
base-fret base Specify base-fret (1 or higher).2 1.0
diagram display Override diagram display. May be a colour. 6.03
display display Override chord properties.2 6.02
fingers pos1 pos2 pos3 Specify finger postions.2 6.0
format format Format string for display purposes.2 6.02
frets pos1 pos2 pos3 Specify fret postions.2 1.0
keys pos1 pos2 pos3 Specify keyboard keys.2 6.0
diagrams Control diagrams printing 6.02
end_of_section Ends a specific section. 6.0
end_of_bridge eob Ends bridge section. 6.0
end_of_chorus eoc Ends chorus section. 1.0
end_of_grid eog Ends grid section. 5.0
end_of_tab eot Ends tab section. 3.6
end_of_verse eov Ends verse section. 6.0
footersize size Footer size. 5.0
footercolour colour Footer colour. 5.0
footerfont font Footer font. 5.0
grid g Obsolete. See {diagrams}. 3.6
highlight Same as comment. 5.0
image Include image. 5.0
anchor= anchor Anchor for static image. 6.01
border Draws a 1 point border around the image. 5.0
border= width Draws a border around the image (points). 5.0
center Center image. 5.0
center= arg Center image if arg . 5.0
height= height Height (points). 5.0
id= id Asset id. 6.01
scale= scale Scale factor (number). 5.0
spread= advance Places the image at the top of the page, across the full page width 6.0
src= filename Image file name 5.0
title= text Provides a title (caption) for the image. 5.0
width= width Width (points). 5.0
x= offset Horizontal offset (points) for static image. 6.01
y= offset Vertical offset (points) for static image. 6.01
meta item Metadata. 5.0
meta album name album Album name. 5.0
meta artist name artist Artist name. 5.0
meta capo pos capo Capo. 5.0
meta composer name composer Composer name. 5.0
meta copyright text copyright Copyright. 5.0
meta duration duration Duration (mm:ss or seconds). 5.0
meta key key key Key. 5.0
meta lyricist name lyricist Lyricist name. 5.0
meta sorttitle text sorttitle Sort title. 6.0
meta tempo bpm tempo Tempo (beats per minute). 5.0
meta time n / m time Time signature. 5.0
meta year text year Release date. 5.0
new_page np Starts new page. 3.6
new_physical_page npp Starts new page. 3.6
new_song ns Starts a new song. 1.0
toc= arg Enter the title in the table of contents if arg (default) 6.04
no_grid ng Obsolete. See {diagrams:off}. 3.6
pagetype5 Set page (paper) size. 4.0
start_of_section Starts a specific section. May have a label. 6.0
start_of_bridge sob Starts bridge section. May have a label. 6.0
start_of_chorus soc Starts chorus section. May have a label.4 1.0
start_of_grid sog Starts grid section. May have a label.4 5.0
start_of_tab sot Starts tab section May have a label.4 3.6
start_of_verse sov Starts verse section. May have a label. 6.0
subtitle text st Subtitle for song. 1.0
tabcolour colour Tabs colour. 5.0
tabfont font Tabs font. 5.0
tabsize size Tabs size. 5.0
textcolour colour Text colour. 5.0
textfont font tf3 Text font. 1.0
textsize size ts3 Text size. 1.0
title text t Title for song. 1.0
titlesize size Title size. 5.0
titlecolour colour Title colour. 5.0
titlefont font Title font. 5.0
titles flush Flush titles (center, left or right). 3.6.4
tocsize size Table of contents font size. 5.0
toccolour colour Table of contents colour. 5.0
tocfont font Table of contents font. 5.0
transpose semitones Transpose by a number of semitones. 5.0
x_… Custom directive. 5.0

# Notes

There are no archived releases between 1.2 and 3.6, so unless there are pre-1.2 proofs 3.6 is taken to be the initial release for a feature.

There has never been an official 5.0 release. 5.0 was mostly an intermediate development target for 6.0.

As of version 6, the version numbering is according to semantic versioning. However, to obtain a defined sorting order of file names a two-digit minor version is combined with a single digit patch number to form a single three-digit fraction. 6.030 is version 6, minor 3, patch 0.


  1. Continuation lines and unicode escapes were introduced in 6.01. ↩︎

  2. As of version 6.0, all arguments to chord and define directives are optional. ↩︎

  3. The short forms were missing in version 5,0, and re-added in 6.0. ↩︎

  4. Section labels are a 6.0 feature. ↩︎

  5. Actually, pagetype and pagesize were never implemented in version 5.0 and higher. ↩︎