What is the Nashville Number System?

The Nashville Number System (NNS) writes chords as scale degrees instead of letter names. The number 1 means the chord built on the key’s 1st note (tonic), 4 is the subdominant, 5 is the dominant, etc. Because numbers are relative, the same chart works in any key—just change the key center and keep the numbers.

How to read NNS

  • 1–7: Diatonic scale degrees in the key (major by default for 1, 4, 5; minor for 2, 3, 6; 7 is diminished in major).
  • Accidentals: #4 (sharp four), b7 (flat seven) for altered chords or borrowed tones.
  • Quality (optional, when clarity is needed): 2m, 5sus, 1maj7, 6m7, .
  • Slash bass: 1/3 = tonic chord over the 3rd in the bass.
  • Rhythm (often notated with symbols): diamonds (holds), pushes (arrows or carets), bars for measures.

Why NNS in Apostolic Pentecostal music?

  • Fast key changes: Worship leaders may jump keys for energy or vocal comfort—numbers make on‑the‑fly modulations easy.
  • Vamps and builds: Common I–IV–V vamps, 4→5 lifts, and turnarounds repeat seamlessly with numbers.
  • Shouts/Altars: Repetitive progressions (e.g., shout patterns) can loop indefinitely and modulate by whole/half steps.
  • Medleys: Chain songs without rewriting chords—keep the same numeric flow in new keys.

Typical progressions you’ll hear

  • Modern worship ballad: 1 – 5 – 6m – 4
  • Classic chorus: 1 – 4 – 1 – 5
  • Turnaround/cadence: 4 – 5 – 1 or 2m – 5 – 1
  • Drive/Vamp: 1 – 4 – 5 – 4 (loop) or 4 → 5 build
  • Shout pattern (one option): 1 – #1°7 – 2m – 5 (repeat)
  • Bass walk (6 to 1): 6m – 5 – 4 – 5 – 1

Examples in keys:


// Key of G:  1–5–6m–4   =>  G - D - Em - C
// Key of Db: 4–5–1      =>  Gb - Ab - Db
// Key of A:  2m–5–1     =>  Bm - E - A
// Key of Bb: 1–#1°7–2m–5 => Bb - B°7 - Cm - F
  

Quick translator (numbers → chords)

Use this small script to turn a number chart into letter chords in any major key.

<script>
// Major scale spelling with diatonic chord qualities
const MAJOR = {
  C:  ["C","D","E","F","G","A","B"],
  G:  ["G","A","B","C","D","E","F#"],
  D:  ["D","E","F#","G","A","B","C#"],
  A:  ["A","B","C#","D","E","F#","G#"],
  E:  ["E","F#","G#","A","B","C#","D#"],
  B:  ["B","C#","D#","E","F#","G#","A#"],
  "F#":["F#","G#","A#","B","C#","D#","E#"],
  "C#":["C#","D#","E#","F#","G#","A#","B#"],
  F:  ["F","G","A","Bb","C","D","E"],
  Bb: ["Bb","C","D","Eb","F","G","A"],
  Eb: ["Eb","F","G","Ab","Bb","C","D"],
  Ab: ["Ab","Bb","C","Db","Eb","F","G"],
  Db: ["Db","Eb","F","Gb","Ab","Bb","C"],
  Gb: ["Gb","Ab","Bb","Cb","Db","Eb","F"]
};
const QUAL = ["maj","min","min","maj","maj","min","dim"]; // I ii iii IV V vi vii°

function nnsToChords(key, numbers) {
  const scale = MAJOR[key];
  if (!scale) throw new Error("Unsupported key: " + key);
  return numbers.map(n => {
    // parse items like "6m7", "#4", "1/3", "5sus4", "7°"
    const m = String(n).trim().match(/^([#b]?)(\d)([^/]*)(?:\/([#b]?\d))?$/);
    if (!m) return n; // return as-is if not matched
    const [, acc, degStr, ext, bassAccDeg] = m;
    let deg = parseInt(degStr, 10);
    // base diatonic note
    let note = scale[(deg - 1) % 7];

    // apply accidental to root if present (# or b on the number)
    const sharp = s => s.replace(/([A-G])b?$/, (m)=> m + "#");
    const flat  = s => s.replace(/([A-G])#?$/, (m)=> m + "b");
    if (acc === "#") note = note.includes("b") ? note.replace("b","") : note + "#";
    if (acc === "b") note = note.includes("#") ? note.replace("#","") : note + "b";

    // default quality if none specified and ext doesn't override:
    let qual = ext || "";
    if (!ext) {
      const q = QUAL[deg - 1];
      qual = q === "maj" ? "" : q === "min" ? "m" : "°";
    }

    // handle slash bass like 1/3
    let bass = "";
    if (bassAccDeg) {
      const acc2 = bassAccDeg[0] === "#" || bassAccDeg[0] === "b" ? bassAccDeg[0] : "";
      const d2 = parseInt(acc2 ? bassAccDeg.slice(1) : bassAccDeg, 10);
      let bassNote = scale[(d2 - 1) % 7];
      if (acc2 === "#") bassNote = bassNote.includes("b") ? bassNote.replace("b","") : bassNote + "#";
      if (acc2 === "b") bassNote = bassNote.includes("#") ? bassNote.replace("#","") : bassNote + "b";
      bass = " / " + bassNote;
    }
    return note + qual + bass;
  });
}

// Demo:
console.log(nnsToChords("Ab", ["1", "5", "6m", "4"]));     // ["Ab","Eb","Fm","Db"]
console.log(nnsToChords("Bb", ["1","#1°7","2m","5"]));     // ["Bb","B°7","Cm","F"]
console.log(nnsToChords("G",  ["1/3","4","5sus","1"]));    // ["G / B","C","Dsus","G"]
</script>
  

Practical tips for your band

  • Agree on symbols: Decide as a team how you’ll write minors (m), diminished (°), sus, extensions (7, 9), and pushes.
  • Use numbers on the fly: When the leader says “go to 4, build to 5,” everyone moves together regardless of key.
  • Guitarists: Capo freely—numbers keep the harmony aligned while voicings stay comfortable.
  • Modulations: Step up by a whole/half step—keep the same numeric loop for shouts, vamps, and altar calls.

What is the Nashville Number System?

The Nashville Number System (NNS) writes chords as scale degrees instead of letter names. The number 1 means the chord built on the key’s 1st note (tonic), 4 is the subdominant, 5 is the dominant, etc. Because numbers are relative, the same chart works in any key—just change the key center and keep the numbers.

How to read NNS

  • 1–7: Diatonic scale degrees in the key (major by default for 1, 4, 5; minor for 2, 3, 6; 7 is diminished in major).
  • Accidentals: #4 (sharp four), b7 (flat seven) for altered chords or borrowed tones.
  • Quality (optional, when clarity is needed): 2m, 5sus, 1maj7, 6m7, .
  • Slash bass: 1/3 = tonic chord over the 3rd in the bass.
  • Rhythm (often notated with symbols): diamonds (holds), pushes (arrows or carets), bars for measures.

Why NNS in Apostolic Pentecostal music?

  • Fast key changes: Worship leaders may jump keys for energy or vocal comfort—numbers make on‑the‑fly modulations easy.
  • Vamps and builds: Common I–IV–V vamps, 4→5 lifts, and turnarounds repeat seamlessly with numbers.
  • Shouts/Altars: Repetitive progressions (e.g., shout patterns) can loop indefinitely and modulate by whole/half steps.
  • Medleys: Chain songs without rewriting chords—keep the same numeric flow in new keys.

Typical progressions you’ll hear

  • Modern worship ballad: 1 – 5 – 6m – 4
  • Classic chorus: 1 – 4 – 1 – 5
  • Turnaround/cadence: 4 – 5 – 1 or 2m – 5 – 1
  • Drive/Vamp: 1 – 4 – 5 – 4 (loop) or 4 → 5 build
  • Shout pattern (one option): 1 – #1°7 – 2m – 5 (repeat)
  • Bass walk (6 to 1): 6m – 5 – 4 – 5 – 1

Examples in keys:


// Key of G:  1–5–6m–4   =>  G - D - Em - C
// Key of Db: 4–5–1      =>  Gb - Ab - Db
// Key of A:  2m–5–1     =>  Bm - E - A
// Key of Bb: 1–#1°7–2m–5 => Bb - B°7 - Cm - F
  

Quick translator (numbers → chords)

Use this small script to turn a number chart into letter chords in any major key.

<script>
// Major scale spelling with diatonic chord qualities
const MAJOR = {
  C:  ["C","D","E","F","G","A","B"],
  G:  ["G","A","B","C","D","E","F#"],
  D:  ["D","E","F#","G","A","B","C#"],
  A:  ["A","B","C#","D","E","F#","G#"],
  E:  ["E","F#","G#","A","B","C#","D#"],
  B:  ["B","C#","D#","E","F#","G#","A#"],
  "F#":["F#","G#","A#","B","C#","D#","E#"],
  "C#":["C#","D#","E#","F#","G#","A#","B#"],
  F:  ["F","G","A","Bb","C","D","E"],
  Bb: ["Bb","C","D","Eb","F","G","A"],
  Eb: ["Eb","F","G","Ab","Bb","C","D"],
  Ab: ["Ab","Bb","C","Db","Eb","F","G"],
  Db: ["Db","Eb","F","Gb","Ab","Bb","C"],
  Gb: ["Gb","Ab","Bb","Cb","Db","Eb","F"]
};
const QUAL = ["maj","min","min","maj","maj","min","dim"]; // I ii iii IV V vi vii°

function nnsToChords(key, numbers) {
  const scale = MAJOR[key];
  if (!scale) throw new Error("Unsupported key: " + key);
  return numbers.map(n => {
    // parse items like "6m7", "#4", "1/3", "5sus4", "7°"
    const m = String(n).trim().match(/^([#b]?)(\d)([^/]*)(?:\/([#b]?\d))?$/);
    if (!m) return n; // return as-is if not matched
    const [, acc, degStr, ext, bassAccDeg] = m;
    let deg = parseInt(degStr, 10);
    // base diatonic note
    let note = scale[(deg - 1) % 7];

    // apply accidental to root if present (# or b on the number)
    const sharp = s => s.replace(/([A-G])b?$/, (m)=> m + "#");
    const flat  = s => s.replace(/([A-G])#?$/, (m)=> m + "b");
    if (acc === "#") note = note.includes("b") ? note.replace("b","") : note + "#";
    if (acc === "b") note = note.includes("#") ? note.replace("#","") : note + "b";

    // default quality if none specified and ext doesn't override:
    let qual = ext || "";
    if (!ext) {
      const q = QUAL[deg - 1];
      qual = q === "maj" ? "" : q === "min" ? "m" : "°";
    }

    // handle slash bass like 1/3
    let bass = "";
    if (bassAccDeg) {
      const acc2 = bassAccDeg[0] === "#" || bassAccDeg[0] === "b" ? bassAccDeg[0] : "";
      const d2 = parseInt(acc2 ? bassAccDeg.slice(1) : bassAccDeg, 10);
      let bassNote = scale[(d2 - 1) % 7];
      if (acc2 === "#") bassNote = bassNote.includes("b") ? bassNote.replace("b","") : bassNote + "#";
      if (acc2 === "b") bassNote = bassNote.includes("#") ? bassNote.replace("#","") : bassNote + "b";
      bass = " / " + bassNote;
    }
    return note + qual + bass;
  });
}

// Demo:
console.log(nnsToChords("Ab", ["1", "5", "6m", "4"]));     // ["Ab","Eb","Fm","Db"]
console.log(nnsToChords("Bb", ["1","#1°7","2m","5"]));     // ["Bb","B°7","Cm","F"]
console.log(nnsToChords("G",  ["1/3","4","5sus","1"]));    // ["G / B","C","Dsus","G"]
</script>
  

Practical tips for your band

  • Agree on symbols: Decide as a team how you’ll write minors (m), diminished (°), sus, extensions (7, 9), and pushes.
  • Use numbers on the fly: When the leader says “go to 4, build to 5,” everyone moves together regardless of key.
  • Guitarists: Capo freely—numbers keep the harmony aligned while voicings stay comfortable.
  • Modulations: Step up by a whole/half step—keep the same numeric loop for shouts, vamps, and altar calls.