Meeting Cost Calculator/ real-time cost tracker

Enter meeting participants and salary, then start the timer to watch your meeting cost accumulate in real time.

Meeting Setup

Effective rate: ¥200.00/person/hr × 5 = ¥1,000.00/hr

00:00
¥0.00

total meeting cost so far

Quick presets — click to apply

Did this tool solve your problem?

Code Examples

JavaScript
// Meeting cost calculation
function meetingCost({ participants, hourlyRate, durationMinutes }) {
  const hours = durationMinutes / 60;
  return participants * hourlyRate * hours;
}

// Annual salary → hourly rate
const annualToHourly = (annual) => annual / 2080;

// Example: 10-person, 1h meeting at $80/hr
meetingCost({ participants: 10, hourlyRate: 80, durationMinutes: 60 })
// → 800
Python
from dataclasses import dataclass
from typing import Optional

@dataclass
class Meeting:
    participants: int
    hourly_rate: float      # per person
    annual_salary: Optional[float] = None

    @property
    def effective_hourly(self) -> float:
        if self.annual_salary:
            return self.annual_salary / 2080
        return self.hourly_rate

    def cost(self, minutes: float) -> float:
        return self.effective_hourly * self.participants * (minutes / 60)

m = Meeting(participants=10, hourly_rate=80)
print(f"1h cost: ${m.cost(60):.2f}")  # $800.00
Excel / Spreadsheet
# Cell formulas
A1: Participants       = 10
A2: Hourly Rate ($/hr) = 80
A3: Duration (min)     = 60

# Cost formula
A4: =A1 * A2 * (A3/60)      → 800

# Annual salary → hourly
A5: Annual Salary      = 100000
A6: =A5/2080           → 48.08 $/hr

# Total with annual salary
A7: =A1 * A6 * (A3/60)      → 480.77
Go
package main

import "fmt"

type Meeting struct {
    Participants int
    HourlyRate   float64
    AnnualSalary float64 // 0 = not used
}

func (m Meeting) EffectiveRate() float64 {
    if m.AnnualSalary > 0 {
        return m.AnnualSalary / 2080
    }
    return m.HourlyRate
}

func (m Meeting) Cost(minutes float64) float64 {
    return m.EffectiveRate() * float64(m.Participants) * minutes / 60
}

func main() {
    m := Meeting{Participants: 10, HourlyRate: 80}
    fmt.Printf("1h: $%.2f\n", m.Cost(60)) // $800.00
}

Frequently Asked Questions

How is the meeting cost calculated?
Cost = avg. hourly rate × number of participants × meeting duration (hours). If you enter an annual salary, it's automatically divided by 2,080 (52 weeks × 40 hours) to get the hourly rate. For example: 10 people at $80/hr for 1 hour = $800.
Why does meeting cost matter?
Meetings are hidden labor costs. A 1-hour meeting with 10 people at $80/hr costs $800 — and that's just direct salary, before benefits or overhead. Organizations that track meeting costs often find that recurring inefficient meetings consume hundreds of thousands of dollars annually. Visualizing cost encourages teams to question whether a meeting is really necessary.
How is annual salary converted to hourly rate?
The default is 2,080 working hours per year (52 weeks × 40 hours). For example, a $100,000 annual salary ÷ 2,080 ≈ $48.08/hr. Real employer costs (including benefits, taxes, equity) are typically 1.3–1.5× the nominal salary — so the true cost per hour is often higher.
How can I reduce meeting waste?
Common tactics: 1) Set a clear agenda and hard time limit; 2) Only invite people who must be there; 3) Keep decision meetings to 5 or fewer people; 4) Stand-up meetings are naturally shorter; 5) Replace routine sync calls with async docs or messages; 6) Send an action-item list within 24 hours after every meeting.
Is my salary data sent to any server?
No. This tool runs entirely in your browser. All calculations — salary, headcount, duration — happen client-side with no network requests. Your data never leaves your device.
Why does the cost color change to red?
The color is a cost-alert indicator: green (< ¥500 / $70) means low cost, yellow means moderate, and red means high cost. The thresholds are approximate and meant to give a visual nudge to the meeting organizer to wrap things up before costs spiral.