Lee Foot

Share of Voice Calculator

Calculate competitive share of voice from Ahrefs traffic data with Excel chart export.

Launch the app → View the source

#about

Calculates Share of Voice as (Domain Traffic / Total Traffic) × 100 with 2 decimal precision.

Automatic domain column detection with UTF-8/Latin-1 encoding fallback.

Filters unwanted domains via regex pattern matching.

Exports multi-sheet Excel workbook via xlsxwriter with embedded column chart.

Streamlit app

Platform
Browser-based (no installation required)
Input
Ahrefs Traffic by Domain CSV from Keywords ExplorerBad domains CSV for exclusion (optional)
Output
Excel with share of voice rankings
Category
Reporting

Use cases

  • Competitive market analysis by traffic share
  • Tracking visibility changes over time
  • Identifying market leaders in a keyword set
  • Client reporting on organic market share

#features

  • SOV formula: (Domain Traffic / Total Traffic) × 100
  • Auto domain column detection with encoding fallback
  • Regex-based bad domain filtering
  • Top N domains slider (5-50)
  • Excel export with embedded column chart (xlsxwriter)
  • Summary metrics: domain count, total traffic, leader SOV

#how-to-use

  1. Export Traffic by Domain from Ahrefs Keywords Explorer
  2. Upload CSV (auto-detects UTF-8 or Latin-1 encoding)
  3. Select domain column if auto-detection fails
  4. Upload optional bad domains list to exclude
  5. Set Top N domains (5-50) and download Excel

#faq

How are the domain and traffic columns detected?
The tool scans your headers for a column containing 'url' or 'domain' and a column containing 'traffic' but not 'share' (so it skips Ahrefs' own Traffic share column). If either is not found, a dropdown appears so you can pick manually. The intended source is the Ahrefs Keywords Explorer export from Traffic share > By domains.
Why do all the percentages change when I move the Top N slider?
Share of Voice is calculated after trimming to the top N domains, so the denominator is the traffic of only those N rows. Percentages always total 100 percent of the displayed set, not of the whole market or the whole file. Widening the slider dilutes every domain's SOV; keep N fixed when comparing runs over time.
Does the tool sort domains by traffic itself?
No. It keeps the first N rows in file order, relying on the Ahrefs export already being sorted by traffic descending. If you re-sort or edit the CSV before uploading, the 'top' domains will simply be whatever happens to be at the top of the file.
How does the bad domains exclusion list match?
Entries from the first column of your exclusion CSV are combined into a single case-insensitive substring pattern, so 'ebay.com' also removes 'ebay.com.au' and a short entry like 'cars.com' removes 'usedcars.com' too. Dots are treated as regex wildcards as well. Make each entry as long and specific as possible and check the reported filtered-out count.

/contact

Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.