QTc Hodges calculator
A QT of 400 ms at 80 beats per minute gives a Hodges QTc of 435 ms, because the correction adds 1.75 ms for every beat above 60. At exactly 60 beats per minute the QT stays unchanged. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Qt
- 400
- Heart rate
- 80
- Rr ms
- 750
- Rate offset
- 20
- Correction
- 35
- Qtc
- 435
The QT interval on an electrocardiogram stretches or shrinks with heart rate, so clinicians and students normalize it to a corrected QT (QTc) before comparing values across different rates. The Hodges formula is a simple linear correction: QTc equals the measured QT plus one point seven five times heart rate minus sixty, with QT and QTc in milliseconds and heart rate in beats per minute. At sixty beats per minute the correction is zero and QTc equals QT; faster rates raise QTc and slower rates lower it. This calculator accepts a positive measured QT and a positive heart rate, returns the cleaned inputs, the derived RR interval, the rate offset from sixty, the additive correction term, and the Hodges QTc, and rejects missing or non-numeric fields so invalid panels never produce a fake interval.
What the Hodges QTc formula computes and why rate correction matters
The QT interval measures the time from the start of ventricular depolarization to the end of repolarization on the surface ECG. Because the interval shortens when the heart beats faster and lengthens when it slows, raw QT values from different rates are not directly comparable. Rate-corrected QT, or QTc, rescales the measured QT toward a common reference so textbooks, drug-safety tables, and classroom thresholds can speak a shared language.
The Hodges formula uses a linear adjustment around a reference rate of sixty beats per minute: QTc equals QT plus one point seven five times the quantity heart rate minus sixty. Both QT and QTc are reported in milliseconds; heart rate is in beats per minute. When heart rate is exactly sixty, the correction term vanishes and QTc equals the measured QT.
When heart rate is eighty, the correction is one point seven five times twenty, or thirty-five milliseconds, so a four-hundred-millisecond QT becomes a four-hundred-thirty-five-millisecond QTc. When heart rate is forty, the offset is negative twenty and QTc falls thirty-five milliseconds below the measured QT. This capability implements that closed form exactly: it does not apply Bazett, Fridericia, Framingham, or Rautaharju corrections, does not measure the ECG waveform, and does not diagnose prolonged QT.
Always frame outputs as educational estimates from the published Hodges linear formula, not as a clinical diagnosis or a substitute for professional ECG interpretation, local reference ranges, or multi-lead measurement protocols.
Where a Hodges QTc calculator earns its keep
Secondary-school and college physiology and nursing courses constantly assign QT correction drills from textbook ECG snippets, so a single trusted oracle that returns the rate offset, the additive term, and the Hodges QTc speeds grading and demo setup. Clinical training programs introduce several correction formulas side by side; instructors need deterministic answer keys that match hand arithmetic on milliseconds and beats per minute without mixing Bazett square-root paths on the same landing.
Product teams building educational ECG or simulation widgets want a documented Hodges path that clients can audit by hand rather than a black-box score that switches formulas without disclosure. Research assistants preparing synthetic rhythm datasets need stable QTc labels from known QT and rate pairs without network calls or model drift. If you later need Bazett or Fridericia QTc, mean arterial pressure, body surface area, or RR-interval conversion as a dedicated product surface, treat those as separate search intents and landings rather than overloading this QTc Hodges calculator page.
Always present results as educational estimates from the classical linear Hodges correction; clinical decisions require qualified professionals, multi-lead measurement standards, and assays or devices this tool does not collect.
What you can do with it
Classroom ECG answer keys
Generate rate offset, correction term, and Hodges QTc from textbook QT and heart-rate pairs so instructors and auto-graders share one transparent ground truth.
Nursing and physiology demos
Show the classical linear Hodges adjustment in training labs without mixing Bazett square-root or Fridericia cube-root models on the same landing.
FAQ
What is the Hodges QTc formula?
QTc = QT + 1.75 × (HR − 60), with QT and QTc in milliseconds and heart rate (HR) in beats per minute. At 60 bpm the correction is zero.
What happens if QT or heart rate is missing or zero?
Missing, non-numeric, zero, and negative values are rejected rather than inventing silent defaults.
How does Hodges differ from Bazett?
Hodges is linear in heart rate around 60 bpm. Bazett divides QT by the square root of the RR interval in seconds. This calculator implements Hodges only.
What does the QTc Hodges calculator cost?
The browser tool is free and runs locally.
What if I only have the RR interval and not the heart rate?
Convert it first: heart rate equals 60,000 divided by the RR interval in milliseconds. An RR of 750 ms, for example, is 80 beats per minute, which you then enter with the QT.
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/health/qtc-hodges \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"qt":400,"heart_rate":80}'const res = await fetch("https://api.kit.forhosting.com/health/qtc-hodges", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"qt": 400,
"heart_rate": 80
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/qtc-hodges",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"qt": 400,
"heart_rate": 80
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/qtc-hodges", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"qt":400,"heart_rate":80}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"qt":400,"heart_rate":80}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/qtc-hodges", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"qt": 400,
"heart_rate": 80
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.qtc_hodges",
"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
What the Hodges QTc formula computes and why rate correction matters
The computation is pure floating-point arithmetic with no network calls, no random seeds, no wall-clock timestamps, and no machine-learning drift, so identical QT and heart-rate pairs always yield identical JSON.
Input contract, response shape, and error behaviour
Send two required fields. Classic smoke checks include QT four hundred with heart rate eighty, which yields QTc four hundred thirty-five and a correction of thirty-five, and QT four hundred with heart rate sixty, which leaves QTc equal to the measured QT. If your upstream form collects RR interval instead of rate, convert RR in milliseconds to heart rate as sixty thousand divided by RR first, then pass the positive QT and heart rate here so the Hodges path stays comparable to textbook tables. The field qt is the measured QT interval in milliseconds and must be a finite number strictly greater than zero; aliases qt_ms and qt_interval are accepted. The field heart_rate is the heart rate in beats per minute and must be finite and strictly positive; aliases hr, bpm, and rate are accepted. Missing fields, empty strings, non-numeric values, NaN, Infinity, and zero or negative QT or heart rate fail with invalid_input and are not charged. On success the response returns the cleaned qt and heart_rate values, rr_ms as sixty thousand divided by heart rate (the RR interval in milliseconds), rate_offset as heart rate minus sixty, correction as one point seven five times that offset, qtc as the Hodges corrected QT in milliseconds, unit_qt and unit_qtc set to ms, unit_heart_rate set to bpm, coeff equal to one point seven five, ref_hr equal to sixty, the formula string QTc equals QT plus one point seven five times open parenthesis HR minus sixty close parenthesis, and method hodges. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where a Hodges QTc calculator earns its keep
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Deterministic rhythm fixtures
Bulk-produce stable Hodges QTc labels for synthetic ECG panels and regression tests with hard invalid_input on missing or non-positive inputs.
Technical questions
What inputs do I need?
Send qt (measured QT interval in ms) and heart_rate (bpm) as finite positive numbers. Aliases qt_ms/qt_interval and hr/bpm/rate are accepted.