Audio pitch changer accuracy is governed by the equal-tempered formula rate = 2^(semitones/12), which produces a +12 semitone shift at exactly 2.0× playback, a 0 semitone shift at 1.0×, and a -12 semitone shift at 0.5×, with every integer step landing on a mathematically precise musical interval rather than an approximation. Because the tool uses playback-rate resampling rather than a time-stretching algorithm, pitch and duration move together in exact inverse proportion: each additional semitone shrinks duration by a factor of 2^(-1/12), so a one-octave lift produces roughly half the original length and a one-octave drop produces roughly twice the original length. Accuracy in this context therefore means three things at once: the pitch ratio must follow the equal-tempered formula for the chosen semitone shift, the duration must follow that ratio predictably, and the rendered PCM16 WAV must contain the full resampled frame count with no truncation or silent padding. Each of those properties is deterministic and verifiable from the inputs, which is what separates a precise browser pitch shifter from a vague "speed and pitch" knob.

Why Pitch Accuracy Depends on Resampling, Not Magic
A pitch changer that uses playback-rate resampling shifts pitch by changing the speed at which the decoded audio buffer is read out. MDN documents that playbackRate acts as a proportion of the original sampling rate, with values below 1 slowing the audio and values above 1 speeding it up, and that a non-unit rate forces the browser to resample the audio in real time. The MDN AudioBufferSourceNode playbackRate reference describes the behavior in implementation terms, and the W3C Web Audio specification defines the matching cents relationship in the AudioBufferSourceNode playback algorithm, where detuning contributes a factor of 2^(detune/1200). A pure resampler has no separate pitch knob and no separate tempo knob; there is only a single playback rate, and pitch, duration, and spectral energy all change together as a consequence.
This is the single most important accuracy fact: when you request +7 semitones, the rate is mathematically fixed at 2^(7/12) ≈ 1.4983, and the duration will be approximately 1 / 1.4983 ≈ 0.6674 of the original. There is no mode that holds the duration constant. If a project requires a pitch change at fixed length, the honest answer is that this category of tool cannot deliver it; a phase vocoder or other time-stretching workflow would be required.
The Equal-Tempered Math Behind Every Shift
McGill University course material independently states that an octave has twelve equal semitones, each with a ratio of 2^(1/12), and that a semitone contains 100 cents. The same twelve-tone equal temperament underlies every semitone value the tool exposes. For an integer shift of n semitones, the playback rate is exactly 2^(n/12):
| Semitone shift | Playback rate (2^(n/12)) | Approximate duration ratio | Musical interval |
|---|---|---|---|
| -12 | 0.5000 | 2.000× original | One octave down |
| -7 | 0.6674 | 1.498× original | Perfect fifth down |
| -5 | 0.7492 | 1.335× original | Perfect fourth down |
| -1 | 0.9439 | 1.059× original | One semitone down |
| 0 | 1.0000 | 1.000× original | Original |
| +1 | 1.0595 | 0.944× original | One semitone up |
| +5 | 1.3348 | 0.749× original | Perfect fourth up |
| +7 | 1.4983 | 0.667× original | Perfect fifth up |
| +12 | 2.0000 | 0.500× original | One octave up |
Because these ratios come from a fixed mathematical function, the pitch accuracy of any resampling-based pitch changer is essentially exact at the input boundary; every integer semitone lands on its equal-tempered ratio. What varies between implementations is the quality of the resampling kernel used to reconstruct the audio at the new rate, which is where the perceptual differences appear.
How to Run a Pitch Shift Locally
- Open the Audio Pitch Changer in your browser tab and choose one audio file that the browser can decode directly, keeping it at or under 50 MiB. MP3, WAV, M4A, AAC, Ogg, WebM, and FLAC are accepted by extension, though actual decoding still depends on the codecs your current browser supports.
- Set the pitch shift to any whole number between -12 and +12 semitones. Remember that +12 raises the material by exactly one octave and -12 lowers it by exactly one octave, and that 0 returns the original pitch at the original duration.
- Create the render. The browser decodes the file, computes the playback rate as 2^(semitones/12), allocates the output buffer at the decoded sample rate, and renders the full resampled audio through an OfflineAudioContext.
- Review the stated duration change shown after the render. The required output frame count is computed before allocation as the ceiling of input frames divided by the playback rate, so the duration you see follows the equal-tempered ratio, though the ceiling of input frames divided by the playback rate can add up to one extra frame.
- Download the result. The downloadable file is a freshly encoded uncompressed interleaved little-endian PCM16 RIFF/WAVE file; original compression, tags, artwork, chapters, and cue points are not preserved.
For example, requesting +7 semitones sets the rate to 2^(7/12) ≈ 1.4983 and produces roughly two-thirds of the original duration. That single substitution is the entire shift: rate first, duration second, output buffer third.
Inputs, Outputs, and Hard Limits
The accuracy story is incomplete without the limits, because several of them decide whether the tool can produce a complete file at all. One encoded input may be at most 50 MiB. Decoded audio is bounded at five minutes, eight channels, and a sample rate between 8,000 and 192,000 Hz. Decoding is capped at 30 million channel samples. The pitch-shifted output is independently limited to 30 million channel samples, and because lowering pitch increases the required output frames, an input that passes the decoded limit can still fail the output limit. In that case the message states that the requested shift is over budget and that nothing was truncated.
| Limit | Value | What it controls |
|---|---|---|
| Encoded input size | 50 MiB | Maximum file the page will read |
| Decoded length | 5 minutes | Length ceiling after Web Audio decoding |
| Decoded channels | 8 | Maximum channel count |
| Sample rate | 8,000–192,000 Hz | Accepted decoded rates |
| Input channel-sample budget | 30,000,000 | Combined channels × frames cap on the source |
| Output channel-sample budget | 30,000,000 | Combined channels × frames cap on the resampled WAV |
Empty files, unsupported types, invalid decoded dimensions, and failed decodes are rejected up front before any expensive output work begins. Every input or semitone change invalidates the previous result before another render. In-flight decode and offline-render jobs carry a job identity so an older completion cannot overwrite newer state, decode contexts are closed, offline sources are stopped or disconnected when work is invalidated, and download Object URLs are revoked when replaced or when the page unmounts.
What the Output Does and Does Not Preserve
A resampling-based pitch changer is precise at the boundary but lossy in three downstream places. First, browser resampling quality is implementation-defined, so two different browsers can produce slightly different high-frequency content for the same shift. Second, strong upward shifts reveal aliasing or codec artifacts that were less obvious in the original. Third, the export is re-encoded as 16-bit PCM, which quantizes each sample to roughly 96 dB of dynamic range; any decoded floating-point samples above the legal ±1 interval are clipped before conversion. None of the original codec, compression quality, bitrate, tags, artwork, chapters, cue points, or loop metadata survives the export.
Processing and sample data stay in the current browser tab. No source audio or rendered audio is uploaded. The page intentionally does not create a blob-backed audio preview because the site media policy disallows that path; the typical workflow is to download the WAV and play it in a trusted local player to judge the result.
When Browser Pitch Accuracy Is and Is Not Enough
For creative experiments, practice tracks, sound effects, and rough editing, browser playback-rate resampling is more than accurate enough: the pitch ratio is mathematically exact and the WAV contains the complete resampled waveform. For production mastering, transparent speech cadence preservation, or beat-locked work, the picture is different. A phase vocoder, a dedicated time-stretch tool, or a DAW with proper stretching is the appropriate choice, because tempo, beat position, and formant behavior are not preserved by a 2^(n/12) playback-rate shift. Knowing which category your task falls into is the difference between getting a usable result on the first try and redoing the work in a different tool.
To produce a quick reference file or a one-octave lift for a sketch, the Audio Pitch Changer delivers a deterministic, locally rendered PCM16 WAV from any browser-decodable input. To lock the tempo while shifting pitch, route the file through a tool that actually time-stretches rather than resamples.