ChordPro syntax reference

Checking account access…

Complete guide to writing charts with ChordPro notation.

Overview

ChordPro is a simple text format for writing chord charts. Instead of manually aligning chords above lyrics with spaces (which break as soon as you change the font), you put chords in square brackets right next to the syllable they belong to.

The result: charts that render cleanly on any screen, any font size, and export beautifully to PDF.

Basic syntax

Chords

Put chords in square brackets before the syllable where they change:

[C]Amazing [G]grace how [Am]sweet the [F]sound

Renders as:

     C         G        Am        F
Amazing grace how sweet the sound

You can stack multiple chords in a row if the chords change faster than the lyrics:

[Am][G][F]Word

Lyrics

Type lyrics normally after chord positions. The text flows naturally:

[C]Hello [G]world, how [Am]are [F]you?

If a line has no chords, just type it as-is:

This is a spoken word section
No chords here

Metadata directives

Metadata goes at the top of your chart and sets properties for the entire song.

Title

{t:Song Title}
{title:Song Title}

Both forms work. Use whichever you prefer.

Subtitle (artist)

{st:The Beatles}
{subtitle:The Beatles}

Good for crediting the original artist or showing the album.

Key

{key:C}

Sets the key signature. This affects how chords are analyzed and can be overridden per arrangement.

Time signature

{time:4/4}
{time:6/8}

Sets the time signature for reference and metronome sync.

Tempo

{tempo:120}

Sets the BPM. The metronome will use this as its default speed.

Section markers

Organize your chart into sections so it's easier to navigate during rehearsal.

Chorus

{soc}
[C]This is the [G]chorus
{eoc}

{soc} = start of chorus, {eoc} = end of chorus.

Bridge

{sof}
[Am]Bridge section [F]here
{eof}

{sof} = start of figure (commonly used for bridge), {eof} = end of figure.

Instrumental

{ns}
[C] [G] [Am] [F]

{ns} marks a "no singing" section — instrumental parts where there are no lyrics.

Relaxed section headers

For a cleaner chart, you can skip the {soc}/{eoc} directives and just type section headers:

INTRO
[C] [G] [F]

VERSE 1
[C]Hello [G]world

CHORUS
[F]Sing it [C]loud

BRIDGE
[Am]Something [G]different

OUTRO
[C] [G] [C]

Supported section keywords

  • INTRO
  • VERSE (with optional number: VERSE 1, VERSE 2, etc.)
  • PRE-CHORUS, PRECHORUS, PRE CHORUS
  • CHORUS
  • BRIDGE
  • REFRAIN
  • INTERLUDE
  • SOLO
  • INSTRUMENTAL
  • VAMP
  • TAG
  • OUTRO, ENDING

Adding notes to sections

You can add parenthetical notes after section headers:

VERSE 1 (acoustic only)
[C]First time [G]through

CHORUS (full band, heavy drums)
[F]Everyone [C]in

Use square brackets for notes too:

VERSE 2 [(optional chords)]

Or inline italics:

INTRO <i>(keys only)</i>

Repeat markers

Show how many times a section repeats:

INTRO (x2)
CHORUS (x4)

The repeat marker displays as (x2) but doesn't automatically duplicate the section — it's just visual.

Inline transpose

For songs that change key mid-way through (modulations), use the inline transpose directive:

CHORUS
[C]Final [G]chorus [F]here

TRANSPOSE KEY +2

CHORUS (modulation)
[D]Final [A]chorus [G]here

The TRANSPOSE KEY +2 directive shifts all chords after it up 2 semitones. Use negative numbers to go down:

TRANSPOSE KEY -3

These shifts are cumulative, so you can have multiple key changes:

VERSE 1        (original key)
[C]Verse one

TRANSPOSE KEY +2

VERSE 2        (up a whole step)
[D]Verse two

TRANSPOSE KEY +2

VERSE 3        (up another whole step)
[E]Verse three

Comments and notes

Comment directive

Add notes that will display but aren't part of the lyrics:

{c:Play softly here}
{comment:Guitar solo follows}

Hash comments

For notes that won't display at all (private reminders):

# TODO: verify bridge chords
# Check recording at 2:34

Text formatting

Italics

Use HTML-style tags for inline italics:

INTRO <i>(keys)</i>
VERSE 1 <em>(acoustic guitar)</em>

Both <i> and <em> work. The text renders in italics in both the viewer and PDF exports.

Escape hatch

If you want a line to render literally without any special parsing, prefix it with a backslash:

\INTRO

This prevents "INTRO" from being interpreted as a section header.

Column breaks (PDF only)

When exporting to PDF, you can force content into a new column:

VERSE 1
[C]Content here

COLUMN_BREAK

VERSE 2
[C]More content in new column

Use this for better layout in two-column PDF exports.

Complete example

Here's a full chart demonstrating most features:

{t:Example Song}
{st:Demo Artist}
{key:G}
{time:4/4}
{tempo:110}

INTRO
[G] [D] [Em] [C]

VERSE 1
[G]Here's the [D]first verse
[Em]Singing [C]loud and clear
[G]Every [D]word is [Em]true [C]

CHORUS
[C]This is the [G]chorus now
[D]Sing it [Em]out
[C]Don't hold [G]back [D]

# This is a private note
VERSE 2 (acoustic only)
[G]Second [D]time around
[Em]Softer [C]here

{c:Build intensity}

CHORUS (x2)
[C]This is the [G]chorus now
[D]Sing it [Em]out

TRANSPOSE KEY +2

CHORUS (key change)
[D]This is the [A]chorus now
[E]Sing it [F#m]out

BRIDGE <i>(drums kick in)</i>
[Am]Building [G]up
[F]Getting [G]louder

OUTRO
[G] [D] [G]

Tips for clean charts

  • Be consistent: Pick a style for section headers and stick with it
  • Use sections: They make navigation easier during rehearsal
  • Add tempo and time: Helps with the metronome and keeps everyone in sync
  • Comment liberally: Notes about dynamics, who plays what, etc. make rehearsals smoother
  • Test your PDF: Column breaks and formatting may need adjustment for print

Next steps

  • Songs — how charts fit into your library
  • PDF export — getting your charts onto paper