ChordPro Syntax
Learn the practical ChordPro syntax most musicians actually use: bracketed chords, lyric lines, comments, directives, and simple song examples.
ChordPro syntax is simple once you see the pattern: lyrics stay as plain text, chords go in square brackets, and directives go in curly braces on their own lines.
This page explains the ChordPro format itself so you can read existing files confidently. Inside Chordly, you work in a live visual editor rather than typing bracketed syntax by hand.
The basic rule
In ChordPro, a lyric line can contain chords inline:
[G]Amazing [C]grace how [G]sweet the [D]sound
Each chord is written in square brackets immediately before the lyric syllable it belongs to. When a ChordPro renderer processes the file, that chord is displayed above the following lyric text.
So this:
[Am]Hello [F]darkness, my old [C]friend
is meant to become something like this in the rendered chart:
Am F C
Hello darkness, my old friend
Lyrics are just text
Most of a ChordPro file is still normal text. If a line does not start with a directive and does not include bracketed chords, it is simply a lyric or text line.
This line has no chords at all
And this one does not either
Blank lines matter too. They are usually kept as spacing between sections.
Chords go in square brackets
The part most people notice first is the chord syntax:
[C]Let it [G]be
A few practical things to know:
- the chord goes before the lyric syllable it belongs to
- the text inside the brackets is what the renderer treats as the chord label
- the format is very forgiving in practice, but commonly used chord names work best
You will often see examples like:
[D]Take me [A]home, country [Bm]roads
ChordPro implementations differ in how deeply they validate or interpret chord names, but the day-to-day pattern is always the same: square brackets mark chord placement.
Directives go in curly braces
Directives are lines that tell a ChordPro-aware program something about the song:
{title: Hallelujah}
{artist: Leonard Cohen}
{start_of_chorus}
{end_of_chorus}
Directives are usually placed on their own lines. Some describe metadata, like the title or artist. Others describe structure, like verse or chorus sections.
This page is about the text format in general. For the directive families people use most often, see ChordPro Directives. For Chordly's current import behavior, see Importing ChordPro Files.
Comments start with #
Lines that begin with # are comments for humans maintaining the file.
# capo version for acoustic set
# play this slower than the record
They are not meant to become part of the rendered chord sheet.
A complete small example
This is a realistic small ChordPro file:
# acoustic version
{title: Wagon Wheel}
{artist: Old Crow Medicine Show}
{key: G}
{start_of_verse}
[G]Headed down south to the [D]land of the pines
And I'm [Em]thumbin' my way into [C]North Caroline
{end_of_verse}
{comment: Chorus}
[G]Rock me mama like a [D]wagon wheel
That file contains the main pieces you will run into most often:
- a comment line
- metadata directives
- a section directive
- lyric lines with bracketed chords
- a comment directive used as a visible label
Where syntax stops and directives start
If you just want the mental model, it is this:
syntaxis how the text file is writtendirectivesare the named commands inside that file
So if your question is "how do brackets work?" you are in the right place. If your question is "what does start_of_chorus do?" or "what metadata directives are common?" go to ChordPro Directives.
