This product has been released and is in active development.

The QuickChords Markdown Language provides a succinct way to notate musical form and harmonic structure.

The main concepts in the language are:

  • Lines beginning with : are directives and include the entire line
  • Text and symbols are always inside ()
  • Each document is identified by title, artist, and flavor.
  • Barlines are represented by ';'
  • Comments start with '#'

In this example, we have chord chart with 8 bars.

:title Happy Birthday
:artist Anonymous
:flavor chords

;3/4 C ;G ;G ;C
;C ;F ;G ;C

Chords are notated by a root [quality] [alterations] [/ bass note]. A no chord symbol is notated by the letter n.

Chord qualities can use abbreviations.

Major M Maj maj
Minor m min Min or -
Augmented aug +
Diminished dim o
Suspended sus sus4 sus2
No Chord n

Roots and bass notes can use either lowercase or uppercase letters.


To make the root invisible and only show the bass note, use a period instead of the root.

A ./G ./F# ./F

To hide chords and only view rhythms, use the ?chords-off and ?chords-on directive.

Chords in a measure are equally divided by the number of beats in the measure.  To specify otherwise, use commas as placeholders to repeat the previous chord.

; C F
; C , , F
; C F , ,

Put bar text in the measure between parenthesis.

;;C (Chorus) ;F;G;C;;;

Bar text can be positioned and categorized.

Form Text (text goes here)
General Text (= text goes here)
Top Left (=tl text goes here)
Top Center (=tc text goes here)
Top Right (=tr text goes here)
Bottom Left (=bl text goes here)
Bottom Center (=bc text goes here)
Bottom Right (=br text goes here)

Repeat Text (=r D.C. al Coda)
Coda (=c) or (=cc)
Segno (=s) or (=ss)

Lyrics are displayed below the chord chart. Begin a lyric block with the :lyrics command and finish the block with a period (.) as the last line.

If lyrics are too wide for the page, the font size is adjusted to make only that line fit.

Columns can be created by placing a backslash () on a line. Page breaks can be created by placing two backslashs () on a line.

Text blocks are displayed between staff lines.

:lyrics Begins a lyrics block
:text Begins a text block Forces a line break of the last measure.
:lyric-line Begins a lyric line block Multiple lyric line blocks are allowed. Lyric lines appear in small text below the preceding measure. Lyric lines can be toggled on and off.
:lyrics-font-size number | 'fit' | 'default' Sets the font size used for lyrics. Use a number to indicate pixel size, 'default' for the default size, or 'fit' to fit the lyrics on a single page.
:lyrics-overflow 'wrap' | 'fit' | 'hide' Sets the behavior when a lyric line is too wide for the page. 'wrap' will split the line into 2 or more. 'fit' will change the font size for the line. 'hide' will cut off the text.
. Ends a lyric or text block Must be the only character on the line.
\ Column Break. Creates a new column Must be the only character on the line.
\\ Page Break. Creates a new page Must be the only characters on the line.
This is in the left column
This is in the middle column
This is in the right column

Charts use the following field directives to describe themselves. The title and artist fields are required and are used to store the file; They will overwrite a previous version if saved.

These fields are used for grouping and sorting during book generation.

:title The name of the song
:artist The composer of the song
:order The order of the song in the album. Optional. This becomes part of the internal file name.
:album The album the song appears on. Optional.
:flavor The flavor the song. Optional.
:title My Song
:artist Me
:album My Album
:order 1

For details on rhythm notatation, see QuickChords Rhythms

To hide chords and only view rhythms, use the ?chords-off directive.

A line that starts with '#' is a comment. It will not appear in the chart.

Barlines are notated using the following characters.

; Single Barline
;; Double Barline
;;; Final Barline
[ Start Repeat
] End Repeat
- Invisible Bar (the barline and bar contents are not displayed but the bar still takes up space)
; C ; F ; G ; C ;;;

The last barline is optional (final is the default). This is the same as the previous example:

; C ; F ; G ; C

A repeated measure is specified by x[repeats]. If no repeats are specified, 1 is assumed. A repeat can be specified by itself, or after a chord to be repeated.

c x16
c ; x15 (this is the same as the above)
c ; x ; g ; x

A repeated section is specified with a measure containing the instruction x-{SectionName}. It clones the contents of the section it refers to. As a shortcut, if the section the bar is in has the same name as the section to be repeated, simply use xxx

(Verse) ; C ; F 
(Chorus) ; Emin 
(Verse 2) ; x-Verse
(Verse) ; C ; F 
(Chorus) ; Emin 
(Verse) ; xxx

Form is notated using Form Text. QuickChords can use form information for displaying, navigating and formatting.

See Form Text

Endings are notated using the @ symbol in a bar

@[text] ending start-bar

@ ending finish-bar (implied if another ending begins)

@[text]@ single bar ending

C ; C ; @1 F ; G ] @2 G ; @ C

The formatting directive (starts with ?) can be used in any bar. A directive must finish with a space or EOF.

default: off
Bar numbers can be turned on and off with the ?numbers and ?nonumbers directives.

default: off
Slashes can be turned on and off with the ?slash and ?noslash directives.

default: on
Bar repeats can be turned on and off with the ?bar-repeats-on and ?bar-repeats-off directives.

One backslash () will create a system break before the measure. Any remaining space in the measure will be filled using a placeholder.

Two back slashes (\) will create a page break before any measure or text block.


Any bar containing form text will be placed on a newline using a system break and given a double barline if it had a single barline.

:space {pixels}

Vertical space can be added or removed between the current and next line by using the :space command, followed by the number of units to use. This directive must be on a line by itself.

You can hide parts of your chart using the following directives:


Font Name :font-name fontname
Font Size :font-size fontsize
Lyric Font Size :lyrics-font-size fontsize | auto

Bar Height :bar-height height

The following items can be imported:

  • Music XML
  • A-Z Lyrics
  • Ultimate Guitar Charts

See the Export help section for details.

See the Goodies help section for details.