.hm-calc-container {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 800px;
margin: 20px auto;
padding: 25px;
border: 1px solid #e0e0e0;
border-radius: 12px;
background-color: #ffffff;
box-shadow: 0 4px 15px rgba(0,0,0,0.05);
color: #333;
}
.hm-calc-header {
text-align: center;
margin-bottom: 30px;
}
.hm-calc-header h2 {
color: #d32f2f;
margin-bottom: 10px;
}
.hm-calc-tabs {
display: flex;
gap: 10px;
margin-bottom: 20px;
border-bottom: 2px solid #f0f0f0;
padding-bottom: 10px;
}
.hm-tab-btn {
padding: 10px 20px;
cursor: pointer;
background: #f8f9fa;
border: 1px solid #ddd;
border-radius: 5px;
font-weight: 600;
transition: 0.3s;
}
.hm-tab-btn.active {
background: #d32f2f;
color: white;
border-color: #d32f2f;
}
.hm-input-group {
margin-bottom: 20px;
}
.hm-input-group label {
display: block;
font-weight: 600;
margin-bottom: 8px;
color: #444;
}
.hm-flex-inputs {
display: flex;
gap: 10px;
align-items: center;
}
.hm-input-field {
width: 100%;
padding: 12px;
border: 1px solid #ccc;
border-radius: 6px;
font-size: 16px;
}
.hm-calc-btn {
width: 100%;
padding: 15px;
background-color: #d32f2f;
color: white;
border: none;
border-radius: 6px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: background 0.3s;
}
.hm-calc-btn:hover {
background-color: #b71c1c;
}
.hm-result-box {
margin-top: 25px;
padding: 20px;
background-color: #fce4ec;
border-radius: 8px;
text-align: center;
display: none;
}
.hm-result-box h3 {
margin: 0;
color: #880e4f;
}
.hm-result-val {
font-size: 28px;
font-weight: 800;
color: #d32f2f;
display: block;
margin-top: 10px;
}
.hm-article {
margin-top: 40px;
line-height: 1.6;
}
.hm-article h3 {
color: #d32f2f;
border-left: 5px solid #d32f2f;
padding-left: 15px;
}
.hm-table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
.hm-table th, .hm-table td {
border: 1px solid #ddd;
padding: 12px;
text-align: center;
}
.hm-table th {
background-color: #f8f9fa;
}
Predict Finish Time
Calculate Goal Pace
Estimated Finish Time
How to Use the Half Marathon Calculator
A half marathon is exactly 13.1094 miles (21.0975 kilometers). Whether you are a beginner aiming to finish or an elite runner chasing a Personal Best (PB), understanding your pacing is critical to avoiding the "wall" at mile 10.
To use this tool, select whether you want to calculate your total race time based on a specific pace, or find the exact pace you need to hit a time goal (like the popular sub-2 hour mark).
Common Half Marathon Pace Goals
| Goal Time |
Pace per Mile |
Pace per KM |
| 1:30:00 |
6:52 /mi |
4:16 /km |
| 1:45:00 |
8:01 /mi |
4:59 /km |
| 2:00:00 |
9:09 /mi |
5:41 /km |
| 2:15:00 |
10:18 /mi |
6:24 /km |
| 2:30:00 |
11:27 /mi |
7:07 /km |
Pacing Strategy for 13.1 Miles
Running a successful half marathon requires more than just fitness; it requires a strategy. Most experts recommend negative splits, which means running the second half of the race slightly faster than the first. This ensures you don't burn all your glycogen in the first 5 miles.
- Miles 1-3: Start 5-10 seconds slower than your target pace to settle nerves.
- Miles 4-10: Lock into your goal pace and maintain rhythm.
- Miles 11-13.1: Give it everything you have left.
function switchTab(type) {
var sectionTime = document.getElementById('section-time');
var sectionPace = document.getElementById('section-pace');
var tab1 = document.getElementById('tab1');
var tab2 = document.getElementById('tab2');
var resultBox = document.getElementById('resultBox');
resultBox.style.display = 'none';
if (type === 'time') {
sectionTime.style.display = 'block';
sectionPace.style.display = 'none';
tab1.classList.add('active');
tab2.classList.remove('active');
} else {
sectionTime.style.display = 'none';
sectionPace.style.display = 'block';
tab2.classList.add('active');
tab1.classList.remove('active');
}
}
function calculateTime() {
var min = parseFloat(document.getElementById('paceMin').value) || 0;
var sec = parseFloat(document.getElementById('paceSec').value) || 0;
var unit = document.getElementById('paceUnit').value;
if (min === 0 && sec === 0) {
alert("Please enter a valid pace.");
return;
}
var totalPaceInSeconds = (min * 60) + sec;
var distance = (unit === 'mile') ? 13.1094 : 21.0975;
var totalSeconds = totalPaceInSeconds * distance;
var h = Math.floor(totalSeconds / 3600);
var m = Math.floor((totalSeconds % 3600) / 60);
var s = Math.round(totalSeconds % 60);
// Formatting
var displayH = h > 0 ? h + "h " : "";
var displayM = m + "m ";
var displayS = s + "s";
document.getElementById('resultTitle').innerText = "Estimated Finish Time";
document.getElementById('resultDisplay').innerText = displayH + displayM + displayS;
document.getElementById('resultBox').style.display = 'block';
}
function calculatePace() {
var hr = parseFloat(document.getElementById('goalHr').value) || 0;
var min = parseFloat(document.getElementById('goalMin').value) || 0;
var sec = parseFloat(document.getElementById('goalSec').value) || 0;
if (hr === 0 && min === 0 && sec === 0) {
alert("Please enter a goal time.");
return;
}
var totalSeconds = (hr * 3600) + (min * 60) + sec;
// Calculate for Mile
var secondsPerMile = totalSeconds / 13.1094;
var m_mi = Math.floor(secondsPerMile / 60);
var s_mi = Math.round(secondsPerMile % 60);
// Calculate for KM
var secondsPerKm = totalSeconds / 21.0975;
var m_km = Math.floor(secondsPerKm / 60);
var s_km = Math.round(secondsPerKm % 60);
var paceMiStr = m_mi + ":" + (s_mi < 10 ? "0" + s_mi : s_mi) + " /mi";
var paceKmStr = m_km + ":" + (s_km < 10 ? "0" + s_km : s_km) + " /km";
document.getElementById('resultTitle').innerText = "Required Goal Pace";
document.getElementById('resultDisplay').innerHTML = paceMiStr + "
or " + paceKmStr + "";
document.getElementById('resultBox').style.display = 'block';
}