Music transposition calculator
Move C up 2 semitones and you get D. Type a note or chord such as F#m7 or C/E, choose how many half steps to shift, and get the new chord with its quality and bass kept. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Semitones
- 2
- Input
- C
- Root
- C
- Quality
- Direction
- up
Transposing music means moving every pitch by the same number of half steps so a song sits higher or lower while intervals and chord qualities stay the same. Singers ask for keys that match their range, guitarists capo up or down, and arrangers move lead sheets between concert and transposed instruments without rewriting theory by hand. This capability takes a note or chord symbol such as C, F sharp minor seven, or B flat major, plus an integer semitone offset, and returns the transposed symbol with quality suffixes and optional slash bass preserved. Non-integer semitone counts fail with a clear invalid input error so fractional half steps never produce ambiguous spellings. The path is pure modular arithmetic on twelve pitch classes with no network and no random seed.
How note and chord transposition works in twelve tones
Western equal temperament divides the octave into twelve semitones, so raising a pitch by twelve half steps returns the same letter name one octave higher and lowering by twelve does the reverse. This calculator maps the root of your symbol to a pitch class from zero for C through eleven for B, including common enharmonic spellings such as D flat for C sharp and B flat for A sharp.
It then adds your integer semitone offset modulo twelve to obtain the new root and rebuilds the full symbol by reattaching any quality text you sent, such as minor, seven, major seven, suspended four, or diminished. Optional slash bass notes, written after a solidus as in C slash E, are shifted by the same amount so inverted chords stay inverted relative to the new key. Positive offsets move up, negative offsets move down, and zero returns the normalized input for identity checks.
Accidentals may be written with ASCII hash or b, or with Unicode sharp and flat signs; double accidentals resolve enharmonically to a simple name.
Reading the result and choosing sharps or flats
Direction is up, down, or unison so user interfaces can label the shift without recomputing the sign. Octaves in the shift and residual semitones split large moves into full octaves plus a remainder within one octave, which is useful when explaining that plus fourteen is one octave plus a major second. Root pitch class and transposed root pitch class are integers zero through eleven for pipelines that already speak MIDI-style pitch classes.
Transposed root and optional transposed bass are the new letter names; transposed is the full chord or note string ready to paste into a chart. Method is always pitch class mod twelve so clients can branch without sniffing shapes. Spelling prefers flats when the original root used flats and sharps when it used sharps; natural roots prefer sharps when moving up and flats when moving down so common key signatures stay readable.
Use transposed alone for display; use the pitch-class fields when feeding sequencers or theory drills that need numbers instead of names.
What you can do with it
Live sets and vocal range
Shift every chart symbol up or down by a fixed semitone count so a singer can perform in a comfortable key without rewriting each chord by hand.
Web chart and capo tools
Guitar and ukulele apps apply capo-style offsets to chord libraries, preserving qualities and slash bass so diagrams stay consistent with the sounding pitch.
FAQ
What happens if semitones is not an integer?
Only whole numbers of half steps are allowed; fractional values such as 1.5 are rejected and not charged.
Are chord qualities and slash bass preserved?
Yes. Text after the root (m, 7, maj7, sus4, and similar) is kept, and bass notes after a slash are transposed by the same semitone offset.
Is the music transposition calculator free?
The browser tool runs free on your device.
Does this use key-signature respelling for whole songs?
No. It transposes individual note or chord symbols by pitch class modulo twelve with practical sharp or flat preferences. Full-score key analysis is a different product intent.
How far can I transpose a note or chord?
Up to 48 semitones up or down, which is four octaves. Large moves are split into whole octaves plus a remainder, so plus 14 reads as one octave plus a major second.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/hobby/transpose \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"note":"C","semitones":2}'const res = await fetch("https://api.kit.forhosting.com/hobby/transpose", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"note": "C",
"semitones": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/transpose",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"note": "C",
"semitones": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/transpose", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"note":"C","semitones":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"note":"C","semitones":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/transpose", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"note": "C",
"semitones": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.transpose",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
How note and chord transposition works in twelve tones
Unrecognized roots, missing fields, and non-integer semitone values all raise invalid_input and are not charged. Identical inputs always produce identical JSON because the path uses no wall clock and no external services.
Reading the response fields and choosing accidentals
On success the response echoes the original input string, a lightly normalized note field, the parsed root, quality, and bass, and the integer semitones you requested. Extremely large shifts are clamped to the published integer range so Worker isolates stay bounded while still covering multi-octave reharmonizations.
API usage, pricing, studio workflows, and practical limits
Call the free in-browser music transposition calculator when you are checking a lead sheet, moving a set list for a guest singer, or verifying homework on interval arithmetic without installing a notation program. The algorithm does not re-spell entire diatonic keys with key-signature rules beyond root accidentals, does not transpose MIDI note numbers, and does not rewrite Roman-numeral analysis; those are different product intents. Authors shipping SDKs can map the transposed field into UI labels and the pitch-class integers into internal tables without reimplementing modular note math in every language. Send a JSON body with required string note or chord and required integer semitones; aliases such as chord, steps, interval, and shift are accepted when documented on the parameter contract. Use the prepaid API when a web chart tool, ear-training app, live-set helper, or curriculum generator needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with a note frequency calculator when you need hertz after the new name is known, or keep it alone when only the symbol matters for print and screen.
Integration use cases
Teaching intervals and homework checks
Students submit a root or chord plus an integer half-step offset; graders compare the transposed name and reject non-integer semitone answers with invalid_input.
Technical questions
How do I transpose a note or chord with this calculator?
Send JSON with note set to a symbol such as C, Am, or F#m7 and semitones set to an integer (for example 2 to raise by a whole step). The response includes the full transposed string.