Chord Chart Transposer
Paste a chord chart with lyrics and shift every chord by semitones, with a real chord-symbol parser and enharmonic-aware sharp/flat spelling.
Result
A capo shifts pitch but a chord chart is text, and most "transposers" out there treat it as nothing more than that: they find every letter that looks like a chord root and swap it, with no idea what a chord symbol actually is. That approach breaks the moment a chart gets interesting — a slash chord like D/F# needs both notes moved, a half-diminished F#m7b5 needs its root moved while the m7b5 stays exactly as written, and a naive find-and-replace has no concept of either.
This tool works from an actual chord grammar instead: it recognizes a chord token as a root letter (A through G) with an optional sharp or flat, an optional quality and extension (m, maj7, m7b5, dim, aug, sus2, sus4, add9, 6, 7, 9, 11, 13, and combinations of these), and an optional slash-bass note, and only ever matches whole whitespace-delimited words so it does not mistake letters buried inside lyrics for chords. Each match is decomposed into a root pitch class and an optional bass pitch class, both are shifted by the same number of semitones, and the quality suffix is carried over untouched — a Bbmaj7 stays a maj7 chord after transposition, it just gets a new root.
The other detail naive transposers get wrong is spelling: shifting a chord up should not always produce a sharp. Real charts follow the circle of fifths — a song moved into the key of F reads more naturally with Bb than with A#, while a song moved into D reads more naturally with F# than with Gb. This tool re-spells every transposed pitch class using that same sharps-or-flats convention, so a whole chart transposed by a given number of semitones comes out looking like something a working musician would actually write on a chart, not a wall of accidentals in one direction.
Paste in a chart with chords sitting above or inline with the lyrics, set how many semitones to shift (from -11 to +11), and run it — the output textarea holds the transposed chart with every space, tab and line break exactly where it was, so alignment between the chord line and the lyric line underneath it is never disturbed. Nothing is uploaded anywhere: parsing and transposition both happen locally in your browser.