Aliasing frequency calculator
Find where a sampled tone really shows up: a 1,000 Hz tone sampled at 800 Hz has a Nyquist limit of 400 Hz and appears at 200 Hz. Useful for unexpected peaks in converter captures, undersampling plans and sampling-theorem exercises. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Signal frequency
- 1,000
- Sampling rate
- 800
- Nyquist frequency
- 400 Hz
- Aliased frequency
- 200
- Nyquist zone
- 3
When you sample a continuous-time tone faster than twice its frequency, the discrete sequence can reconstruct that tone without ambiguity. Sample slower and the energy still appears in the digital spectrum, but at a lower principal frequency called the aliased frequency. Engineers, students, and DSP tool builders need that folded value, the Nyquist limit, and the Nyquist zone at a glance—especially when diagnosing unexpected tones in ADC captures, audio converters, RF undersampling chains, or exam problems about the sampling theorem.
What aliasing is and where the tone lands
Uniform sampling multiplies a continuous spectrum by an impulse train in the frequency domain, which is equivalent to periodically repeating every spectral line at multiples of the sampling rate fs. Inside the first Nyquist zone from zero to fs over two, those replicas stack on top of one another, so a pure tone at frequency f is observed at the same place as a tone at f plus or minus any integer multiple of fs.
When f is higher, the tone folds: a one kilohertz tone sampled at eight hundred hertz has Nyquist four hundred hertz and lands at two hundred hertz, because one thousand is two hundred above eight hundred. Odd Nyquist zones preserve the local order of frequencies; even zones reverse them, which is why undersampling receivers and intentional bandpass sampling track the zone number.
What you can do with it
ADC and data-logger tone diagnosis
Given a known analog stimulus and the configured sample rate, predict the principal digital frequency so unexpected peaks can be explained as foldback rather than a new interferer.
RF undersampling and IF planning
Map a bandpass tone into the first Nyquist zone and read whether the occupied zone inverts spectrum order before fixing LO and filter plans.
FAQ
What is the Nyquist frequency?
It is half the sampling rate. A tone at or below it is captured without ambiguity; a tone above it folds back into the range from zero to that limit and shows up at a lower frequency.
What is a Nyquist zone?
Each zone is a band half a sampling rate wide, counted from one. The first runs from zero to the Nyquist frequency, and the zone number tells you which band the original tone came from.
Why is the spectrum reversed in some zones?
In even zones the order of neighbouring frequencies flips after folding, while odd zones keep it. Undersampling receivers and intentional bandpass sampling track the zone for exactly that reason.
What happens if the tone is below the Nyquist frequency?
Nothing folds. The result equals the original frequency and the calculator marks the tone as not aliased, so you can confirm that a sampling rate is fast enough.
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/elec/aliased-frequency \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"signal_frequency":1000,"sampling_rate":800}'const res = await fetch("https://api.kit.forhosting.com/elec/aliased-frequency", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"signal_frequency": 1000,
"sampling_rate": 800
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/aliased-frequency",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"signal_frequency": 1000,
"sampling_rate": 800
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/aliased-frequency", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"signal_frequency":1000,"sampling_rate":800}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"signal_frequency":1000,"sampling_rate":800}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/aliased-frequency", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"signal_frequency": 1000,
"sampling_rate": 800
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.aliased_frequency",
"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
This aliasing frequency calculator takes the true signal frequency and the sampling rate in hertz, applies the deterministic fold f_alias equals the absolute distance from the tone to the nearest multiple of the sampling rate, and returns the baseband alias in the closed interval from zero to the Nyquist frequency. It also reports whether the tone sits above Nyquist, which half-band Nyquist zone it occupies, and whether that zone inverts local spectrum order.
What aliasing is and how the principal alias is computed
The unique representative inside zero to Nyquist is therefore the distance from f to the nearest multiple of fs: f_alias equals the absolute value of f minus fs times the nearest integer to f over fs. That quantity is always between zero and the Nyquist frequency inclusive. When f is already at or below Nyquist, the nearest multiple is zero (or the tone itself sits on a half-bin edge) and f_alias equals f, so is_aliased is false whenever the signal frequency does not exceed Nyquist. This endpoint reports that zone as a one-based integer from the half-band index of f, plus a boolean spectrum_inverted flag for even zones, so you can reason about image polarity without recomputing band edges yourself.
Input contract, response fields, and invalid cases
POST a JSON body with two required finite numbers: signal_frequency, the true continuous-time tone in hertz, which must be non-negative; and sampling_rate, the sample clock in hertz, which must be strictly positive. Either field may arrive as a JSON number or as a numeric string; common aliases such as f, f_signal, frequency, fs, and sample_rate are accepted for convenience. Missing fields, empty strings, non-finite values, a negative signal frequency, or a zero or negative sampling rate fail with invalid_input and are not billed. On success the body echoes the rounded signal_frequency and sampling_rate, returns nyquist_frequency as half the sampling rate, aliased_frequency as the principal fold into zero to Nyquist, is_aliased true only when the signal frequency strictly exceeds Nyquist, nyquist_zone as the one-based half-band index, spectrum_inverted true on even zones, a short formula string restating the fold, and unit set to Hz. Example: signal_frequency one thousand and sampling_rate eight hundred yield nyquist_frequency four hundred, aliased_frequency two hundred, is_aliased true, nyquist_zone three, and spectrum_inverted false. The calculator does not perform anti-alias filter design, does not return full FFT bins, and does not simulate quantization noise; it answers the single closed-form sampling-theorem question of where a pure tone appears after ideal uniform sampling.
Where an aliased-frequency API earns its keep
Audio and music-technology curricula walk students through folding so they understand why a ten kilohertz whistle can look like six kilohertz when someone mistakenly samples at sixteen kilohertz; a deterministic oracle removes arithmetic slips from the lesson. RF and software-defined radio notebooks that practice intentional undersampling need the zone number and inversion flag when mapping intermediate-frequency plans onto the first Nyquist zone. Failed validation does not consume balance. Embedded and instrumentation teams use an aliasing frequency calculator when a scope, data logger, or cheap ADC shows a tone that does not match the known analog stimulus: feeding the known analog frequency and the configured sample rate returns the digital frequency that should appear if the front-end anti-alias filter leaked. Content sites that rank for aliasing frequency calculator or Nyquist foldback benefit from a live free browser path that matches the prepaid automation path on the same pure module. Keep requests small, pin the rounded fields in tests, and you get reproducible aliases for lab scripts, LMS plugins, and edge workers without standing up a full DSP stack of your own.
Integration use cases
Classroom sampling-theorem checks
Let students submit f and fs and verify the baseband alias, Nyquist limit, and zone against hand folding without arithmetic mistakes.
Technical questions
How do I compute the aliased frequency of a signal?
Send signal_frequency (f, Hz) and sampling_rate (fs, Hz). The API returns f_alias = |f − fs · round(f/fs)| in [0, fs/2], plus Nyquist frequency, zone, and inversion flag.
What is the Nyquist frequency here?
nyquist_frequency is always sampling_rate / 2. Tones strictly above that limit set is_aliased true and fold into the principal baseband alias.
What if my signal is already below Nyquist?
Then aliased_frequency equals the signal frequency (after stable rounding), is_aliased is false, and nyquist_zone is 1 for tones up to the Nyquist limit.
When is spectrum_inverted true?
When the tone sits in an even Nyquist zone (zone 2, 4, …). Even zones reverse local frequency order relative to baseband; odd zones preserve it.
What does the aliasing frequency calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.