Slow (110 wpm)
Conversational (130 wpm)
Fast (150 wpm)
Custom…
Estimated Time:
–:–
Calculate Your Speech Rate
Measure how fast you speak based on a practice run.
Your Speech Rate:
0 WPM
What is Speech Rate and Why Does it Matter?
Speech rate is a measure of the speed at which you speak, typically calculated in Words Per Minute (WPM). Whether you are preparing for a TED talk, recording a podcast intro, or timing a voice-over script, knowing your speech rate is crucial for ensuring your content fits within time constraints while remaining intelligible to your audience.
Typical Speech Rates (WPM)
Different speaking styles and contexts require different paces. Here is a breakdown of common speech rates:
Slow (100 – 110 wpm): Used for storytelling, serious presentations, or when explaining complex concepts to ensure clarity.
Conversational (120 – 150 wpm): The sweet spot for most public speaking, audiobooks, and YouTube videos. It sounds natural and engaging.
Fast (160+ wpm): Common in radio commercials, excited commentary, or auctioneering. While energetic, sustained speech at this speed can fatigue listeners.
How to Use This Speech Rate Calculator
This tool serves two purposes:
Estimate Duration: If you have written a script and want to know how long it will take to read aloud, paste the text into the word counter, select your target speed (e.g., Conversational), and the calculator will provide the estimated minutes and seconds.
Calculate Your WPM: If you want to know your personal speaking speed, read a text of a known word count, time yourself, and input the data to find your exact Words Per Minute.
Tips for Controlling Your Pace
If you find your calculated WPM is too high (rushing) or too low (dragging), try these techniques:
To Slow Down: Focus on articulation and insert deliberate pauses at commas and periods. Breathe deeply between sections.
To Speed Up: Eliminate filler words ("um," "uh") and practice reading familiar texts to improve fluency without sacrificing clarity.
// Global variable to avoid scope issues
var srcState = {
wordCount: 0
};
// Function to count words in the textarea
function srcCountWords() {
var text = document.getElementById('srcScriptText').value;
// Trim and split by whitespace to count words
var matches = text.match(/\S+/g);
var count = matches ? matches.length : 0;
srcState.wordCount = count;
// Update display badge
document.getElementById('srcWordCountDisplay').innerText = count + " Words";
// Auto-fill inputs if they are empty or previously auto-filled
var inputA = document.getElementById('srcCalcWordsA');
var inputB = document.getElementById('srcCalcWordsB');
// Simple UX: always update inputs to match the textarea count for convenience
inputA.value = count;
inputB.value = count;
}
// Toggle custom speed input
function srcUpdateCustomSpeed() {
var select = document.getElementById('srcSpeedSelect');
var customGroup = document.getElementById('srcCustomSpeedGroup');
if (select.value === 'custom') {
customGroup.style.display = 'block';
} else {
customGroup.style.display = 'none';
}
}
// Logic for Calculator A: Duration Estimation
function srcCalculateDuration() {
var words = parseFloat(document.getElementById('srcCalcWordsA').value);
var speedSelect = document.getElementById('srcSpeedSelect').value;
var speed = 0;
if (speedSelect === 'custom') {
speed = parseFloat(document.getElementById('srcCustomSpeed').value);
} else {
speed = parseFloat(speedSelect);
}
// Validation
if (isNaN(words) || words <= 0) {
alert("Please enter a valid word count.");
return;
}
if (isNaN(speed) || speed <= 0) {
alert("Please enter a valid speed (WPM).");
return;
}
// Math: Time (min) = Words / WPM
var totalMinutes = words / speed;
var mins = Math.floor(totalMinutes);
var remainderSeconds = (totalMinutes – mins) * 60;
var secs = Math.round(remainderSeconds);
// Adjust if seconds round up to 60
if (secs === 60) {
mins++;
secs = 0;
}
// Formatting Output
var minsStr = mins < 10 ? "0" + mins : mins;
var secsStr = secs < 10 ? "0" + secs : secs;
var displayString = mins + " min " + secs + " sec";
if (mins === 0) {
displayString = secs + " seconds";
}
var resultBox = document.getElementById('srcResultA');
var resultText = document.getElementById('srcResultTime');
resultBox.style.display = 'block';
resultText.innerText = displayString;
}
// Logic for Calculator B: Rate (WPM) Calculation
function srcCalculateRate() {
var words = parseFloat(document.getElementById('srcCalcWordsB').value);
var mins = parseFloat(document.getElementById('srcTimeMin').value);
var secs = parseFloat(document.getElementById('srcTimeSec').value);
// Handle empty inputs as 0
if (isNaN(mins)) mins = 0;
if (isNaN(secs)) secs = 0;
// Validation
if (isNaN(words) || words <= 0) {
alert("Please enter a valid word count.");
return;
}
if (mins === 0 && secs === 0) {
alert("Please enter the time taken.");
return;
}
// Math: WPM = Words / Total Minutes
var totalTimeInMinutes = mins + (secs / 60);
if (totalTimeInMinutes <= 0) {
alert("Time must be greater than zero.");
return;
}
var wpm = words / totalTimeInMinutes;
wpm = Math.round(wpm); // Round to nearest whole number
var resultBox = document.getElementById('srcResultB');
var resultText = document.getElementById('srcResultWPM');
resultBox.style.display = 'block';
resultText.innerText = wpm + " WPM";
}